0523 [openstack]

망지·2022년 5월 23일
0
post-custom-banner

📌1. vmware - openstack(yoga) 설치

* yoga는 centos 7에서 설치 불가. 8에서 설치해야 함.

linux CentOS 8 64-bit
single file 128GB

✔️customize hardware

<5 core>
RAM : 12GB(12288MB)
CPU : 4C

OS : CentOS8 - Stream.iso

NETWORK : Bridge

SEC : ? ->보안사항들. ; root password 등


core 제외한 사용하지 않는 hardware들 remove

-> finish

📌 1.1 openstack VM 최소사양

CPU : 4C(윈도우 시스템(호스트) 8C)
RAM : 8GB(시스템 16GB)

📌 1.2 openstack VM 권장사양

CPU : 24C
RAM : 24GB

📌 2. VMware - CentOS8 설정

1.openstack 실행 - centOS8 install - eng - continue
2.time & date - asia seoul - done
3.root password - 비밀번호 설정 - done
4. installation destination - storage configuration (custom) - done
click here to create them automatically - /home 삭제(-) -
SWAP (12GB) - 나머지 /에 할당 - done - accept changes

5. network & host - on -done
[openstack IP : 192.168.0.127/20]
6. installation source - closest mirror 확인

7. software selection - minimal install - done
=> begin inatallation

==> reboot 후 mobaxterm 으로 IP(192.168.0.127)통해서 openstack 접속.

📌 3. Openstack 싱글 노드 설치

  • centOS 8 OPENSTACK 서버 진입 후 설치 진행.

네트워크 설정

# vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none // IP수동 부여
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.0.127
NETMASK=255.255.240.0
GATEWAY=192.168.0.1
DNS1=192.168.0.66
DNS2=8.8.4.4
  • vi편집기 진입 후 ggdG로 모두 지운 후 그대로 복사 붙여넣기 후 저장.

selinux 비활성화.

# vi /etc/selinux/config
SELINUX=disabled

powertools 이용 설정 및 openstack 관련 설정

# dnf install network-scripts -y
# systemctl disable firewalld // 다른 보안도구 활용 위해
# systemctl disable NetworkManager // network 이용하기 위해서 겹치는 서비스 때문에 비활성화.
# systemctl enable network
# systemctl start network
# reboot
# dnf update -y //centOS 업데이트
# dnf config-manager --enable powertools
# dnf install -y centos-release-openstack-yoga
# dnf update -y // openstack 설치 환경(openstack-yoga)에 대한 업데이트
# dnf install -y openstack-packstack //pakcstack 설치
# packstack --gen-answer-file /root/answers.txt
# vi /root/answers.txt
CONFIG_DEFAULT_PASSWORD=Test1234! //webUIpassword
CONFIG_KEYSTONE_ADMIN_PW=Test1234! //CLIpassword
CONFIG_CINDER_VOLUMES_SIZE=90G
CONFIG_NTP_SERVERS=0.kr.pool.ntp.org
CONFIG_AODH_INSTALL=n
CONFIG_HEAT_INSTALL=y
CONFIG_CEILOMETER_INSTALL=n
CONFIG_NEUTRON_L2_AGENT=openvswitch //L2 스위치 설정 openvswitch가 가장 무난하다.
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat //flat; 외부네트워크 설정 드라이버. vxlan; 내부네트워크 설정소프트웨어
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan //project = tenant 임차인.
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens160
CONFIG_PROVISION_DEMO=n

# packstack --answer-file /root/answers.txt

📌 4. 웹 브라우저로 Openstack admin 접속 후 설정

  1. 시간대 설정
  2. 인증 - 프로젝트 - 프로젝트 생성 - 이름 : web-project - 프로젝트 생성
  3. 인증 - 사용자 - 사용자 생성- 이름 : web-user - 암호 입력 - 최초프로젝트 : web-project
  4. 관리 - 네트워크 - 네트워크 - 네트워크 생성 - 네트워크 이름 : External-Network - 프로젝트 : admin - 공급자 네트워크 유형 : FLAT -물리적인 네트워크 : extnet - 외부네트워크 체크박스 체크 -다음

    4-1. 서브넷 이름 : External-Subnet - 네트워크 주소 : 192.168.0.0/20 - 게이트웨이 IP : 192.168.0.1 - 다음

    4-2. DHCP사용 체크박스 해제 - Pools 할당 : 192.168.4.129,192.168.4.254 - 생성
  5. 관리 - compute - flavor - flavor 생성 - 이름 : m1.micro - ID : 6 - VCPUs : 1 - RAM : 1024MB - Root 디스트 : 10

