Openstack #1-6 Etcd

Openstack #1 개요
Openstack #1-1 선행작업
Openstack #1-2 MariaDB(MySQL) 설치
Openstack #1-3 Chrony 설정
Openstack #1-4 MessageQueue(RabbitMQ)
Openstack #1-5 Memcached
Openstack #1-6 Etcd

etcd(잇시디)는 머신의 분산된 시스템 또는 클러스터의 설정 공유, 서비스 검색 및 스케줄러 조정을 위한 일관된 오픈소스, 분산형 키-값(key-value) 저장소이다.

컨트롤러 노드에서 수행한다.

패키지 설치

[root@openstack1:~]#yum install -y etcd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
updates                                                                                                                                                                                                                     | 2.9 kB  00:00:00
Package etcd-3.3.11-2.el7.centos.x86_64 already installed and latest version
Nothing to do

설정

[root@openstack1:~]#vi /etc/etcd/etcd.conf
 # 모두 지우고 아래 내용을 붙여넣는다.
 # IP 주소는 각자 상황에 맞게 변경 해줘야 한다.
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
 # peer 연결을 받을 IP
ETCD_LISTEN_PEER_URLS="http://192.168.103.146:2380"
 # 클라이언트 연결을 받을 IP
ETCD_LISTEN_CLIENT_URLS="http://192.168.103.146:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.103.146:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.103.146:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.103.146:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"

서비스 등록 및 시작

[root@openstack1:~]#systemctl enable etcd
[root@openstack1:~]#systemctl start etcd

Openstack #1-5 Memcached

Openstack #1 개요
Openstack #1-1 선행작업
Openstack #1-2 MariaDB(MySQL) 설치
Openstack #1-3 Chrony 설정
Openstack #1-4 MessageQueue(RabbitMQ)
Openstack #1-5 Memcached
Openstack #1-6 Etcd

Memcached (멤캐시디, 멤캐시트)는 범용 분산 캐시 시스템이다. 외부 데이터 소스(예: 데이터베이스나 API)의 읽기 횟수를 줄이기 위해 데이터와 객체들을 RAM에 캐시 처리함으로써 동적 데이터베이스 드리븐 웹사이트의 속도를 높이기 위해 종종 사용된다. Memcached는 BSD 허가서로 라이선스되는 자유-오픈 소스 소프트웨어이다.

controller 노드에서 수행한다.

패키지 설치

[root@openstack1:~]#yum -y install memcached python-memcached
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
Package memcached-1.5.6-1.el7.x86_64 already installed and latest version
Package python-memcached-1.58-1.el7.noarch already installed and latest version
Nothing to do

설정 변경

# /etc/sysconfig/memcached
 # OPTIONS="-l 127.0.0.1,::1" 부분을 수정한다.
OPTIONS="-l 127.0.0.1,::1,controller" 

서비스 등록 및 시작

[root@openstack1:~]#systemctl enable memcached.service
[root@openstack1:~]#systemctl start memcached.service

Openstack #1-4 MessageQueue(RabbitMQ)

Openstack #1 개요
Openstack #1-1 선행작업
Openstack #1-2 MariaDB(MySQL) 설치
Openstack #1-3 Chrony 설정
Openstack #1-4 MessageQueue(RabbitMQ)
Openstack #1-5 Memcached
Openstack #1-6 Etcd

RabbitMQ는 오픈 소스 메시지 브로커 소프트웨어(메시지 지향 미들웨어)로서, AMQP를 구현하였으며 그 이후로 STOMP ,MQTT 등의 프로토콜을 지원하기 위해 플러그인 구조와 함께 확장되고 있다. 메시지를 생산하는 생산자(Producer)가 메시지를 큐에 저장해 두면, 메시지를 수신하는 소비자(Consumer)가 메시지를 가져와 처리하는 Publish/Subscribe 방식의 메시지 전달 브로커이다.

rabbitmq 서버는 controller 노드에만 설치한다.

패키지 설치

[root@openstack1:~]#yum -y install rabbitmq-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
Package rabbitmq-server-3.6.16-1.el7.noarch already installed and latest version
Nothing to do

서비스 등록 및 구동

[root@openstack1:~]#systemctl enable rabbitmq-server.service
[root@openstack1:~]#systemctl start rabbitmq-server.service
 # 또는
[root@openstack1:~]#chkconfig rabbitmq-server on
알림: 'systemctl enable rabbitmq-server.service'에 요청을 전송하고 있습니다.
[root@openstack1:~]#service rabbitmq-server start
Redirecting to /bin/systemctl start rabbitmq-server.service

사용자(계정) 생성

# rabbitmqctl add_user ACCOUNT PASSWORD
[root@openstack1:~]# rabbitmqctl add_user openstack openstack
Creating user "openstack"
 # 기존 사용자를 삭제하려면 add_user 대신 delete_user명령을 사용하면 된다.

권한 부여

[root@openstack1:~]#rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

Openstack #1-3 Chrony 설정

Openstack #1 개요
Openstack #1-1 선행작업
Openstack #1-2 MariaDB(MySQL) 설치
Openstack #1-3 Chrony 설정
Openstack #1-4 MessageQueue(RabbitMQ)
Openstack #1-5 Memcached
Openstack #1-6 Etcd

Chrony는 NTP(Network Time Protocol) 을 구현한 server/client 로 기존 리눅스의 ntpd 를 대체로 CentOS 8부터는 NTP가 아니라 chrony가 기본으로 동작한다.

노드간 시간을 동일하게 맞추기 위한 설정이다. 1 hadoop eco system 등 여러 노드를 하나로 묶어 클러스터링 하는 경우 시간이 다를 경우 예기치 못한 문제가 발생할 수있다. 2특히 Apache kudu 의 경우는 ntp 설정이 돼있지 않으면 아예 동작하지 않는다. 기존 NTP서버를 이용하면 된다.

