Openstack #2-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 모듈간 architecture 는 그림처럼 이해하면 쉽다.
하나의 가상 머신이 생성된다고 하면
– Novas는 Hypervisor로써 coumpute 노드로 설정된 노드들의 CPU와 RAM에 연결된다.
– Neutron은 네트워크 노드로 설정된 노드들의 네트워크 인터페이스와 연결된다.
– Cinder는 블록스토리지로 스토리지 노드들의 HDD(SSD 등)과 연결된다.
기본적으로 이 세 개의 모듈이 노드들의 자원을 획득하고 하나의 가상머신에 자원이 된다.
Glance와 Swift는 가상머신과 직접 연결되지 않는 것을 알 수 있는데 이는 Cinder와 달리 두 서비스는 가상머신에 가상디바이스를 직접 제공하지 않기 때문이다.
Horizon은 사용자가 openstack과 소통하기 위한 창구다. 웹 UI와 CLI를 제공한다.
Keystone은 사용자와 모듈을 식별한다.
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-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
Openstack #1-2 MariaDB(MySQL) 설치
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
공용 repository로 사용되는 RDBMS가 필요하다. Mysql, MariaDB, PostgresQL을 리포지터리로 사용할 수 있다.
MySQL설치 포스트를 참고해서 설치 할 수 있다.
Controller 노드에서만 수행한다. 또는 별도의 DB서버에서만 수행한다.
서버 설치
[root@openstack1:~]# yum -y install mariadb mariadb-server python2-PyMySQL Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.kakao.com Package 3:mariadb-server-10.3.10-1.el7.0.0.rdo2.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package python2-PyMySQL.noarch 0:0.9.2-2.el7 will be installed Verifying : python2-PyMySQL-0.9.2-2.el7.noarch 1/1 Installed: python2-PyMySQL.noarch 0:0.9.2-2.el7 Complete!
클라이언트 및 관련 라이브러리 설치
서버를 제외한 나머지 노드에서 수행한다.
yum -y install mariadb python2-PyMySQL
config 변경
# /etc/my.cnf 파일을 수정해도 된다. [root@openstack1:~]# /etc/my.cnf.d/openstack.cnf # openstack.cnf 파일은 빈파일이다. # 아래 내용을 붙여넣는다. [mysqld] #bind-address를 주석처리 하면 기본 값으로 설정된다. bind-address = 서버_IP default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8
서비스 활성화
# Service 시작 [root@openstack1:~]#service mariadb start Redirecting to /bin/systemctl start mariadb.service [root@openstack1:~]#chkconfig mariadb on 알림: 'systemctl enable mariadb.service'에 요청을 전송하고 있습니다. Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service. Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service. Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. # 또는 [root@openstack1:~]# systemctl enable mariadb.service [root@openstack1:~]# systemctl start mariadb.service
댓글을 달려면 로그인해야 합니다.