Cloud

OpenStack 설치 2편 - 환경설정 (Ubuntu 20.04 Yoga)

zewoong 2024. 2. 28. 17:33

환경세팅 (설치 전 선행 작업)

Environment란을 클릭하면 오픈스택을 설치하기 위한 환경세팅을 할 수 있다.

 

위에 있는 선행 작업들을 모두 진행해줘야 한다. (Security는 옵션)

 

1. Host networking 설치

기본적으로 openstack은 controller 노드, compute 노드는 필수이며 storage노드는 선택사항이다.

결국 관리용 내부망 NAT,  일반 연결망(bridge) 각 1개씩, 총 2개의 네트워크 인터페이스 카드가 필요하다.
우리는 여기서 관리자용 내부망을 설정해줘야 한다.

 

1.1 각 노드 설정

다음과 같은 방식을 이용하여 네트워크를 설정한다. 

# vi /etc/network/interfaces
... ...

auto INTERFACE_NAME
iface INTERFACE_NAME inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
  • INTERFACE_NAME에는 나의 내부망 인터페이스 카드 이름을 적는다 ex) enp1s0, enp7s0...
  • controller node에서는 controller node의 해당하는 interface 이름, compute node에서는 자신의 interface이름을 적는다.
  • block storage를 이용한다면 block node도 설정해주면 된다.

 

# vi /etc/hosts
... ...

# controller
10.0.0.11       controller

# compute1
10.0.0.31       compute1

# block1
10.0.0.41       block1
  • 위는 예시에서 보는 것과 같이 본인이 사용할 각 노드의 ip와 역할을 적으면 된다.
  • hostnamectl을 이용해서 노드들 이름을 먼저 바꿔야 한다.
  • 모든 노드들을 등록해줘야 하며 위는 예시이기 때문에 노드가 더 많다면 다 등록해주면 된다.
  • 127.0.1.1.은 주석 처리한다.

 

1.2 설정 작동 확인

네트워크 통신을 확인한다.

# ping -c 4 docs.openstack.org
# ping -c 4 compute1

 

2. Network Time Protocol(NTP) 설치

2.1 controller node 설정

2.1.1 패키지 설치

# apt install chrony

 

2.1.2 chrony.conf 설정 

# vi /etc/chrony.conf

server NTP_SERVER iburst
allow 10.0.0.0/24
  • NTP_SERVER를 본인이 원하는 서버로 설정하시면 됩니다. ex) server 1.kr.pool.ntp.org, server 2.asia.pool.ntp.org
  • allow 뒤는 본인 내부망 영역과 넷마스크를 적어준다.

2.1.3 chrony 재시작

# service chrony restart

 

2.2 other node 설정

2.2.1 패키지 설치

# apt install chrony

 

2.2.2 /etc/chrony.conf 파일 설정 

# vi /etc/chrony.conf
... ...

#pool 2.debian.pool.ntp.org

server controller iburst
  • 나머지 설정된 "pool 2.debian.pool.ntp.org" 은 주석처리 한다. 

 

2.2.3 chrony service 재 시작

# service chrony restart

 

2.3 chrony 작동 확인

모든 노드에서 아래 명령어를 실행시켜 정상 작동을 확인한다.

# chronyc sources

 

컨트롤러 노드 실행 결과

 

다른 노드에서의 실행 결과

 

3. OpenStack Repository 추가

패키지 추가 및 샘플 설치 및 클라이언트를 설치한다. (본 설정은 모든 Node에 실행한다.)

 

# add-apt-repository cloud-archive:yoga
# apt install nova-compute
# apt install python3-openstackclient

 

4. SQL database 설치

SQL Database 설치는 일반적으로 controller node 에 설치하는 것을 권장한다.  

 

4.1 패키지 설치

# apt install mariadb-server python3-pymysql

 

4.2 99-openstack.cnf 파일 생성 및 설정

[controller ip]에는 controller node의 IP를 적는다.  예) bind-address = 192.168.124.258

# vi /etc/mysql/mariadb.conf.d/99-openstack.cnf

[mysqld]
bind-address = [contoller ip]

default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

 

4.3 데이터베이스 재시작 및 secure 설정

# service mysql restart
# mysql_secure_installation

 

5. Message queue 설치

Message Queue 설치는 일반적으로 controller node 에 설치하는 것을 권장한다.  

 

5.1 패키지 설치

# apt install rabbitmq-server

 

5.2 rabbitmq 유저 생성

RABBIT_PASS 대신 본인의 비밀번호를 작성한다. 필자는 모든 비밀번호를 openstack으로 통일하였다.

# rabbitmqctl add_user openstack RABBIT_PASS

 

5.3 권한 설정 openstack 유저에게 권한 설정

# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

 

6. Memcached 설치

Memcached 설치는 일반적으로 controller node 에 설치하는 것을 권장한다.  

 

6.1 패키지 설치

# apt install memcached python3-memcache

 

6.2 memcached.conf 파일 설정

[controller ip]에 자신의 controller ip 설정한다. (ex) 192.168.124.258)

# vi  /etc/memcached.conf

-l [controller ip]

 

7. Etcd 설치

Etcd 설치는 일반적으로 Controller node 에 설치하는 것을 권장한다. 

 

7.1 패키지 설치

# apt install etcd

 

7.2 etcd 파일 설정

[controller ip]에는 설치된 Controller IP로 설정한다. 

# vi /etc/default/etcd

ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://[controller ip]:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://[controller ip]:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://[controller ip]:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://[controller ip]:2379"

 

7.3 etcd service 재 시작

# systemctl enable etcd
# systemctl restart etcd

 

여기까지가 오픈스택을 설치하기 위한 환경 세팅이다.
정상적으로 환경 세팅을 맞쳤다면, 재부팅을 하여 설정들이 잘 적용 될 수 있도록 하자.