패키지는 모든 노드에 설치 해야 하되 서버가 될 서버와 클라이언트의 설정을 다르게 해줘야 한다.

패키지 설치

[root@openstack1:~]#  yum -y install chrony
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
Package chrony-3.4-1.el7.x86_64 already installed and latest version
Nothing to do

설정

서버와 클라이언트 모두 같은 패키지지만 설정 내용으로 구분된다.

서버 설정

[root@openstack1:~]#  vi /etc/chrony.conf

 # 모두 지우고 아래 내용을 붙여넣기 한다.
 # NTP 서버 주소를 확인한다.
server 192.168.4.254 iburst
server 3.centos.pool.ntp.org iburst

driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

 # NTP서버가 될 노드는 반드시 allow 로 바꿔줘야 한다.
allow 192.168.0.0/16

logdir /var/log/chrony

클라이언트 설정

[root@openstack1:~]#  vi /etc/chrony.conf

 # 모두 지우고 아래 내용을 붙여넣기 한다.
 # NTP 서버 주소를 확인한다. chrony 서버 주소를 추가한다.
server openstack1 iburst
server 3.centos.pool.ntp.org iburst

driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

 # NTP서버가 아니므로 주석처리 한다.
#allow 192.168.0.0/16

logdir /var/log/chrony

서비스 등록 및 구동

모든 노드에서 수행한다. 서버 시작 후 클라이언트 노드도 서비스를 시작한다.

[root@openstack1:~]#  service chronyd restart
Redirecting to /bin/systemctl restart chronyd.service
[root@openstack1:~]#chkconfig chronyd on
알림: 'systemctl enable chronyd.service'에 요청을 전송하고 있습니다.

구동 확인

 # 서버에서 수행한 결과
[root@openstack1:~]#  chronyc sources
210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.4.254                 4   6    37    32  +7332ns[  -24ms] +/-   13ms
^? ec2-13-209-84-50.ap-nort>     0   7     0     -     +0ns[   +0ns] +/-    0ns

 # 클라이언트에서 수행한 결과
 # chrony 서버 IP가 출력 되는 것을 확인할 수 있다. 
 # ^* 호스트(IP)가 출력되면 된다.
[root@openstack2:~]#chronyc sources
210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ openstack1                    5   6   377    31    -37ms[  -33ms] +/-   55ms
^* 192.168.4.254                 4   6   377    50    -59ms[  -54ms] +/-   12ms

Packstack #1 사전 작업 및 패키지 설치

※ 이 포스트는 실제 설치및 설정을 수행하면서 작성하고 있습니다. 계속 업데이트 됩니다.

Openstack #1 개요

CentOS 7 에 install 하는것으로 가정한다.
CentOS 8 Linux 설치를 참고하여 최소설치 모드로 리눅스를 설치한다.
네트워크 설정을 변경한다. (NIC는 2개 이상이 필요하다. 외부 연결용, 노드간 통신 용)
root 권한으로 해야 하는 작업이 많다. root 패스워드를 설정하거나, SuDo : SuperUser Do를 참고하여 sudo 사용 설정을 한다.
클러스터간 설치 및 통신 용의성 확보를 위해 SSH설정을 참고하여 키를 등록한다.
openstack train 기준으로 진행한다.



네트워크설정, ssh 키 설정 등이 완료 됐으면 서비스 설정을 변경한다.
openstack 클러스터의 구성 노드 모두에서 작업 해줘야 한다.

 # 노드간 통신의 용의성을 위해 방화벽 서비스를 종료한다.
[HOSTNAME:/haedong]$ sudo systemctl disable firewalld
[HOSTNAME:/haedong]$ sudo service firewalld stop

 # Network 관리 서비스인데 개인적으로 아주 고약한 녀석이다. 
 # 아무리 설정을 바꿔도 제 멋대로 설정을 덮어 써버리는 경우가 허다하므로 종료한다.
 # 어차피 네트워크는 별도로 관리해야 한다. 
[HOSTNAME:/haedong]$ sudo systemctl disable NetworkManager
[HOSTNAME:/haedong]$ sudo service NetworkManager stop

 # 만약을 위해 서비스를 재시작하고, 항상 서비스가 구동도록 설정한다.
[HOSTNAME:/haedong]$ sudo systemctl enable network
[HOSTNAME:/haedong]$ sudo service network restart

packstack1RDO project의 puppet module을 이용한 CentOS 및 Redhat linux 용 openstack 자동 배포 유틸리티이다. 관련 리포지터리 및 패키지 설치

 # 만약 epel-release 리포지터리가 추가되어있다면 삭제한다.(혹은 disable로 변경해도 된다.)
[HOSTNAME:/home/haedong]$ sudo rm /etc/yum.repos.d/epel
rm: remove 일반 파일 `epel-testing.repo'? y
rm: remove 일반 파일 `epel.repo'? y
 # packstack repo 설치
[HOSTNAME:/home/haedong:]$ sudo yum install -y https://www.rdoproject.org/repos/rdo-release.rpm
[sudo] haedong의 암호:
Loaded plugins: fastestmirror, langpacks
rdo-release.rpm                                                                                                                                               | 6.7 kB  00:00:00
Examining /var/tmp/yum-root-URQvAZ/rdo-release.rpm: rdo-release-train-1.noarch
Marking /var/tmp/yum-root-URQvAZ/rdo-release.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package rdo-release.noarch 0:train-1 will be installed
--> Finished Dependency Resolution
base/7/x86_64                                                                                                                                                 | 3.6 kB  00:00:00
Dependencies Resolved
=====================================================================================================================================================================================
 Package                                      Arch                                    Version                                    Repository                                     Size
=====================================================================================================================================================================================
Installing:
 rdo-release                                  noarch                                  train-1                                    /rdo-release                                  3.1 k
