클라우드/openstack

CentOS 7 에서 Openstack 설치하기 (train 버전, PackStack)

chanstory 2023. 7. 13. 16:52
반응형

 

 

구성환경

CentOS7 으로 VMware 만들어 둔게 있어서 여기에 OpenStack 을 구축해보기로 함

 

처음에 메모리 2GB, 디스크 15GB로 했다가 설치중에 메모리 오류 떠서

증가시키고 다시 구축함

Memory는 6GB 이상으로 해주는 것이 좋을듯함 (타 블로그 참고)

 

 

많은 블로그들을 참고하였는데 다들 방화벽과 NetworkManager를 disable 시켰다.

 

이유는

OpenStack 서비스의 원활한 동작을 위해서다.

1. 방화벽 - 서비스 간 통신 제한으로 인해 서비스 동작이 원활하지 않을 수 있다.

2. NetworkManager - OpenStack은 자체적인 네트워크 인터페이스를 설정하고 관리한다.
                                - NetworkManager가 개입하게되면 예기치 않은 동작이 발생할 수 있다. (서버용도 사용 )

 

 

일단 끄고 진행하자 - 명령어임을 인식하기 위한 앞쪽 특수문자는 제외하겠음 (복사하기 편함)

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl stop firewalld
systemctl disable firewalld

 

내가 참고한 블로그는 rhel 이나 systemd (RA? - 네트워크 접속 사용자 인증 프로토콜) 관련된 불필요한 서비스와 SELINUX를 내려줬다.

 

OpenStack 설치시 충돌이 날 수 있는 요소들이기 때문이라고 한다.

(추후 OpenStack 최신 버전 설치 시 안끄고 진행해보겠음)

 

SELINUX의 경우도 보안 정책을 해제하여 OpenStack과의 호환성 문제를 없애기 위함이다.

systemctl list-unit-files -t service | grep enable | grep rhel | awk '{print $1}' | xargs systemctl stop
systemctl list-unit-files -t service | grep enable | grep rhel | awk '{print $1}' | xargs systemctl disable
systemctl list-unit-files -t service | grep enable | grep systemd | awk '{print $1}' | xargs systemctl stop
systemctl list-unit-files -t service | grep enable | grep systemd | awk '{print $1}' | xargs systemctl disable


vi /etc/sysconfig/selinux
SELINUX=disabled

 

 

소프트 및 하드 리소스에 대한 제한을 설정한다.

- 리소스 사용 관리 및 OpenStack 과 같은 대규모 어플리케이션이 동시에 많은 프로세스 및 파이을 처리 할 수 있도록 도와줌

- 이와같이 리소스 제한을 늘리는 것은 성능 향상과 시스템 안정성을 개선하는 데 도움이 됨

vi /etc/security/limits.conf

*  soft   nproc   65536        // 사용자가 동시에 실행할 수 있는 프로세스 수 제한
*  hard  nproc   65536
*  soft   nofile   65536       // 사용자가 동시에 열 수 있는 파일 수 제한
*  hard  nofile   65536

 

필요한 pkg 설치 

* net-tools => 네트워크 관련 도구를 포함하는 패키지

* chrony => 시간 동기화를 위한 client/server 기능 제공    / NTP(Network Time Protocol) 사용

yum install -y net-tools chrony wget

 

chrony.conf 설정 => 참고한 블로그와 동일하게 진행했다.

vi /etc/chrony.conf 에서
allow 192.168.56.0/24 작성

저장 


systemctl start chronyd
systemctl enable chronyd

 

이후 OpenStack을 설치해보자

 

CentOS7 은 Train 버전 까지만 지원하므로 Train 버전 이하로 설치하자

 

openstack release에 대한 정보는

아래 링크에서 확인했다.
https://releases.openstack.org/

 

OpenStack Releases: OpenStack Releases

OpenStack is developed and released around 6-month cycles. After the initial release, additional stable point releases will be released in each release series. You can find the detail of the various release series here on their series page. Subscribe to th

releases.openstack.org

 

openstack train 버전을 설치하고 packstack 을 설치하자 

 

