IT

[openstack] 3.1 기본 설정 - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전) 본문

프로젝트/openstack

[openstack] 3.1 기본 설정 - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전)

abcee 2019. 3. 28. 20:41

3. 구성 과정

3.1 기본 설정

3.1.1 방화벽 설정

openstack은 자체 방화벽 프로그램을 사용하므로 centos에서 돌아가는 방화벽을 모두 종료하는 것이 좋다.

selinux

• 부팅 시 selinux 로딩 안 하도록 /etc/sysconfig/selinux 을 통해 설정 변경

# vi /etc/sysconfig/selinux

[/etc/sysconfig/selinux]

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

• 현재 로딩된 selinux 종료

# setecforce 0

firewalld 서비스

firewalld 서비스 종료 및 부팅 등록 해제

# systemctl stop firewalld.service

# systemctl disable firewalld.service

3.1.2 호스트 네트워크 설정

○ 각 Node들에서 네트워크를 구성한다.

○ 기본적으로 각 노드에서 NIC는 관리자용으로 사용할 NAT 카드 하나와 외부 인터넷망과 연결될 Bridge 카드 총 2개의 카드로 구성한다.

NAT 구성

• 관리자용 NAT카드는 관리자가 대시보드를 통해 Controller Node에 접근하거나 다른 노드의 리소스가 필요하여 각 노드끼리 통신을 할 때 사용되는 네트워크로 구성한다.

/etc/sysconfig/network-scripts/ifcfg-ens33 을 통해 설정 변경

# vi /etc/sysconfig/network-scripts/ifcfg-ens33

[/etc/sysconfig/network-scripts/ifcfg-ens33]

DEVICE=INTERFACE_NAME

TYPE=Ethernet

ONBOOT="yes"

BOOTPROTO="none"

Bridge 구성

• 인터넷용 Bridge카드는 Compute Node가 외부 인터넷과 통신하기 위해 필요한 Provider 인터페이스로 Compute Node에서 구성한다.

/etc/sysconfig/network-scripts/ifcfg-ens34 을 통해 설정 변경

# vi /etc/sysconfig/network-scripts/ifcfg-ens34

[/etc/sysconfig/network-scripts/ifcfg-ens34]

DEVICE=INTERFACE_NAME

TYPE=Ethernet

ONBOOT="yes"

BOOTPROTO="none"

Controller Node Compute Node에서 도메인을 통한 각 노드의 URL 접근이 가능하도록 호스트 이름과 각 노드의 관리용 IP를 매핑 시킨다.

/etc/hosts 을 통해 설정 변경

# vi /etc/hosts

[/etc/hosts]

# controller

1.0.0.61 controller

# compute1

1.0.0.62 compute1

# block1

1.0.0.63 block1

# object1

1.0.0.64 object1

# object2

1.0.0.65 object2

○ 검증

• 모든 노드의 네트워크를 설정한 후 네트워크 통신이 잘되는지 테스트한다.

• 각 노드에서 외부 통신이 잘되는지 확인

# ping -c 4 openstack.org

• 각 노드에서 다른 노드의 도메인으로 통신이 잘되는지 확인

# ping -c 4 compute1

3.1.3 NTP 설정

OpenStack은 여러 노드로 구성되고 각각의 노드는 기본적으로 단말기를 분리하여 구성하는 것을 추천한다. 이때 NTP를 통해 각 단말기의 시간 정보를 동기화하여 보다 정확한 서비스가 가능하도록 하는 것이 좋다.

Controller Node

• 패키지 설치

# yum install -y chrony

/etc/chrony.conf 을 통해 설정 변경

# vi /etc/chrony.conf

[/etc/chrony.conf]

# NTP 서버 설정

# server NTP_SERVER iburst

server 1.kr.pool.ntp.org iburst

server 0.asia.pool.ntp.org iburst

server 2.asia.pool.ntp.org iburst

# 다른 노드가 컨트롤러 노드를 통해 NTP 서비스를 받을 수 있도록 네트워크 접근 허용 설정

# allow [네트워크 대역]

allow 1.0.0.0/24

chronyd.service 가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable chronyd.service

# systemctl start chronyd.service

Compute Node

• 패키지 설치

# yum install -y chrony

/etc/chrony.conf 을 통해 설정 변경

# vi /etc/chrony.conf

[/etc/chrony.conf]

# NTP 서버가 controller를 가리키도록 설정

server controller iburst

chronyd.service 가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable chronyd.service

# systemctl start chronyd.service

3.1.4 OpenStack 패키지 설치

OpenStack Rockey 버전을 사용하기 위해 패키지 설치가 필요하다.

○ 모든 노드

centos-release-openstack-rocky 설치

# yum install -y centos-release-openstack-rocky

yum upgrade를 하여 모든 패키지를 업그레이드

# yum upgrade -y

openstack 클라이언트를 설치

# yum install -y python-openstackclient

openstack-selinux를 설치

# yum install -y openstack-selinux

3.1.5 SQL Database 설정

○ 서비스들의 정보 저장을 위해 데이터베이스를 컨트롤러에 구성해야 한다.

DB MariaDB를 사용한다.

Controller Node

• 패키지 설치

# yum install -y mariadb mariadb-server python2-PyMySQL

/etc/my.cnf.d/openstack.cnf 을 통해 설정 변경

# vi /etc/my.cnf.d/openstack.cnf

[/etc/my.cnf.d/openstack.cnf]

[mysqld]

# my-sql 서비스에 컨트롤러를 제외한 다른 노드가 접근하기 위해 관리용 IP를 할당한다.

# bind-address = [controller의 관리용 IP]

bind-address = 1.0.0.63

# db 기본 설정을 한다.

default-storage-engine = innodb

innodb_file_per_table = on

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8

mariadb.service가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable mariadb.service

# systemctl start mariadb.service

mysql_secure_installation 스크립트를 통해 데이터베이스 암호화 설정을 한다.

# mysql_secure_installation

3.1.6 메시지 큐 설정

○ 서비스 간 상호작용에 사용될 메시지 큐를 컨트롤러 노드에 구성해야 한다.

○ 메시지 큐는 RabbitMQ를 사용한다.

○ 컨트롤러

• 패키지 설치

# yum install -y rabbitmq-server

rabbitmq-server.serivce 가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable rabbitmq-server.service

# systemctl start rabbitmq-server.service

rabbitmq openstack 사용자를 추가한다.

# rabbitmqctl add_user openstack RABBIT_PASS

openstack 사용자의 rabbitmq에 대한 권한을 할당한다. (설정권한, 쓰기권한, 읽기 권한을 모두 할당한다.)

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

3.1.7 Memcached 설정

Identiry 서비스 인증에서 토큰을 캐싱하기 위해 컨트롤러 노드에 구성한다.

Controller Node

• 패키지 설치

# yum install memcached python-memcached

/etc/sysconfig/memcached을 통해 설정 변경

# vi /etc/sysconfig/memcached

[/etc/sysconfig/memcached]

OPTIONS="-l 127.0.0.1,::1,controller"

memcached.service가 부팅 시 시작되도록 등록하고 서비스를 시작한다..

# systemctl enable memcached.service

# systemctl start memcached.service

 

Comments