본문 바로가기

KOSA 클라우드 솔루션즈 아키텍트 양성과정

[5.23] 오픈스택 총정리(설치, 설정 등)

# Openstack VM 설정

  - Openstack VM 최소사양

    - CPU : 4C (시스템 8C)

    - RAM : 8GB (시스템 16GB)

  - Openstack 권장사양

    - CPU : 24C

    - RAM : 24GB

VMware에서 File -> New Virtual Machine

 

 

 

 

 

 

 

 

vmdk파일 쪼갤 필요 없으므로 singgle file로

 

 

RAM 12GB(12288MB)

 

 

CPU 4C

 

 

OS CentOS8-Stream.iso

 

 

NAT Bridged

Bridged를 활용하기 위해서는 DHCP가 있어야 하는 데 실무에서는 보안상의 이유로 DHCP 사용하지 않는 경우 많음

 

 

필요없는 Device 제거한 모습

 

 

Finish 클릭


# Openstack 설치

 

 

 

 

 

 

 

 

 

Click here to create them automatically 클릭

 

 

 

/home 지우기

 

 

* RAM 권장사양은 24GB인데 12GB밖에 안 잡았으니까, swap을 이용하자

* swap은 잡아놓은 메모리(12GB)의 반 정도를 swap으로 잡게 됨( 메모리 공간을 전부 사용할 시 부족한 부분을 처리하겠다는 의미의 swap 공간)

* swap을 12GB

 

 

45 GiB의 여유공간

 

 

여유공간 이상의 용량을 넣어도 시스템이 조절해줌

 

 

/ 폴더에 115GiB가 할당된 상태

 

 

Accept changes

 

 

오픈스택의 IP를 받은 상태

 

네트워크 연결된 상태

* SORTWARE파트에서 Closet mirror 찾은 것 볼 수 있음

 

 

 

 

Begin Installation 클릭

 

 

Reboot System 클릭

 


# MobaXterm

 

IP와 username  입력 후 OK

 

 

password를 이용해 Openstack에 접속한 모습

 

 

vi /etc/sysconfig/network-scripts/ifcfg-ens160

 

vi /etc/selinux/config

# dnf 패키지 메니져를 활용한 설치 과정

 

* dnf install network-scripts -y -> network scripts의 서비스가 network

* systemctl disable --now firewalld -> iptables라는 firewalld 전에 나왔던 방화벽을 Openstack에서 사용하고 있기에 firewalld를 disable 시킴

* systemctl disable --now NetworkManager -> NetworkManager와 network 서비스가 비슷한 기능이라 NetworkManager를 disable 시킴

* systemctl start network

* reboot

* dnf update -y

* dnf config-manager --enable powertools -> powertools를 enable 시켜줘야 openstak-yoga 패키지를 활용할 수 있음

* dnf install -y centos-release-openstack-yoga

* dnf update -y -> openstack 설치 환경에 대한 update라고 볼 수 있음

* dnf install -y openstack-packstack -> packstack이라는 도구를 통해 스크립트로 필요한 작업들을 정의할 수 있음

* packstack --gen-answer-file /root/answers.txt -> 해당 경로로 config 파일을 만들고 그 config파일을 커스터마이징

packstack --gen-answer-file /root/answers.txt  후 자동으로 ssh 키 생성됨

* vi /root/answers.txt

* CONFIG_DEFAULT_PASSWORD=Test1234! -> horizen 대시보드의 패스워드

* CONFIG_KEYSTONE_ADMIN_PW=Test1234! -> CLI방식의 대시보드에서 쓰이는 패스워드

* CONFIG_CINDER_VOLUMES_SIZE=90G

* CONFIG_NTP_SERVERS=0.kr.pool.ntp.org

* CONFIG_HEAT_INSTALL=y -> aws의 cloudformation과 유사한 서비스 설치

* CONFIG_CEILOMETER_INSTALL=n -> 사용하지 않는 서비스는 설치하지 않는 것이 Openstack의 부하를 경감

* CONFIG_AODH_INSTALL=n -> 사용하지 않는 서비스는 설치하지 않는 것이 Openstack의 부하를 경감

* CONFIG_NEUTRON_L2_AGENT=openvswitch -> L2는 가상의 스위치

* CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat -> vxlan과 flat은 각각 내외부 네트워크 

* CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan -> tenant(=project),(가입자들이 이용할 네트워크 정의)

* CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch -> openvswitch사용을 위한 소프트웨어 설치

* CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex -> flat을 설정할 때 외부인터페이스

* CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens160

-> br-ex(가상의 랜카드)

-> ens160(진짜 랜카드)

-> ens160 인터페이스 랜카드의 Ip를 br-ex가 뺏어감

-> 실제 랜카드는 전기신호만 오가는 존재가 됨

-> floating IP가 외부와 연결되기 위해서 br-ex가 IP를 가져가게 되는 것