Transaction Summary
=====================================================================================================================================================================================
Install  1 Package

Total size: 3.1 k
Installed size: 3.1 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : rdo-release-train-1.noarch                                                                                                                                        1/1
  Verifying  : rdo-release-train-1.noarch                                                                                                                                        1/1
Installed:
  rdo-release.noarch 0:train-1
Complete!
 # openstack train 패키지 설치
[HOSTNAME:/home/haedong:]$ sudo yum install -y centos-release-openstack-train
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * openstack-train: mirror.kakao.com
 * rdo-qemu-ev: mirror.kakao.com
 * updates: mirror.kakao.com
openstack-train                                                                                                                                               | 3.0 kB  00:00:00
rdo-qemu-ev                                                                                                                                                   | 3.0 kB  00:00:00
(1/2): rdo-qemu-ev/x86_64/primary_db                                                                                                                          |  57 kB  00:00:00
(2/2): openstack-train/x86_64/primary_db                                                                                                                      | 1.1 MB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package centos-release-openstack-train.noarch 0:1-1.el7.centos will be installed
--> Processing Dependency: centos-release-qemu-ev for package: centos-release-openstack-train-1-1.el7.centos.noarch
--> Processing Dependency: centos-release-ceph-nautilus for package: centos-release-openstack-train-1-1.el7.centos.noarch
--> Running transaction check
---> Package centos-release-ceph-nautilus.noarch 0:1.2-2.el7.centos will be installed
--> Processing Dependency: centos-release >= 7-5.1804.el7.centos.2 for package: centos-release-ceph-nautilus-1.2-2.el7.centos.noarch
--> Processing Dependency: centos-release-storage-common for package: centos-release-ceph-nautilus-1.2-2.el7.centos.noarch
--> Processing Dependency: centos-release-nfs-ganesha28 for package: centos-release-ceph-nautilus-1.2-2.el7.centos.noarch
---> Package centos-release-qemu-ev.noarch 0:1.0-4.el7.centos will be installed
--> Processing Dependency: centos-release-virt-common for package: centos-release-qemu-ev-1.0-4.el7.centos.noarch
--> Running transaction check
---> Package centos-release.x86_64 0:7-5.1804.el7.centos will be updated
---> Package centos-release.x86_64 0:7-9.2009.1.el7.centos will be an update
---> Package centos-release-nfs-ganesha28.noarch 0:1.0-3.el7.centos will be installed
---> Package centos-release-storage-common.noarch 0:2-2.el7.centos will be installed
---> Package centos-release-virt-common.noarch 0:1-1.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=====================================================================================================================================================================================
 Package                                                  Arch                             Version                                           Repository                         Size
=====================================================================================================================================================================================
Installing:
 centos-release-openstack-train                           noarch                           1-1.el7.centos                                    extras                            5.3 k
Installing for dependencies:
 centos-release-ceph-nautilus                             noarch                           1.2-2.el7.centos                                  extras                            5.1 k
 centos-release-nfs-ganesha28                             noarch                           1.0-3.el7.centos                                  extras                            4.3 k
 centos-release-qemu-ev                                   noarch                           1.0-4.el7.centos                                  extras                             11 k
 centos-release-storage-common                            noarch                           2-2.el7.centos                                    extras                            5.1 k
 centos-release-virt-common                               noarch                           1-1.el7.centos                                    extras                            4.5 k
Updating for dependencies:
 centos-release                                           x86_64                           7-9.2009.1.el7.centos                             updates                            27 k
Transaction Summary
=====================================================================================================================================================================================
Install  1 Package  (+5 Dependent packages)
Upgrade             ( 1 Dependent package)
Total download size: 62 k
Downloading packages:
No Presto metadata available for updates
(1/7): centos-release-7-9.2009.1.el7.centos.x86_64.rpm                                                                                                        |  27 kB  00:00:00
(2/7): centos-release-ceph-nautilus-1.2-2.el7.centos.noarch.rpm                                                                                               | 5.1 kB  00:00:00
(3/7): centos-release-nfs-ganesha28-1.0-3.el7.centos.noarch.rpm                                                                                               | 4.3 kB  00:00:00
(4/7): centos-release-qemu-ev-1.0-4.el7.centos.noarch.rpm                                                                                                     |  11 kB  00:00:00
(5/7): centos-release-storage-common-2-2.el7.centos.noarch.rpm                                                                                                | 5.1 kB  00:00:00
(6/7): centos-release-openstack-train-1-1.el7.centos.noarch.rpm                                                                                               | 5.3 kB  00:00:00
(7/7): centos-release-virt-common-1-1.el7.centos.noarch.rpm                                                                                                   | 4.5 kB  00:00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                650 kB/s |  62 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : centos-release-7-9.2009.1.el7.centos.x86_64                                                                                                                       1/8
warning: /etc/yum/vars/contentdir created as /etc/yum/vars/contentdir.rpmnew
  Installing : centos-release-storage-common-2-2.el7.centos.noarch                                                                                                               2/8
  Installing : centos-release-nfs-ganesha28-1.0-3.el7.centos.noarch                                                                                                              3/8
  Installing : centos-release-ceph-nautilus-1.2-2.el7.centos.noarch                                                                                                              4/8
  Installing : centos-release-virt-common-1-1.el7.centos.noarch                                                                                                                  5/8
  Installing : centos-release-qemu-ev-1.0-4.el7.centos.noarch                                                                                                                    6/8
  Installing : centos-release-openstack-train-1-1.el7.centos.noarch                                                                                                              7/8
  Cleanup    : centos-release-7-5.1804.el7.centos.x86_64                                                                                                                         8/8
  Verifying  : centos-release-openstack-train-1-1.el7.centos.noarch                                                                                                              1/8
  Verifying  : centos-release-nfs-ganesha28-1.0-3.el7.centos.noarch                                                                                                              2/8
  Verifying  : centos-release-7-9.2009.1.el7.centos.x86_64                                                                                                                       3/8
  Verifying  : centos-release-ceph-nautilus-1.2-2.el7.centos.noarch                                                                                                              4/8
  Verifying  : centos-release-virt-common-1-1.el7.centos.noarch                                                                                                                  5/8
  Verifying  : centos-release-storage-common-2-2.el7.centos.noarch                                                                                                               6/8
  Verifying  : centos-release-qemu-ev-1.0-4.el7.centos.noarch                                                                                                                    7/8
  Verifying  : centos-release-7-5.1804.el7.centos.x86_64                                                                                                                         8/8