📌 5. 웹 브라우저로 Openstack web-user 접속 후 설정

  1. 프로젝트 - 네트워크 - 네트워크 생성 - 네트워크 이름 : Internal - Network -다음
    1-1. 네트워크 주소 : 10.14.0.0/20 - 게이트웨이 IP : 10.14.0.1 - 다음
    1-2. DHCP사용 체크박스 그대로 - DNS 네임 서버 : 192.168.0.66 / 8.8.8.8 - 생성
  2. 프로젝트 - 네트워크 - 라우터 - 라우터 생성 - 라우터 이름 :Router - 외부 네트워크 : EXTERNAL-NETWORK(아까 생성한 외부네트워크) - 라우터 생성
  3. 프로젝트 - 네트워크 - 라우터 - 라우터 이름 클릭 - 인터페이스 추가 - 서브넷 : Internal - network :10.14.0.0/20 (아까 생성한 내부 서브넷) - 제출
  4. 프로젝트 - 네트워크 - Floating IP - 프로젝트에 IP할당 - Pool : External-Network - IP할당 => 3개 생성
  5. 프로젝트 - 네트워크 - 보안그룹 - 보안그룹 생성 - 이름 : SG-WEB - 보안그룹 생성
  • outbound 내보내는 것은 트래픽이 다 허용 중. 들어오는 것이 차단되고 있어서 규칙추가 해야함.

5-1. 규칙 추가 - 규칙 - ALL ICMP(ping), HTTP(web), SSH(keypair) - 추가

  1. 프로젝트 - 네트워크 - 보안그룹 - 보안그룹 생성 - 이름 : SG-DB - 보안그룹 생성
    6-1. 규칙 추가 - 규칙 - ALL ICMP(ping), MYSQL(DB), SSH(keypair) - 추가
  • 규칙을 수정하고 싶을 때는 삭제하고 다시 생성해야 함.
  1. 프로젝트 - COMPUTE - 키 페어 - 키 페어 생성 - 키 페어 이름 : web-key - 키 유형 : SSH키 - 키 페어 생성

  2. 프로젝트 - COMPUTE - 이미지 - 이미지 생성 - 이미지 이름 : CentOS7 - 이미지 소스 파일 : CentOS-7-x86_64-GenericCloud-2111.qcow2 / 포멧 :QCOW2 - 이미지생성

  3. 프로젝트 - COMPUTE - 이미지 - 이미지 생성 - 이미지 이름 : Ubuntu18 - 이미지 소스 파일 : bionic-server-cloudimg-amd64.img / 포멧 :QCOW2 - 이미지생성

  4. 프로젝트 - 오브젝트 스토리지 - 컨테이너 - 컨테이너 생성 - 컨테이너 이름 : files - 컨테이너 접근 : 공용 - submit

  • DB와 웹서버 이미지 생성했으니 워드프레스 준비하기.

10-1. 워드프레스 파일 다운받아서 files폴더에 업로드 하기. (wordpress-4.8.2-ko_KR.zip)

10-2. 파일 주소 생성http://192.168.0.127:8080/v1/AUTH_7ace01325d2e4657b4e3adee21276f9c/files/wordpress-4.8.2-ko_KR.zip

📌 6. 웹 브라우저로 Openstack web-user 접속 후 webserver 구축

  1. 프로젝트 - compute - 인스턴스 - 인스턴스 시작 - 인스턴스 이름 : webserver - next

1-1. 볼륨 크기 : 10gb - centos7할당 - next


1-2. m1.micro 할당 - next
1-3. 네트워크 internal-network 그대로 -next
1-4. 네트워크 포트 skip (next) - 보안그룹 : default 할당 해제 후 SG-WEB 할당 - next
1-5. web-key 할당 확인 후 next
1-6. 구성 - 사용자 정의 스크립트 :