* CONFIG_PROVISION_DEMO=n -> y로 되어있으면 openstack이 만들어 놓은 네트워크를 그대로 사용해야 함

* packstack --answer-file /root/answers.txt -> 설치에 30분가량 소요

 

 

packstack 설치 후 브라우저를 통해 해당 주소로 대시보드 접속


# 브라우저로 Openstack 접속

# 관리자 계정으로

# 사용자 설정

 

admin -> 설정
인증 -> 프로젝트

* project는 같은 일을 하는 사람들을 모아 놓는 공간이라고 보면 됨

 

 

인증 -> 사용자

* 서비스들도 권한과 역할을 부여받은 일종의 사용자로 인식됨

 

사용자 생성

* 사용자가 web-project에서 업무를 볼 수 있도록 선택

 

 

web-user 사용자가 생성됨


# 네트워크 설정

관리 -> 네트워크 -> 네트워크

* External 네트워크를 만들기 위해 들어옴

 

 

1캡처
1캡처를 cli 환경에서 설정할 때

* 외부를 정의하는 네트워크 유형인 Flat

* extnet은 원래 물리적 네트워크 아니지만, 여기서는 extnet을 물리적 네트워크로 인식되게 함

* extnet을 제대로 넣어주지 않으면 게이트웨이에 ping이 안 나감

 

호스트 주소를 더 많은 사람들이 사용하기 위해 서브넷 마스크를 255.255..240.0으로 만듦

 

Pools 할당

* IP주소 범위 사이에 , (콤마) 찍어주고 앞 뒤로 공백이 있으면 안 됨


# Flavor 설정

관리->Compute->Flavor

 

Flavor 생성

* VCPU는 논리 프로세서를 의미함


# 사용자 계정으로

 

사용자 계정 로그인

 

 

네트워크->네트워크->네트워크 토폴로지

 

네트워크 설정

* 네트워크 이름은 CLI환경에서와 동일한 이름을 사용한 것

 

 

서브넷 설정

 

DNS 서버 IP 입력

 

아직은 연결되지 않은 네트워크

* 라우터를 생성해야 연결됨

 

프로젝트->네트워크->라우터

 

라우터와 External-Network 연결됨

 

Name의 Router 클릭

 

 

인터페이스 추가

* 인터페이스를 추가해야 라우터가 Internal-Network와도 연결됨

 

 

Internal-Network 인터페이스 추가

* 라우터의 인터페이스에 Internal-Subnet(Internal Network)을 추가하는 것

 

네트워크 구성 완료

 

프로젝트->네트워크->Floating IP

* 프로젝트에 IP 할당 클릭

 

 

admin에서 설정했던 IP풀 내에서 IP를 랜덤하게 가져옴

 

Floating IP 3개정도만 할당

 

프로젝트->네트워크->보안그룹

* 보안 그룹 생성 클릭

 

보안그룹 생성

* default 보안 그룹은 보통 사용하지 않음

 

 

보안그룹 생성 완료

* 내보냄(outbound)는 허용함

* 들어옴(Inbound)는 없음

* 방화벽의 특징 중 하나는 기본적으로 어떤 외부의 트래픽도 허용하지 않음

* Inbound 트래픽은 규칙 추가에서 따로 추가해줘야 함

 

 

외부의 트래픽 허용

* ALL ICMP는 Ping 테스트를 위해 열어주는 것

 

 

다시 규칙추가해서 웹서버를 위해 HTTP 열어줌

* 0.0.0.0/0은 모든 출발지 IP를 허용한다는 의미

 

 

22번 포트에 대한 Inbound 트래픽도 허용

* mobaXterm에서의  ssh를 통한 접속을 허용하기 위해 22번 포트를 열어줌

 

 

다시 보안그룹 하나 더 생성하러 옴

 

 

SG-DB 생성

* MariaDB를 위한 보안 그룹을 별도로 생성해 줌

 

 

규칙추가 ICMP

 

 

MYSQL도 열어줌

* MariaDB에서의 접속을 허용하기 위해 MYSQL(3306포트)도 열어줌

 

mobaXterm에서의 접속을 위해 22번 포트 오픈

 

cf.) 규칙 수정 기능은 없음

* 규칙을 수정하고 싶으면 삭제하고 다시 만들어야 함


 

# 키 페어

 

 

프로젝트->Compute->키 페어

* 키 페어 생성 클릭

 

 

키 페어 생성


# 이미지

 

프로젝트->Compute->이미지

 

 

이미지 생성

* QCOW2 파일로 이미지 포멧 설정 (QCOW2는 가상 머신 디스크의 이미지 저장 형식)

Ubuntu18도 생성


# 워드프레스 설치

 

오브젝트 스토리지

* aws의 s3와 유사

* 컨테이너에 파일을 넣는 형태

 

 

컨테이너 생성

 

생성된 컨테이너 files 클릭

 

 

wordpress 업로드

 

Link눌러서 들어가서 링크를 복사