Installed:
  centos-release-openstack-train.noarch 0:1-1.el7.centos
Dependency Installed:
  centos-release-ceph-nautilus.noarch 0:1.2-2.el7.centos        centos-release-nfs-ganesha28.noarch 0:1.0-3.el7.centos        centos-release-qemu-ev.noarch 0:1.0-4.el7.centos
  centos-release-storage-common.noarch 0:2-2.el7.centos         centos-release-virt-common.noarch 0:1-1.el7.centos
Dependency Updated:
  centos-release.x86_64 0:7-9.2009.1.el7.centos

Complete!
 # 설치 된 패키지 업데이트.
[HOSTNAME:/home/haedong:]$ sudo yum -y update
Loaded plugins: fastestmirror, langpacks
Repository rdo-trunk-train-tested is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * centos-ceph-nautilus: mirror.kakao.com
 * centos-nfs-ganesha28: mirror.kakao.com
 * centos-openstack-train: mirror.kakao.com
 * centos-qemu-ev: mirror.kakao.com
 * extras: mirror.kakao.com
 * openstack-train: mirror.kakao.com
 * rdo-qemu-ev: mirror.kakao.com
 * updates: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package GeoIP.x86_64 0:1.5.0-11.el7 will be updated
---> Package GeoIP.x86_64 0:1.5.0-14.el7 will be an update
--> Processing Dependency: geoipupdate for package: GeoIP-1.5.0-14.el7.x86_64
---> Package LibRaw.x86_64 0:0.14.8-5.el7.20120830git98d925 will be updated
---> Package LibRaw.x86_64 0:0.19.4-1.el7 will be an update
---> Package ModemManager.x86_64 0:1.6.10-1.el7 will be updated
---> Package ModemManager.x86_64 0:1.6.10-4.el7 will be an update
---> Package ModemManager-glib.x86_64 0:1.6.10-1.el7 will be updated
---> Package ModemManager-glib.x86_64 0:1.6.10-4.el7 will be an update
---> Package NetworkManager.x86_64 1:1.10.2-13.el7 will be updated
---> Package NetworkManager.x86_64 1:1.18.8-2.el7_9 will be an update
---> Package NetworkManager-adsl.x86_64 1:1.10.2-13.el7 will be updated
---> Package NetworkManager-adsl.x86_64 1:1.18.8-2.el7_9 will be an update
---> Package NetworkManager-glib.x86_64 1:1.10.2-13.el7 will be updated
---> Package NetworkManager-glib.x86_64 1:1.18.8-2.el7_9 will be an update
---> Package NetworkManager-libnm.x86_64 1:1.10.2-13.el7 will be updated
---> Package NetworkManager-libnm.x86_64 1:1.18.8-2.el7_9 will be an update
---> Package NetworkManager-ppp.x86_64 1:1.10.2-13.el7 will be updated
---> Package NetworkManager-ppp.x86_64 1:1.18.8-2.el7_9 will be an update
--> Running transaction check
...중략...
---> Package mokutil.x86_64 0:15-8.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=====================================================================================================================================================================================
 Package                                                 Arch                     Version                                             Repository                                Size
=====================================================================================================================================================================================
Installing:
 freerdp-libs                                            x86_64                   2.1.1-2.el7                                         base                                     851 k
     replacing  freerdp-plugins.x86_64 1.0.2-15.el7
 gnome-dictionary                                        x86_64                   3.26.1-2.el7                                        base                                     642 k
     replacing  gnome-dictionary-libs.x86_64 3.20.0-1.el7
 gnome-shell                                             x86_64                   3.28.3-32.el7                                       updates                                  2.1 M
     replacing  caribou.x86_64 0.4.21-1.el7
     replacing  caribou-gtk2-module.x86_64 0.4.21-1.el7
     replacing  caribou-gtk3-module.x86_64 0.4.21-1.el7
     replacing  python2-caribou.noarch 0.4.21-1.el7
 xorg-x11-xauth                                          x86_64                   1:1.0.9-1.el7                                       base                                      30 k
 xorg-x11-xinit                                          x86_64                   1.3.4-2.el7                                         base                                      58 k
 xorg-x11-xkb-utils                                      x86_64                   7.7-14.el7                                          base                                     103 k
...중략...
Transaction Summary
=====================================================================================================================================================================================
Install   36 Packages (+95 Dependent packages)
Upgrade  940 Packages

