[클라우드 아키텍트] OpenStack 설치

HyeonSeok·2023년 4월 5일
0

OpenStack

목록 보기
1/12

VMware 설정하기

스펙

OpenStack (VMware)

CPU : 6 Core (8core - 2core(host)) - 1processor, 6core, 중첩된 가상화(nested)
RAM : 10GB (16GB - 6GB(host)) - 10240MB
SSD : 128GB(동적할당) <- 차후 바꾸기 힘들다
NET : Bridge
IMG : CentOS-Stream-8.iso

설정 과정


Typical 선택 후








CentOS 8 설정

  1. Network interface card를 켜준다
  2. 시간대를 선택한다
  3. Disk 볼륨을 설정한다
  4. OS 설치를 미니멀로 선택해서 설치한다
  5. 모든 게 끝난 후 느낌표가 뜬 것이 없는지 확인 후에 Begin Installation

발생가능 문제

발생 가능한 문제로 NIC를 켜주는 데에 문제가 생길 수 있다. 원래 Bridge로 설정했기 때문에 Host컴퓨터와 같은 네트워크 대역에서 IP를 받아오는데 잘 안되면 VMware 설정을 수정해준다.

VMware - Edit - Virtual Network Editor - Change Settings - Bridge
automatic이면 고장남, 실제 NIC로 바꿔줄것

OpenStack 설치

실습을 위해서 싱글노드 형태로 설치한다
싱글노드 : 하나의 VM에 각종 OpenStack의 노드들을 모아 놓는 것.
OpenStack의 서비스가 구현되기 위해서 Compute Node, Network Node, Storage Node, Controller Node인 4개의 노드가 필요하다. 싱글노드란 이 네개의 노드를 하나의 VM에 모아놓은 것이다.
일반적으로 여러개의 베어메탈 or VM을 통해 각각 별도로 구성해서 진행한다.
그리고 이렇게 여러개의 노드를 분리시켜 놓는 것을 멀티노드라고 부른다.

초기설정

dnf update -y
vi /etc/sysconfig/network-scripts/ifcfg-ens160

ifcfg-ens160 파일을 아래처럼 바꿔서 고정IP 형태로 만든다
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.1.83
NETMASK=255.255.248.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4

vi /etc/selinux/config
	SELINUX=disabled
dnf install network-scripts -y
systemctl disable firewalld
systemctl disable NetworkManager
systemctl enable network
systemctl start network

reboot

SElinux를 해제하고 CentOS8은 network데몬이 없다.
따라서 Network를 별도로 설치하여 사용한다. 따라서 NetworkManager를 중단시키고 network데몬을 실행시킨다.
그리고 OpenStack의 프로그램과 충돌날 수 있기 때문에 방화벽을 해제시킨다.

OpenStack 설치

CentOS 8에서 정식으로 관리하지 않는 프로그램을 설치하기 위해 설정

dnf config-manager --enable powertools

오픈스택 설치를 위한 준비단계, 설치파일 경로 설정 등등 / 이후 설치 업데이트

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

오픈스택 싱글노드를 쉽게 설치하게 도와주는 툴(일종의 자동화 툴).
원래 멀티노드를 통한 정식설치는 매우 복잡하다 (매뉴얼 필요)

dnf install -y openstack-packstack

answers.txt라는 파일 생성

packstack --gen-answer-file /root/answers.txt
CONFIG_DEFAULT_PASSWORD="호라이즌으로 접속하는 admin 계정 비밀번호"
CONFIG_KEYSTONE_ADMIN_PW="키스톤 어드민 계정 비밀번호"
CONFIG_CINDER_VOLUMES_SIZE=100G
CONFIG_NTP_SERVERS=0.kr.pool.ntp.org
CONFIG_HEAT_INSTALL=y
CONFIG_NEUTRON_L2_AGENT=openvswitch
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan
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

answers.txt파일은 미리 .bak 파일로 빼놓는 것이 좋다.
그리고 vi에서 ESC -> /찾을문자열 형식으로 찾아서 해당 열을 수정하면 된다.

CONFIG_DEFAULT_PASSWORD : OpenStack에서 다양하게 사용되는 비밀번호
CONFIG_KEYSTONE_ADMIN_PW : IAM 같은거
CONFIG_CINDER_VOLUMES_SIZE : 전체 SSD 용량 설정
CONFIG_NTP_SERVERS : 시간동기화 서버 설정
CONFIG_HEAT_INSTALL : heat 서비스 설치
CONFIG_NEUTRON_L2_AGENT : openstack에 사용할 L2 가상스위치 지정, openstack에서 사용할 스위치 소프트웨어를 선택하는 것.
-> 소프트웨어는 실제로 여러개가 있기 때문에 이를 선택할 수 있게 만들었고, 이에 따라 맞춤 드라이버를 위해 드라이버 선택 옵션이 존재한다.


CONFIG_NEUTRON_ML2_TYPE_DRIVERS : 네트워크 드라이버 선택 (vxlan-vlan을 확장한 버전: private subnet driver, flat: public subnet driver) CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES : tenant-가입자, 즉 가입자가 사용할 네트워크 타입 선택 - 흠 위에 드라이버 선택에 따라 정해진 값인지 물어보자 CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS : 위에서 설정한 가상스위치의 타입과 매핑, 가상스위치를 추상화시켜서 드라이버를 동적으로 선택하도록 만든 설정임. -> 왜냐면 가상스위치를 지정했는데 가상스위치랑 드라이버가 서로 맞지 않으면 동작을 안한다. 때문에 가상스위치를 선택하도록 만들었고, 가상스위치에 따라 드라이버를 동적으로 선택할 수 있도록 추상화 시킨 것.

CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS : VM들은 extnet과 연결됨. extnet은 openstack에만 존재하는 가상 네트워크 카드, br-ex는 linux에서의 가상 네트워크 카드다.
-> 간단히 생각하면 그냥 extnet없이 br-ex에 매핑하면 될 것 같지만 일종의 추상화 단계를 거쳐서 linux에만 있는 br-ex뿐만 아니라 추가적인 기능이나 호환성문제를 위해 extnet이라는 추상화 단계를 더 거치게 만든 것 같다.

CONFIG_NEUTRON_OVS_BRIDGE_IFACES : br-ex를 실제 물리적 NIC와 매핑
CONFIG_PROVISION_DEMO : 네트워크 DEMO, IP가 미리 세팅된 상태로 openstack을 세팅하는 것. y면 네트워크 커스터마이징이 안됨


추가사항
packstack은 puppet이라는 일종의 자동화 툴을 이용해서 openstack의 설치를 자동화 시킨 것이다. 위에서 만든 answers.txt는 바로 자동화 툴에 넘겨주는 스크립트 파일이다.
그리고 설치속도가 굉장히 느리다. 한 30분 가량 걸린다.

profile
즐겁게 사는 개발자가 됩시다

0개의 댓글