packstack 이란, Red Hat OpenStack Platform 을 설치하기 위한 자동화 도구이다.

- Puppet 기반

- OpenStack 인프라 구축을 위한 다양한 구성요소를 자동으로 설치하고 설정한다.

 

파이썬은 OpenStack CLI 및 API 도구와 상호작용하므로 일단 설치해주자.

yum install -y centos-release-openstack-train

yum install -y openstack-packstack

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

 

이제 데이터 베이스도 설치해주자

 

필자는 MariaDB를 사용한다.

 

DB는 OpenStack의 구성요소인 Keystone, Glance, Nova 등 서비스에서 데이터베이스로 사용한다.

서비스들이 이미지, 인스턴스, 네트워크 등 데이터를 DB에서 조회하고 저장한다.

 

설치, 실행, 자동실행 등록 해주자

 

yum install mariadb mariadb-server python2-PyMySQL

systemctl enable mariadb.service
systemctl start mariadb.service


mysql_secure_installation

// DB root 비밀번호 등록

아 원래는 secure_installation 으로 DB root 비밀번호를 등록하는데
필자는 안하고 진행했다.. 

오류사항은 아래에 적어두겠다.

 

DB 잘들어가지는지 확인

mysql -uroot -p
// 비밀번호 입력

 

 

이후 적당한 디렉토리로 이동 후

packstack 을 이용해 answer.txt 를 생성해주자

packstack --gen-answer-file answer.txt

실행 후  필자는 아래와 같은 오류를 만났다.

[root@openstackcloud test]# packstack --gen-answer-file answer.txt
Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS or FWaaS services. Geneve will be used as the encapsulation method for tenant networks

위 명령어 실행중 발생된 에러는 아니고 CONFIG_NEUTRON_L2_AGENT 파라미터 값으로 OVN Netron 백엔드를 선택한 것에 대한 메시지 이다.

 

오류 수정해보려다가 ls 쳐보니 answer.txt 가 생성되어 있었다...

 

그리고 위 오류는 GPT 형님이 무시해도 된다고 한다.

 

 

 

answer.txt 파일 수정

타 블로그 참고하여 아래와 같이 수정하였다.

CONFIG_DEFAULT_PASSWORD=openstack  
CONFIG_CINDER_VOLUMES_SIZE=20G
CONFIG_HEAT_INSTALL=y                   # HEAT 서비스 이용 원할 경우
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 # 물리적인 네트워크명 설정: extnet
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth1  # br-ex 브릿지와 실제 물리 네트워크 인터페이스 연결 통로
CONFIG_PROVISION_DEMO=n

openstack 설치 시 br-ex 라는 가상 이더넷 브릿지가 생성된다

이 브릿지를 물리 네트워크와 연결하여 (eth1) OVS를 구성하여 VM들에 접속할 수 있는 네트워크가 구성된다.

 

수정 후 설치를 시작하자 

packstack --answer-file answer.txt

 

필자는 여기서 오류가 많이 났다.

꼭 answer.txt를 생성 및 수정한 디렉토리에서 수정해야함

 

오류를 보자 (ip 같은것들은 그냥 다른 숫자로 대체하겠음)

#오류 1

[root@openstackcloud cent7stack]# packstack --answer-file answer.txt
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20230713-130744-7PuCF3/openstack-setup.log
Parameter CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS failed validation: Given value is not member of allowed values ['logger', 'test', 'linuxbridge', 'openvswitch', 'hyperv', 'ncs', 'arista', 'cisco_nexus', 'mlnx', 'l2population', 'sriovnicswitch', 'ovn']: openswitch

ERROR : Failed handling answer file: Given value is not member of allowed values ['logger', 'test', 'linuxbridge', 'openvswitch', 'hyperv', 'ncs', 'arista', 'cisco_nexus', 'mlnx', 'l2population', 'sriovnicswitch', 'ovn']: openswitch
Please check log file /var/tmp/packstack/20230713-130744-7PuCF3/openstack-setup.log for more information

answer.txt 내에 설정값을 openvswitch 로 적어야 하는데 openswitch로 적었다..

 

 

#오류2