Total download size: 1.1 G
Downloading packages:
No Presto metadata available for centos-openstack-train
No Presto metadata available for openstack-train
No Presto metadata available for base
No Presto metadata available for updates
No Presto metadata available for centos-ceph-nautilus
(1/1071): GeoIP-1.5.0-14.el7.x86_64.rpm                                                                                                                       | 1.5 MB  00:00:00
(2/1071): LibRaw-0.19.4-1.el7.x86_64.rpm                                                                                                                      | 308 kB  00:00:00
(3/1071): ModemManager-1.6.10-4.el7.x86_64.rpm                                                                                                                | 738 kB  00:00:00
(4/1071): ModemManager-glib-1.6.10-4.el7.x86_64.rpm                                                                                                           | 232 kB  00:00:00
(5/1071): NetworkManager-adsl-1.18.8-2.el7_9.x86_64.rpm                                                                                                       | 163 kB  00:00:00
(6/1071): NetworkManager-glib-1.18.8-2.el7_9.x86_64.rpm                                                                                                       | 1.5 MB  00:00:00
(7/1071): NetworkManager-libnm-1.18.8-2.el7_9.x86_64.rpm                                                                                                      | 1.7 MB  00:00:00
...중략...
(1068/1071): yum-utils-1.1.31-54.el7_8.noarch.rpm                                                                                                             | 122 kB  00:00:00
(1069/1071): zlib-1.2.7-18.el7.x86_64.rpm                                                                                                                     |  90 kB  00:00:00
(1070/1071): zlib-devel-1.2.7-18.el7.x86_64.rpm                                                                                                               |  50 kB  00:00:00
(1071/1071): zenity-3.28.1-1.el7.x86_64.rpm                                                                                                                   | 4.0 MB  00:00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                 46 MB/s | 1.1 GB  00:00:25
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
Importing GPG key 0xE451E5B5:
 Userid     : "CentOS Storage SIG (http://wiki.centos.org/SpecialInterestGroup/Storage) <security@centos.org>"
 Fingerprint: 7412 9c0b 173b 071a 3775 951a d4a2 e50b e451 e5b5
 Package    : centos-release-storage-common-2-2.el7.centos.noarch (@extras)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
...중략...
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : libgcc-4.8.5-44.el7.x86_64                                                                                                                                     1/2055
  Installing : urw-base35-fonts-common-20170801-10.el7.noarch                                                                                                                 2/2055
  Installing : xorg-x11-proto-devel-2018.4-1.el7.noarch                                                                                                                       3/2055
...중략...
  Verifying  : 10:qemu-kvm-1.5.3-156.el7.x86_64                                                                                                                            2053/2055
  Verifying  : python-dmidecode-3.12.2-2.el7.x86_64                                                                                                                        2054/2055
  Verifying  : freerdp-1.0.2-15.el7.x86_64                                                                                                                                 2055/2055
Installed:
  freerdp-libs.x86_64 0:2.1.1-2.el7                             gnome-dictionary.x86_64 0:3.26.1-2.el7                  gnome-shell.x86_64 0:3.28.3-32.el7
  grub2.x86_64 1:2.02-0.86.el7.centos                           grub2-tools.x86_64 1:2.02-0.86.el7.centos               grub2-tools-extra.x86_64 1:2.02-0.86.el7.centos
...중략...
  qemu-img.x86_64 10:1.5.3-156.el7                         qemu-kvm.x86_64 10:1.5.3-156.el7                               qemu-kvm-common.x86_64 10:1.5.3-156.el7
  sip-macros.x86_64 0:4.14.6-4.el7                         urw-fonts.noarch 0:2.4-16.el7                                  webkitgtk4-plugin-process-gtk2.x86_64 0:2.16.6-6.el7

Complete!
[HOSTNAME:/home/haedong:]$ sudo yum install -y openstack-packstack
Loaded plugins: fastestmirror, langpacks
Repository rdo-trunk-train-tested is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package openstack-packstack.noarch 1:15.0.1-1.el7 will be installed
--> Processing Dependency: openstack-packstack-puppet = 1:15.0.1-1.el7 for package: 1:openstack-packstack-15.0.1-1.el7.noarch
--> Processing Dependency: python-docutils for package: 1:openstack-packstack-15.0.1-1.el7.noarch
--> Processing Dependency: python2-pbr for package: 1:openstack-packstack-15.0.1-1.el7.noarch
--> Running transaction check
---> Package openstack-packstack-puppet.noarch 1:15.0.1-1.el7 will be installed
--> Processing Dependency: puppet-aodh for package: 1:openstack-packstack-puppet-15.0.1-1.el7.noarch
--> Processing Dependency: puppet-apache for package: 1:openstack-packstack-puppet-15.0.1-1.el7.noarch
...중략...
  Verifying  : 1:openstack-packstack-15.0.1-1.el7.noarch                                                                                                                       76/78
  Verifying  : python2-pbr-5.1.2-2.el7.noarch                                                                                                                                  77/78
  Verifying  : puppet-cinder-15.4.0-1.el7.noarch                                                                                                                               78/78
Installed:
  openstack-packstack.noarch 1:15.0.1-1.el7
Dependency Installed:
  boost159-atomic.x86_64 0:1.59.0-2.el7.1                 boost159-chrono.x86_64 0:1.59.0-2.el7.1                      boost159-date-time.x86_64 0:1.59.0-2.el7.1
...중략...
  ruby-facter.x86_64 1:3.9.3-7.el7                        ruby-shadow.x86_64 0:1.4.1-23.el7                            rubygem-pathspec.noarch 0:0.2.1-3.el7
  rubygem-rgen.noarch 0:0.6.6-2.el7                       yaml-cpp.x86_64 0:0.5.1-6.el7
Complete!










Openstack #1 개요

※ 이 포스트는 실제 설치및 설정을 수행하면서 작성하고 있습니다. 계속 업데이트 됩니다.

Openstack #1 개요
Openstack #1-1 선행작업
Openstack #1-2 MariaDB(MySQL) 설치
Openstack #1-3 Chrony 설정
Openstack #1-4 MessageQueue(RabbitMQ)
Openstack #1-5 Memcached
Openstack #1-6 Etcd