#!/bin/bash
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config // 이 경로랑 이 경로랑 같음 /etc/sysconfig/selinux
yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
cd /home/centos
wget http://192.168.0.127:8080/v1/AUTH_7ace01325d2e4657b4e3adee21276f9c/files/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
unzip /home/centos/wordpress-4.8.2-ko_KR.zip
mv ./wordpress/* .
chown -R apache:apache /var/www/*
systemctl enable --now httpd
  • 인스턴스 시작
  1. webserver - 유동 ip연결 - 제일 빠른 ip선택 - 연결

  2. mobaxterm 으로 접속

📌 7. 웹 브라우저로 Openstack web-user 접속 후 DBserver 구축

템플릿 생성

  1. 프로젝트 - Orchestration - 템플릿 생성기 - 가장 최신의 heat template version (2021-04-16)

  2. 프로젝트 - Orchestration - 템플릿 생성기 - OS::NAVA - 모니터 드래그해서 edit창(캔버스)에 두기

  1. server_1클릭 - Name : DBSERVER - Flavor : m1.micro - bootfromsource : image - image : ubuntu18 - Availability Zone : nova - access & security

3-1. key-Name : web-key -Security Groups : SG-DB - networks

3-2. network + - specify property : subnet - subnet: Internal-Subnet - 저장

  1. 템플릿 생성기 클릭 - 다운로드

인스턴스 생성

4-1. stack 생성 - 다음

4-2. stack 이름 : DBSERVER-STACK - 비밀번호 입력 - 실행

  1. 프로젝트 - compute - 인스턴스 - DBSERVER 확인 가능

📌 Openstack Core service

* AWS

  1. Compute Service(CPU,RAM) : Nova, *EC2(Elastic Compute Cloud)

  2. Storage Service(SSD, 구글드라이브, NAS(=NFS) :

  • Cinder;Block storage, *EBS(Elastic Block Store)
  • Swift;Object Storage, *S3(Simple Storage Service)
  • Manila; File Storage, *EFS(Elastic File System)
  1. Network Service(IP, Subnet) : Neutron , *VPC(Virtual Private Cloud; 격리된)
  2. Image Service(OS) : Glance, AMI(Amazon Machine Image)
  3. Identity Service(USER(ID, PW), Group, Role, ...) : Keystone, *IAM(Identity Access Management)

📌기타

  • cpu와 메모리 - compute service : NOVA, EC2(Elastic Compute Cloud)
  • iso는 install이 필요하고 qcow2는 이미 설치가 다 된 것을 가져와서 인스턴스를 시작하는 것

  • swap 메모리를 대체할 수 있는 공간.

    시스템 메모리 ram공간이 다 사용되면 메모리 부족부분을 디스크 공간을 잡아서 디스크 공간에서 처리.

  • openstack 설치 시 .ssh 자동으로 설치되어 있음. 나중에 openstack 접속해서 설정 시 우리가 이전에 했던 ssh 직접 전송하는 작업 필요 없이 인터넷 화면에서 간단하게 ssh 서비스 이용 가능.

  • sed명령어 - vi 수정 자동으로 할 수 있게 함. 문구를 치환하는 명령어.

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config 
  • 만들어둔 템플릿 다시 사용(똑같은 인스턴스 생성)하고 싶을 때
    프로젝트/Orchestration/Stack - stack 시작 -

-> 실행 클릭

heat.(=CloudFormation)(orchestration service) 의 기능 - (IaC; infra as a code)

  • 잘 운영되는 서버, 관리를 위한 ssh 키 잃어버린다면?
  1. 인스턴스의 스냅샷 생성

1-1. 키패어 생성

  1. 프로젝트 - compute - 인스턴스 - 인스턴스 시작


->변경 사항 없음.

=>인스턴스 시작

--> 기존의 인스턴스 유동 IP를 새로만든 web-restore 로 변경시켜주면 됨.
=>기존 ; 유동 IP해제
=>web-restore ; 유동 IP연결 - 해제한 기존의 IP부여
=>근데 이 잠시동안 down되므로 key를 잃어버려선 안됨.

  • ad-hoc (CLI 커맨드로 한줄한줄 완성해나가는 작업)
profile
꾸준히, 차근차근
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 5월 23일

매우 도움이 되었습니다 감사합니다!

답글 달기