* http://192.168.0.132:8080/v1/AUTH_5f32019cf3134bffb0a0d31abb625e62/files

* /wordpress-4.8.2-ko_KR.zip 를 뒤에 붙여줌


# 인스턴스 시작

 

 

이름을 webserver로

 

 

centos7을 위로 올려서 할당해줌

 

 

m1.micro를 할당

 

 

External-Network는 볼 수 있는 권한 없음(admin이 아니라서)

 

 

보안그룹 SG-WEB만 할당

 

 

서버에 퍼블릭키를 전송

 

* 쉘 스크립트 작성

#!/bin/bash
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
cd/home/centos
wget http://192.168.0.132:8080/v1/AUTH_5f32019cf3134bffb0a0d31abb625e62/files/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
unzip /home/centos/wordpress-4.8.2-ko_KR.zip
chown -R apache:apache /var/www/*
systemctl enable --now httpd

 

* 치환하는 명령어(selinux를 무인 설치에서 vi 들어가서 disable 시킬 수 없어서 필요) :

   -> sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

    - 's/^SELINUX=enforcing -> SELINUX=enforcing이라는 문구를 찾기

    - $/SELINUX=disabled/' -> SELINUX=enforcing이라는 문구를 $표시 다음 문구인 SELINUX=disabled 수정

    - /etc/selinux/config -> /etc/sysconfig/selinux와 같은 내용임 (찾을 파일인 selinux가 있는 경로를 적어 준 것)

 

 

인스턴스 생성 중

 

 

유동 IP연결

 

 

유동 IP연결


# 웹 서버 생성

워드프레스 파일을 현재 경로로 옮기기 위해 webserver세션 생성

* 쉘 스크립트 작성 시 빠뜨린 내용임

* sudo mv ./wordpress/* . 


# DB서버 생성

탬플릿 생성기

 

 

가장 최근에 생성된 탬플릿 버전 선택

 

 

탬플릿 생성기를 통해 VM을 만들 것

* OS::NOVA 클릭

 

 

모니터 아이콘을 드래그해서 캔버스에 올려놓기

* Server_1 클릭

 

 

인스턴스 생성과 비슷하게 드롭다운 메뉴에서 선택

* 싱글 노드이기 때문에 AZ는 nova 한 개뿐임

 

 

접근&보안 설정

* 현재 진행 중인 과정은 탬플릿으로 만들어 놓으면 스크립트로 남게 됨

 

 

Internal-Subnet

 

 

DBSERVER 생성 완료

* 보라색 문서 모양 탬플릿 생성기 클릭

 

 

탬플릿 완성
다운로드 받은 템플릿

* 템플릿을 이용해 편하게 VM 생성 가능

* 템플릿 개념은 추후 오토스케일링에 쓰임

* 해당 스크립트를 STACK에 넣고 돌려야 새로운 VM 생성 가능

 

 

STACK생성 클릭 후 화면

 

비밀번호 입력

* 무결성 확보를 위해 비밀번호 입력을 통해 실제 사용자가 web-user가 맞는지 확인하는 것

 

 

STACK 생성 중

 

 

인스턴스에서 DBSERVER가 만들어 짐


* STACK에 템플릿 파일을 적용하여 인스턴스 만들기

 

STACK에서 템플릿을 이용해 인스턴스 생성 가능

 

 

WEB-USER의 패스워드 이용해 실행

 

 

TEST-STACK을 생성

 

TEST-STACK 인스턴스가 생성됨


# 웹 서버 키를 분실한 경우

 

웹 서버의 스냅샷을 생성

* 스냅샷이 Images로 들어감

 

키를 잃어버렸으니 새로운 키 만듦

 

실행을 클릭해 들어간 화면

 

인스턴스 이름 지정하고 Next

 

부팅 소스를 인스턴스 스냅샷으로 선택

* snapshot을 이용해 VM을 다시 만드는 것

 

 

 

 

 

 

기존 키 web-key 내려주고 키 페어 생성 클릭

 

새로운 키 할당

* 새로운 키 할당하고 바로 인스턴스 시작 클릭

 

 

새로 생성한 키가 적용되는 web-restore

* web-restore가 구동되기 전까지 기존의 webserver를 그대로 두어야 함

* web-restore가 구동되면 192.168.4.37 IP를 web-restore에 연결해줘야 함

* 그 사이 다운타임이 발생하는 문제

 

 

기존 web-server 유동 IP 연결 해제

 

web-server snapshot으로 만든 web-restore로 해제된 유동 IP 연결

 

기존 web-server를 web-restore로 복원 완료

 

'KOSA 클라우드 솔루션즈 아키텍트 양성과정' 카테고리의 다른 글

[5.26] 퍼블릭 클라우드 2일차  (0) 2022.05.26
[5.24] 오픈스택  (0) 2022.05.24
[5.20] Go 5일차(복습)  (0) 2022.05.20
[5.19] Go 4일차  (0) 2022.05.19
[5.18] Go 3일차  (0) 2022.05.18