오픈스택(OpenStack)은 IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트이다. 2012년 창설된 비영리 단체인 OpenStack Foundation에서 유지, 보수하고 있으며 아파치 라이선스하에 배포된다.
AMD, 인텔, 캐노니컬, 수세 리눅스, 레드햇, 시스코 시스템즈, 델, HP, IBM, NEC, VM웨어, 야후! 등 150개 이상의 회사가 이 프로젝트에 참가하고 있으며, 주로 리눅스 기반으로 운용과 개발이 이루어진다.
프로세싱, 저장공간, 네트워킹의 가용자원을 제어하는 목적의 여러 개의 하위 프로젝트로 이루어져 있다. 대시 보드 프로젝트는 다른 하위 프로젝트의 운영 제어를 웹 인터페이스를 통해 담당한다.
오픈스택은 열린 설계와 개발을 지향한다. 커뮤니티는 6개월의 릴리즈 사이클로 개발을 진행하고 있다. 매 사이클의 기획단계에서는 오픈스택 디자인 서밋(OpenStack Design Summit)을 개최하여, 개발자 작업을 지원하고, 로드맵을 설정하고 있다.

2010년 7월 랙스페이스(Rackspace)사와 미국 항공우주국이 오픈스택 오픈 소스 프로젝트를 시작하였다. 오픈스택은 일반적인 서버에서 클라우드 컴퓨팅 서비스를 생성하고 실행할 수 있도록 해준다. 첫 번째 릴리즈 (코드명 Austin)는 프로젝트 시작 4개월 이후에 공식 릴리스되었고, 이후 공식 버전은 6개월마다 릴리스된다. 처음에는 미국 항공우주국의 네불라 플랫폼과 랙스페이스의 클라우드 파일 플랫폼의 소스를 기반으로 하였다. 오픈스택은 우분투와 레드햇 배포판에 포함되었다. 1위키백과에서 발췌

아주 쉽게 얘기하자면 AWS, AZURE, GCP 등에서 제공하는 클라우드 서비스 플랫폼 자체다.
여러 컴퓨터를 엮어 한 곳에서 관리되는 가상머신 호스트 정도로 이해 해도되겠다.
IaaS (Infrastructure as a Service2서비스로서의 인프라스트럭처: 서버, 스토리지, 네트워크를 필요에 따라 인프라 자원을 사용할 수 있게 클라우드 서비스를 제공하는 형태이다. 대표적인 기술로는 서버 가상화, 데스크톱 가상화 등이 있다. 아마존 웹 서비스, 마이크로소프트 애저, 구글 클라우드 플랫폼, 네이버 클라우드 플랫폼, Esxi, citrix Xen server 등) 플랫폼이다.

왜 필요한가? 에 대해선 이렇게 생각할 수 있겠다. IPv4체계의 IP부족 해결을 위해 CIDR을 사용하고, 대량의 데이터 처리를 위해 hadoop(MapReduce)를 사용하는 것 처럼.
CIDR의 경우는 원래 있던 네트워크 자원을 잘게 쪼개서 쓰는 개념이다. 3무조건 10개 들이 묶음으로 사야 했던 것을 5개들이 3개들이 2개 들이로 묶어서 파는 느낌 즉, 성능 좋은 컴퓨터가 열대 있는데 평소에는 이 컴퓨터 한대의 자원 10%밖에 안되는 작업을 10개 각각 돌리다보니 총 자원이 90%가 놀고 있는 것이 아닌가? 그럼 이걸 가상머신으로 쪼개서 써보자. 헌데 10대를 관리하기 힘드니까 10개를 하나로 묶어서 하나처럼 만든다음 이 안에서 가상머신을 만들어 써보자. 정도로 생각해볼 수 있겠다.

오픈스택은 구성 요소별로 다양한 코드 이름이 있는 모듈 방식의 아키텍처를 가지고 있다.
돌려 말하면 완전한 오픈스택 서비스를 위해서는 아래 모듈을 모두 설치 해야 한다는 말인가!!? 하고 질문 할 수 있지만 세상은 넓고 똑똑한 사람은 많다. Packstack이나, Devstack 등을 이용하면 (상대적으로) 쉽게 구성을 할 수 있다.

Nova : Coumpute (Hyperviser, 가상 서비스 엔진)
오픈스택 컴퓨트 (Nova)는 IaaS 시스템의 주가 되는 부분인 클라우드 컴퓨팅 패브릭 컨트롤러(fabric controller)이다.
컴퓨터 자원의 풀을 관리하고 자동화하도록 설계되어 있으며 베어 메탈, 고성능 컴퓨팅(HPC) 구성뿐 아니라 널리 이용 가능한 가상화 기술들과 함께 동작할 수 있다.
하이퍼바이저 기술(가상 머신 모니터)로서 KVM, VM웨어, 젠 중 하나를 선택할 수 있으며, 여기에 하이퍼-V 및 LXC와 같은 리눅스 컨테이너 기술을 함께 사용할 수 있다.

컴퓨트의 아키텍처는 어떠한 사유 하드웨어 및 소프트웨어 요구 사항 없이 표준 하드웨어 위에서 수평적 확장을 하기 위해 설계되어 있으며 레거시 시스템들과 서드파티 기술들과 연동하는 기능을 제공한다.

종단 간 성능을 모니터링하려면 Nova, Keystone, Neutron, Cinder, Swift 등의 서비스로부터 메트릭을 추적하는 것뿐 아니라 메시지 전달을 위해 오픈스택 서비스들이 사용하는 RabbitMQ의 모니터링이 필요하다.

Neutron
오픈스택 네트워킹(Neutron)은 네트워크와 IP 주소들을 관리하기 위한 시스템이다.
오픈스택 네트워킹은 네트워크가 병목 현상에 처하지 않도록 보증하며 심지어는 네트워크 구성을 통해서 사용자에게 자체 서비스 기능을 제공한다.

