시작하기전에
오픈스택 클라우드 환경에 가상머신을 올리는 것을 1차 목표로 하며, 설치 환경은 다음과 같다.
Ubuntu Server 20.04 + OpenStack 버전(Wallaby)
해당 가이드를 참고하여 진행하였다.
https://docs.openstack.org/install-guide/environment.html
시스템 구성
진행 과정은 OS 설치 및 기본 네트워크 설정, 오픈스택 구축, 가상 네트워크 구축 및 QEMU 기반의 하이퍼바이저까지의 절차에 대해 다룬다.
아키텍처는 다음과 같이 구성한다.
- 그림 추가 예정
하드웨어 구성은 다음과 같다.
- 그림 추가 예정
○ Controller Node
vCPU : 2
vMem : 4GB
Disk : 60GB
vNIC : 1port
○ Compute Node
vCPU : 2
vMem : 4GB
Disk : 60GB
vNIC : 2port
네트워크 구성
- 그림 변경 예정
- Controller Node :
NAT 10.0.0.11 (관리)
Compute Node :
NAT 10.0.0.12 (관리)
Bridge 192.168.200.196
1. 기본설정
■ 1-1. 호스트 네트워킹
1. 네트워크 인터페이스 구성
- 고정 IP 설정하여 진행하며, 고정 IP로 설정하지 않고 진행 시 [2. Hosts 파일 설정] 부분부터 진행하면된다.
네트워크 설정 시 Ubuntu 17.04 이상부터는 Netplan을 사용한다.
(Server는 networkd, Desktop은 networkmanager 기본 사용)
○ 컨트롤러 노드
$ sudo vi /etc/netplan/00-installer-config.yaml
[sudo] password for mush:
# This is the network config written by 'subiquity'
network:
ethernets:
ens34:
addresses: [10.0.0.11/24]
gateway4: 10.0.0.2
nameservers:
addresses: [10.0.0.2, 8.8.8.8]
version: 2
$ sudo netplan apply
$ init 6
○ 컴퓨트 노드
$ sudo vi /etc/netplan/00-installer-config.yaml
[sudo] password for mush:
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses: [192.168.200.196/24]
gateway4: 192.168.200.2
nameservers:
addresses: [192.168.200.2, 8.8.8.8]
ens34:
addresses: [10.0.0.12/24]
gateway4: 10.0.0.2
nameservers:
addresses: [10.0.0.2, 8.8.8.8]
version: 2
$ sudo netplan apply
$ init 6
2. Hosts 파일 설정
○ 컨트롤러 노드, 컴퓨트 노드
$ sudo vi /etc/hosts
# controller
10.0.0.11 controller
# compute1
10.0.0.12 compute
3. 동작 확인
○ 컨트롤러노드
- 컨트롤러 노드에서 인터넷, 컴퓨팅 노드의 관리 인터페이스에 대한 엑세스를 테스트
$ ping -c 4 google.com
$ ping -c 4 compute1
○ 컴퓨트 노드
- 컴퓨트 노드에서 인터넷, 컨트롤러 노드의 관리 인터페이스에 대한 엑세스를 테스트
$ ping -c 4 google.com
$ ping -c 4 controller
■ 1-2. NTP(네트워크 시간 프로토콜)
- 노드 간에 서비스를 동기화하기 위해 NTP 구현인 Chrony를 설치한다. 컨트롤러 노드를 구성 후 컨트롤러 노드를 참조하도록 다른 노드를 구성한다.
1. 구성 요소 설치 및 구성
○ 컨트롤러 노드
1-1. 패키지 설치
$ sudo apt install chrony
1-2. chrony.conf 파일을 편집
$ sudo vi /etc/chrony/chrony.conf
server NTP_SERVER iburst
1-3. 다른 노드가 컨트롤러 노드의 chrony 데몬에 연결할 수 있도록 설정
$ sudo vi /etc/chrony/chrony.conf
allow 10.0.0.0/24
1-4. NTP 서비스 재시작
$ sudo service chrony restart
○ 컴퓨트 노드, 기타 노드
1-1. 패키지 설치
$ sudo apt install chrony
1-2. 컨트롤러 노드를 참조하도록 변경
$ sudo vi /etc/chrony/chrony.conf
server controller iburst
1-3. pool 2.debian.pool.ntp.org offline iburst 라인을 주석 처리
$ sudo vi /etc/chrony/chrony.conf
# pool 2.debian.pool.ntp.org offline iburst
1-4. NTP 서비스 재시작
$ sudo service chrony restart
2. 동작 확인
2-1. 컨트롤러 노드에서 다음 명령을 실행
$ chronyc sources
210 Number of sources = 7
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- alphyn.canonical.com 2 6 337 28 -6455us[-6455us] +/- 178ms
^? chilipepper.canonical.com 0 6 0 - +0ns[ +0ns] +/- 0ns
^- golem.canonical.com 2 6 377 24 -2282us[-2282us] +/- 167ms
^- chilipepper.canonical.com 2 6 377 30 +9274us[+9274us] +/- 166ms
^- send.mx.cdnetworks.com 2 6 377 31 +1134us[+1134us] +/- 27ms
^- any.time.nl 2 6 373 30 -527us[ -527us] +/- 47ms
^* ec2-13-209-84-50.ap-nort> 2 6 377 32 +70us[ +547us] +/- 7214us
Name/IP 주소 열의 내용은 하나 이상의 NTP 서버의 호스트이름 또는 IP 주소,
MS 열의 내용은 NTP 서비스가 현재 동기화된 서버에 대해 * 를 표시한다.
2-2. 다른 모든 노드에서 동일한 명령을 실행
$ chronyc sources
210 Number of sources = 7
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- pugot.canonical.com 2 6 37 32 +32ms[ +32ms] +/- 188ms
^- chilipepper.canonical.com 2 6 37 32 +16ms[ +16ms] +/- 170ms
^- golem.canonical.com 2 6 37 33 +15ms[ +15ms] +/- 161ms
^- alphyn.canonical.com 2 6 37 31 -20ms[ -20ms] +/- 187ms
^? 183.103.155.118 2 6 1 34 -485us[ -485us] +/- 60ms
^- 132.226.17.96 2 6 123 102 +399us[ +776us] +/- 146ms
^* controller 3 6 37 54 +1977ns[+2043us] +/- 8776us
Name/IP 주소 열의 내용은 컨트롤러 노드의 호스트 이름을 나타내야한다.
■ 1-3. 오픈스택 패키지
- 모든 노드에서 OpenStack 패키지를 릴리스한다.
(OpenStack 패키지 설정은 컨트롤러, 컴퓨팅 및 블록 스토리지 노드와 같은 모든 노드에서 수행해야한다.)
1. 아카이브 활성화
○ 모든 노드
Ubuntu 20.04 LTS용 OpenStack Wallaby:
# add-apt-repository cloud-archive:wallaby
2. 샘플 설치 (생략 가능)
○ 모든 노드
$ sudo apt install nova-compute
3. 클라이언트 설치
○ 모든 노드
$ sudo apt install python3-openstackclient
※ 아카이브 활성화 에러 발생 시
$ sudo add-apt-repository cloud-archive:wallaby
'wallaby': not a valid cloud-archive name.
Must be one of ['folsom', 'folsom-proposed', 'grizzly', 'grizzly-proposed', 'havana', 'havana-proposed', 'icehouse', 'icehouse-proposed', 'juno', 'juno-proposed', 'kilo', 'kilo-proposed', 'liberty', 'liberty-proposed', 'mitaka', 'mitaka-proposed', 'newton', 'newton-proposed', 'ocata', 'ocata-proposed', 'pike', 'pike-proposed', 'queens', 'queens-proposed', 'tools', 'tools-proposed']
1. 아래 순서대로 진행
$ sudo apt -y install software-properties-common
$ sudo add-apt-repository cloud-archive:stein
■ 1-4. SQL 데이터베이스
- 대부분의 OpenStack 서비스는 SQL 데이터베이스를 사용하여 정보를 저장한다. 일반적으로 컨트롤러 노드에서 실행되며, 배포에 따라 MariaDB 또는 MySQL을 사용한다. PostgreSQL을 포함한 다른 SQL 데이터베이스도 지원한다 .
1. 구성 요소 설치 및 구성
○ 컨트롤러 노드
1-1. 패키지 설치
Ubuntu 20.04
# apt install mariadb-server python3-pymysql
Ubuntu 18.04 또는 16.04
# apt install mariadb-server python-pymysql
1-2. /etc/mysql/mariadb.conf.d/99-openstack.cnf 파일 생성 및 편집
$ sudo vi /etc/mysql/mariadb.conf.d/99-openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
* [mysqld] 섹션을 만들고 bind-address에 컨트롤러 노드의 관리 IP 주소로 설정하여
관리 네트워크를 통해 다른 노드에서 액세스할 수 있도록 합니다.
2. 설치 완료
2-1. 데이터베이스 서비스 재시작
$ sudo service mysql restart
2-2. mysql_secure_installation 스크립트를 실행하여 데이터베이스 서비스 보호
$ sudo mysql_secure_installation
* 데이터베이스 root 계정에 적합한 비밀번호로 변경
■ 1-5. 메시지 대기열
- 메시지 대기열 을 사용하여 서비스 간의 작업 및 상태 정보를 조정한다. 메시지 대기열 서비스는 일반적으로 컨트롤러 노드에서 실행되며, RabbitMQ , Qpid 및 ZeroMQ 를 포함한 여러 메시지 대기열 서비스를 지원한다. 참고하는 가이드에서는 RabbitMQ 메시지 대기열 서비스를 구현하며, 다른 메시지 대기열 서비스를 구현하려는 경우 관련 설명서를 참조하면된다.
1. 구성 요소 설치 및 구성
○ 컨트롤러 노드
1-1. 패키지 설치
# apt install rabbitmq-server
1-2. openstack 사용자 추가
# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...
* RABBIT_PASS를 적절한 비밀번호로 변경
1-3. openstack 사용자에 대한 구성, 쓰기 및 읽기 액세스를 허용
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
■ 1-6. 멤캐시드(Memcached)
- 오픈스택에서 사용되는 ID 서비스 인증 정보를 메모리에 저장, 사용한다. 일반적으로 컨트롤러 노드에서 실행되며, 프로덕션 배포의 경우 보안을 위해 방화벽, 인증 및 암호화의 조합을 활성화하는 것이 좋다.
1. 구성 요소 설치 및 구성
○ 컨트롤러 노드
1-1. 패키지 설치
Ubuntu 18.04 이후
# apt install memcached python3-memcache
Ubuntu 18.04 이전
# apt install memcached python-memcache
1-2. /etc/memcached.conf 파일을 편집 및 구성
$ sudo vi /etc/memcached.conf
-l 10.0.0.11
* -l 127.0.0.1 가 있던 기존 줄을 컨트롤러 노드의 관리 IP 주소로 변경한다.
이는 관리 네트워크를 통해 다른 노드에서 액세스할 수 있도록 하기 위한 것이다.
2. 설치 완료
2-1. Memcached 서비스 재시작
$ sudo service memcached restart
Reference
'STUDY > OpenStack' 카테고리의 다른 글
[OpenStack] 오픈스택 수동 설치(2) (0) | 2022.02.18 |
---|