ERROR : Error appeared during Puppet run: 192.xx.xx.xx_controller.pp
Error: /Stage[main]/Ceilometer::Agent::Polling/Service[ceilometer-polling]: Could not evaluate: Cannot allocate memory - fork(2)

puppet 실행중에 나타난 에러다 
Could not evaluate: Cannot allocate memory - fork(2) 를 보니 메모리가 부족하단 얘기같다.

그래서 초반에 메모리 늘려야 한다고 적어두었다.

 

free -g 명령어를 통해 메모리양 확인이 가능하다.

 

#오류3

ERROR : Error appeared during Puppet run: 192.xx.xx.xx_controller.pp
Notice: /Stage[main]/Nova::Db::Sync/Exec[nova-db-sync]/returns: Error: (pymysql.err.OperationalError) (1045, u"Access denied for user 'nova'@'192.xx' (using password: YES)") (Background on this error at: http://sqlalche.me/e/e3q8)
You will find full trace in log /var/tmp/packstack/20230713-132605-2HQQXi/manifests/192.xx.xx.xx3_controller.pp.log
Please check log file /var/tmp/packstack/20230713-132605-2HQQXi/openstack-setup.log for more information
Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.xx.xx.xx. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.xx.xx.xx3/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
You have new mail in /var/spool/mail/root

데이터 베이스 동기화 과정에서 오류가 났다.

 

근데 이때 데이터 베이스를 설치한 적이 없어서 Mariadb를 설치해줬다.

sudo yum install mariadb mariadb-server

sudo systemctl start mariadb
sudo systemctl enable mariadb

 

이후

/etc/my.cnf 파일을 열어 구성을 수정해준다.

또한 answer.txt 파일에서 데이터 베이스 매개변수 관련 설정을 해준다.
(예: CONFIG_MYSQL_INSTALL, CONFIG_MYSQL_HOST, CONFIG_MYSQL_USER, CONFIG_MYSQL_PW

 

 

 

#오류4

ERROR : Error appeared during Puppet run: 172.20.10.13_controller.pp Error: Failed to apply catalog: Could not authenticate You will find full trace in log   ~~~~~~~~ * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.

이런 오류가 계속 났다.

 

Puppet 이 OpenStack 구성을 적용하려고 할 때 인증이 실패했다는건데

난 잘했다고 생각했다..

 

지금 기억이 가물가물한데 아마 answer.txt에 DB 비밀번호가 잘못되어있었나 했다. 수정해주자

 

오류에 대한 로그를 필수적으로 보자! 좀더 빨리 해결할 수 있음

/var/tmp/packstack/ 아래에 ~~~controller.pp.log 이러한 로그들을 확인해보자

/var/tmp/packstack/20230713-133540-JZgCV8/openstack-setup.log 이쪽 로그도 날짜에 맞게 보자

 

 

 

추가로 answer.txt 의 주요 매개변수 는 한번 봐두자

1. CONFIG_KEYSTONE_ADMIN_PW
    => Keystone 관리자(Admin) 계정의 암호를 설정합니다. 이 암호는 OpenStack 관리자로서 다양한 작업을 수행하는 데 사용됩니다.

2. CONFIG_KEYSTONE_DEMO_PW
=> Keystone 데모(Demo) 계정의 암호를 설정합니다. 데모 계정은 일반 사용자를 대표하는 계정으로서 테스트 및 예제 용도로 사용됩니다.

3. CONFIG_CONTROLLER_HOST
=> OpenStack 컨트롤러 노드의 호스트 이름이나 IP 주소를 설정합니다. 이는 OpenStack 컨트롤러 노드에 대한 접근 경로를 정의합니다.

4. CONFIG_COMPUTE_HOSTS
=> Compute 노드(Compute 서비스가 실행되는 호스트)의 호스트 이름이나 IP 주소 목록을 설정합니다. 이는 Compute 노드에 대한 접근 경로를 정의합니다.

5. CONFIG_NETWORK_HOSTS
=> Network 노드(Network 서비스가 실행되는 호스트)의 호스트 이름이나 IP 주소 목록을 설정합니다. 이는 Network 노드에 대한 접근 경로를 정의합니다.

6. CONFIG_USE_EPEL
=> EPEL(Eat-Pray-Love) 저장소 사용 여부를 설정합니다. EPEL 저장소는 CentOS 및 RHEL 운영 체제에 추가 패키지를 제공합니다.

7. CONFIG_USE_NFS
=> NFS(Network File System)를 사용하여 이미지 및 볼륨 저장소를 설정하는지 여부를 설정합니다. NFS를 사용하면 이미지 및 볼륨을 네트워크 공유로 사용할 수 있습니다.

8. CONFIG_NTP_SERVERS
=> 시간 동기화를 위해 사용할 NTP 서버의 목록을 설정합니다. NTP 서버는 시간 동기화를 제공하여 OpenStack 컴포넌트 간의 일치된 시간을 유지합니다.

 

오류 5

Enter current password for root (enter for none): 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

MariaDB에서 root 사용자의 액세스 권한 문제를 해결하자

 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
// 위와 같은 명령을 사용하여 root 사용자에게 필요한 권한을 부여


SHOW GRANTS FOR 'root'@'localhost
// 명령어를 통해 root 사용자 권한 적용을 확인한다.

 

오류 6

Warning: Scope(Oslo::Db[aodh_config]): The idle_timeout parameter is deprecated. Please use connection_recycle_time instead.
Notice: Compiled catalog for openstackcloud.example.com in environment production in 12.19 seconds
Notice: /Stage[main]/Neutron::Server/Neutron_config[service_providers/service_provider]/ensure: created
Notice: /Stage[main]/Neutron::Deps/Anchor[neutron::config::end]: Triggered 'refresh' from 1 event

이러한 오류들이 출력됐는데

keystone이 설치되어있지 않았고 실행되고 있지도 않다고했다..

sudo yum install openstack-keystone
sudo systemctl start openstack-keystone
systemctl status openstack-keystone

근데 설치되어있음!!

 

이건뭔가.. 하고있다가  keystone 패키지 설치 시 오류가 있었나 싶어서 

삭제 후 재설치를 하였다.

sudo yum remove openstack-keystone
sudo yum install openstack-keystone

 

 

이외에도 많은 오류들이 있었지만

GPT 형님도 같이 해결해 나갔다.

 

 

대충 잘 설치 됐다는 내용이다.

 

아래 출력에서 대시보드 주소에 들어가 answer.txt 에 적용되어있는 admin id 와 password 를 입력하여 접속해보자

 

 

이제 openstack 으로 Nova (AWS의 EC2와 비슷한 기능) 를 만들어 보자

 

 

 

참고 블로그

https://velog.io/@h0zer0/OpenStack-All-In-One-%EC%84%A4%EC%B9%98%EA%B0%80%EC%9D%B4%EB%93%9CPackStack

 

OpenStack All-In-One 설치가이드(PackStack)

환경 구성 네트워크/보안 구성 CentOS에서 기본적으로 구성되는 Firewall 및 Selinux를 Off 합니다. 스택에 설치되는 호스트 명 설정 및 패키지를 업데이트 합니다. 시스템 재부팅 후 스택 패키지를 설

velog.io

https://atl.kr/dokuwiki/doku.php/centos_7_%EC%97%90_openstack_train_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_-_1._%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

 

centos_7_에_openstack_train_버전_설치_-_1._환경설정하기 [AllThatLinux!]

Openstack Ussuri 버전은 CentOS/RHEL 8 버전부터 지원한다. Train 버전은 7버전을 지원하는 Openstack 최신버전 입니다. [root@controller ~]# yum install centos-release-openstack-train [root@controller ~]# yum upgrade [root@controller

atl.kr

https://m.blog.naver.com/redbaronblue/221785244509

 

PackStack 사용하여 OpenStack 설치 - CentOS 7 에 VirtualBox 환경

취미삼아 R을 하다가 요즘엔 흥미가 많이 떨어졌다...ㅋ 최근엔 요즘 대세인 Cloud 와 관련하여 OpenSt...

blog.naver.com

 

반응형