오픈스택 네트워킹은 각기 다른 애플리케이션이나 사용자 그룹을 위한 네트워킹 모델을 제공한다.
표준 모델은 서버와 트래픽을 분리시키는 VLAN이나 플랫 네트워크를 포함한다.
오픈스택 네트워킹은 IP 주소를 관리함으로써 전용 정적 IP 주소나 DHCP를 허용한다.
유동 IP 주소들은 트래픽이 IT 인프라스트럭처 안의 모든 리소스에 동적으로 이어질 수 있게 함으로써 사용자들은 유지보수나 실패 상황에서 트래픽을 다른 곳으로 넘겨줄 수 있다.

사용자들은 자신의 네트워크를 만들고 트래픽을 통제하며 서버와 장치들을 하나 이상의 네트워크에 연결할 수 있다.
관리자들은 오픈플로(OpenFlow)와 같은 소프트웨어 정의 네트워킹(SDN) 기술을 이용하여 높은 수준의 멀티테넌시와 막중한 규모를 지원할 수 있다.
오픈스택 네트워킹은 침입 탐지 시스템(IDS), 부하 분산, 방화벽, 가상 사설망(VPN)과 같은 추가 네트워크 서비스들을 배치시키고 관리할 수 있는 확장 프레임워크를 제공한다.

Cinder : Block Storage (우리가 쓰는 HDD,SSD 같은 저장소)
오픈스택 블록 스토리지(Cinder)는 오픈스택 컴퓨트 인스턴스에 사용할 지속적인 블록 레벨 스토리지 장치들을 제공한다.
블록 스토리지 시스템은 블록 장치들을 서버에 작성, 부착, 제거하는 일을 관리한다.
블록 스토리지 볼륨들은 클라우드 사용자들이 자신만의 스토리지의 필요한 부분을 관리하기 위한 대시보드 및 오픈스택 컴퓨트와 완전히 연동된다.
로컬 리눅스 서버 스토리지뿐 아니라 Ceph, 클라우드바이트, Coraid, EMC(ScaleIO, VMAX, VNX and XtremIO), GlusterFS, 히타치 데이터 시스템, IBM 스토리지(IBM DS8000, Storwize 계열, SAN 볼륨 컨트롤러, XIV 스토리지 시스템, GPFS), 리눅스 LIO, 넷앱, 넥센타, 님블 스토리지, Scality, 솔리드파이어, HP (스토어버추얼, 3PAR 스토어서브 계열), 퓨어 스토리지를 포함한 스토리지 플랫폼들을 사용한다. 블록 스토리지는 데이터베이스 스토리지, 확장 가능 파일 시스템과 같은 성능에 민감한 시나리오에 적절하며, 서버에 로우 블록 레벨 스토리지에 대한 접근을 제공한다.
스냅샷 관리는 블록 스토리지 볼륨에 저장된 데이터를 백업하는 강력한 기능을 제공한다.
스냅샷들은 새로운 블록 스토리지 볼륨들을 만들기 위해 사용하거나 복원할 수 있다.

Keystone : (인증, 사용자 식별)
오픈스택 아이덴티티(Keystone)는 사용자들이 접근할 수 있는 오픈스택 서비스들에 매핑되는 사용자들의 중앙 디렉터리를 제공한다.
클라우드 운영 체제를 통하는 공통 인증 시스템으로 활동하며 LDAP과 같은 기존의 백엔드 디렉터리 서비스들과 통합할 수 있다.
표준 사용자 이름과 암호 자격 정보, 토큰 기반 시스템, AWS 스타일(예: 아마존 웹 서비스) 로그인을 포함한 여러 형태의 인증을 지원한다.
또, 카탈로그는 단일 레지스트리의 오픈스택 클라우드에 배치된, 쿼리 가능한 모든 서비스 목록을 제공한다. 사용자들과 서드 파티 도구들은 사용자들이 어느 리소스에 접근할지를 프로그래밍적으로 결정할 수 있다.

Glance
오픈스택 이미지(Glance)는 디스크 및 서버 이미지를 위한 검색, 등록, 배급 서비스를 제공한다.
저장된 이미지들은 템플릿으로 사용이 가능하다. 수에 제한이 없는 백업본을 저장하고 카탈로그화하는데 사용할 수도 있다.
이미지 서비스는 Swift를 포함한 다양한 백엔드에 디스크와 서버 이미지들을 저장할 수 있다.
이미지 서비스 API는 디스크 이미지에 관한 정보를 조회하기 위해 표준 REST 인터페이스를 제공하며 클라이언트가 이미지를 새로운 서버에 스트리밍할 수 있게 한다.

Heat와 같이 이미지와 상호작용이 필요한 다른 오픈스택 모듈들은 Glance를 통해 이미지 메타데이터와 통신해야 한다.
또한, 노바는 이미지에 대한 정보를 표시할 수 있으며 인스턴스를 만들기 위한 이미지의 변경 사항을 구성한다. 한편, Glance는 이미지를 추가, 삭제, 공유, 복제할 수 있는 유일한 모듈이다.

Swift
오픈스택 오브젝트 스토리지(Swift)는 확장 가능한 여분의 스토리지 시스템이다.
오브젝트와 파일들은 데이터 센터 내 서버를 통해 퍼져있는 여러 개의 디스크 드라이브에 기록되며, 오픈스택 소프트웨어는 클러스터를 통한 데이터 복제 및 무결성을 보장하는 일을 맡는다.
스토리지 클러스터들은 단순히 새로운 서버들을 추가함으로써 수평적으로 확장한다. 서버나 하드 드라이브가 고장이 나면, 오픈스택은 활성화된 다른 노드의 내용물을 클러스터 내의 새로운 위치들로 복제한다.
오픈스택이 각기 다른 장치 간 데이터 복제 및 배포를 보증하는 소프트웨어 로직을 사용하기 때문에 비싸지 않은 하드 드라이브와 서버들을 사용할 수 있다.

Horizon : 대시보드 (사용자 인터페이스, Openstack 웹 페이지 등)
오픈스택 대시보드(Horizon)는 관리자와 사용자들에게 클라우드 기반 자원 배치의 접근, 제공, 자동화를 위한 그래픽 인터페이스를 제공한다.
설계는 청구, 모니터링, 추가 관리 도구와 같은 서드파티 제품과 서비스들을 수용한다. 대시보드는 또한 이용하기 원하는 서비스 제공자 및 기타 상용 벤더들을 위해 브랜드화가 가능하다.
대시보드는 사용자들이 오픈스택 자원들과 상호작용할 수 있는 여러 방법 가운데 하나이다. 개발자들은 네이티브 오픈스택 API나 EC2 호환 API를 사용하여 자원을 관리하기 위해 액세스를 자동화하거나 도구를 빌드할 수 있다.

Heat : Orchestration
Heat는 오픈스택 네이티브 REST API와 클라우드포메이션 호환 쿼리 API를 통해 여러 개의 복합 클라우드 애플리케이션들을 조직하기 위한 서비스이다.

Mistral
Mistral은 워크플로를 관리하는 서비스이다.
사용자는 보통 YAML 기반 워크플로 언어를 이용하여 워크플로를 작성한 다음 REST API를 통해 Mistral에 워크플로 정의를 업로드한다.
그 뒤 사용자는 이 워크플로를 동일한 API를 통해서 수동으로 시작하거나 일부 이벤트에 대해 워크플로의 시작을 작동시킬 수 있다.

Ceilometer
오픈스택 텔레메트리(Ceilometer)는 현재 및 미래의 모든 오픈스택 구성요소를 통해 고객 청구 확립이 필요한 모든 카운터를 제공하는, 청구 시스템을 위한 단일 연락 지점을 제공한다.
카운터 전달은 추적 및 감사가 가능하며, 카운터는 새로운 제품들을 지원하기 위해 쉽게 확장 가능하여야 하며 데이터 수집을 하는 에이전트들은 전체 시스템과는 독립적인 것이 좋다.

Trove
Trove는 관계형 및 비관계형 데이터베이스 엔진을 제공하는 서비스로서의 데이터베이스(database-as-a-service)이다.

Sahara : Elastic Map reduce
Sahara는 하둡 클러스터를 쉽고 빠르게 제공하기 위한 구성 요소이다. 사용자들은 하둡 버전 번호, 클러스터 토폴로지 유형, 노드 상세 정보(디스크 사용률, CPU, RAM 설정 정의)와 같은 여러 변수들을 지정하게 된다.
사용자가 모든 구성 요소들을 제공한 다음 Sahara는 수 분 안에 클러스터를 배치한다. Sahara는 또한 요청을 받으면 작업자 노드를 추가하거나 제거함으로써 기존의 하둡 클러스터를 확장하는 수단을 제공한다.

Ironic
Ironic은 가상 머신 대신 베어 메탈 머신을 준비시키는 오픈스택 프로젝트이다.
처음에는 노바 베어 메탈 드라이버로부터 분기되었고, 별도의 프로젝트로 발전해오고 있다.
베어메탈 하이퍼바이저 API이자, 베어 메탈 하이퍼바이저와 상호 작용하는 플러그인들의 집합으로 생각할 수 있다. 기
본적으로 PXE와 IPMI를 사용하여 머신을 예비하고 켜고 끌 수 있지만, Ironic은 벤더 특화 플러그인들을 지원, 확장하여 추가 기능을 구현할 수 있다.

Zaqar
Zaqar는 웹 개발자들을 위한 멀티테넌트 클라우드 메시징 서비스이다. 이 서비스는 완전한 RESTFul API로, 개발자들이 다양한 통신 패턴을 사용하여 SaaS와 모바일 애플리케이션들의 다양한 구성 요소 사이에 메시지를 보내는데 사용할 수 있다.
기반이 되는 이 API는 확장성과 보안을 염두에 두고 설계된 효율적인 메시징 엔진이다.
다른 오픈스택 구성 요소들은 Zaqar와 통합하여 이벤트를 최종 사용자에게 표현하고 클라우드 위의 계층에서 실행되는 게스트 에이전트와 통신할 수 있다.

Manila
오픈스택 공유 파일 시스템(Manila)은 오픈 API를 제공하여 벤더 독립적인 프레임워크 안의 공유물들을 관리한다.
초기 표준에는 공유물에 대한 작성, 삭제, 접근 권한 부여/거부 기능을 포함하며 독립적으로나 각기 다른 다양한 네트워크 환경에서 사용할 수 있다.
EMC, 넷앱, HP, IBM, 오라클, Quobyte, 히타치 데이터 시스템의 상용 스토리지 어플라이언스들뿐 아니라 레드햇 GlusterFS와 같은 파일시스템 기술 또한 지원된다.

Designate
Designate은 DNS를 관리하는 멀티테넌트 REST API이다.
이 구성 요소는 서비스로서의 DNS를 제공하며 PowerDNS, BIND를 포함한 수많은 백엔드 기술들과 호환된다.
하나의 테넌트마다 DNS 존을 관리하기 위해 기존의 DNS 서버와 상호 작용하는 등의 목적으로 DNS 서비스를 제공하지는 않는다.

검색 (Searchlight)
Searchlight는 다양한 오픈스택 클라우드 서비스를 통해 고급 및 일정한 검색 기능을 제공한다.
데이터를 ElasticSearch로 색인화함으로써 다른 오픈스택 API 서버로부터 사용자 검색 결과를 가져와서 성취된다.
Searchlight는 Horizon에 연동되고 있으며 명령 줄 인터페이스도 제공한다.

키 매니저 (Barbican)
Barbican은 기밀 정보의 스토리지에 보안을 제공하고 준비하고 관리하는 REST API이다.
단명하는 대형 클라우드를 포함한 모든 환경에 유용하게 쓰일 수 있도록 하는 것이 목적이다.