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

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!










SSH 설정

개요

시큐어 셸(Secure SHellSSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. 기존의 rshrlogin텔넷 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다.

SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.

SSL 그리고 HTTPS 의 암호화 통신방식을 이용한 쉘이다.
비대칭키 암호화 알고리즘으로 대칭키를 암호화 하여 주고받은 뒤 대칭키로 암호화 된 메시지를 주고 받는 프로토골이다.

대부분의 리눅스 시스템에 기본으로 포함되어있고, 설치된다.
ssh 서버에 접속하기 위한 클라이언트는 대부분의 linux 배포본에는 기본적으로 포함되어있고, Windows Powershell에도 포함되어있다.




사용법

linux shell / powershell 모두
ssh 계정명@hostname_또는_IP 명령으로 다른 호스트에 연결할 수 있다.
대개의 경우 Windows 에서는 putty 라는 공개 툴을 많이 사용한다.

[haedong@openstack2:~]$ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
 # 일반적인 연결방법
 # ssh account@server_HOSTNAME_or_server_IP
[haedong@openstack2:~]$ssh haedong@192.168.113.172
haedong@192.168.113.172's password:
Last login: Thu Dec 17 13:26:54 2020 from 192.168.4.199
[haedong@openstack2:~]$
 # 저장된 ssh key를 사용하는 경우
 # ssh account@server_HOSTNAME_or_server_IP -i KEY_FILE_NAME
[haedong@openstack2:~]$ssh root@192.168.113.171 -i ~/.ssh/id_rsa
Last login: Wed Dec 16 09:31:02 2020 from openstack3
[root@openstack1:~]#
 # 접속 로그 확인을 원할 경우
[haedong@openstack2:~]$ssh root@192.168.113.171 -i ~/.ssh/id_rsa -v
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to 192.168.113.171 [192.168.113.171] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/haedong/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/haedong/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 192.168.113.171:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit                               > compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit                               > compression: none
debug1: kex: curve25519-sha256 need=64 dh_need=64
debug1: kex: curve25519-sha256 need=64 dh_need=64
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:mLoKmt/MNoY/Il1LahMDflXKfT/c                               KSpI80vbl2m5EFM
debug1: Host '192.168.113.171' is known and matches the ECDSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:4
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mi                               c,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: KEYRING:persistent:1000)

debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: KEYRING:persistent:1000)

debug1: Next authentication method: publickey
debug1: Trying private key: /home/haedong/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.113.171 ([192.168.113.171]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending environment.
debug1: Sending env LANG = ko_KR.UTF-8
Last login: Thu Dec 17 13:38:57 2020 from openstack2
[root@openstack1:~]#



sshd (SSH daemon : a.k.a ssh server) 설정

기본적으로 ssh 데몬의 설정파일은 /etc/ssh/sshd_config
ssh 클라이언트 설정 파일은 /etc/ssh/ssh_config
파일이다. 보통은 windows클라이언트에서 linux 서버로 접속을 하는 경우가 많다보니 ssh_config 파일을 수정하는경우는 많지 않(은것 같)다.

자주 사용하거나, 중요한 옵션만 기억하자.

 # ssh 서버 설정을 위한 값. 주석처리가 되어있는 경우 기본값으로 설정된다.
#Port 22
#ListenAddress 0.0.0.0


 # root로 로그인을 허용할 것인지 설정. no로 설정하고 sudo을 이용하는 것을 권장한다.
#PermitRootLogin yes
PermitRootLogin no

 # 로그인을 시도하는 계정/.ssh/authorized_keys 파일을 의미한다.
 # 허용할 공개키를 저장하는 파일을 가리킨다.
AuthorizedKeysFile      .ssh/authorized_keys

 # 빈 패스워드 로그인을 허용할 것인지 설정한다. 당연히 no로 설정하는 것이 '옳다'
PermitEmptyPasswords no

 # password를 이용한 로그인을 허용할 것인지 설정한다.
PasswordAuthentication yes

 # GSSAPI 사용 여부
 # 간혹 폐쇄망에서 접속 지연(ID 입력 후 지연)이 발생하년 경우 no로 변경
# GSSAPI options
GSSAPIAuthentication no
GSSAPICleanupCredentials no

 # 역시 폐쇄망 혹은 DNS 연결이 안되는 환경에서 접속 지연이 발생화면 no로 변경
UseDNS no

서비스 구동 / 재시작 / 종료

 # 서비스 구동
 # service sshd start
[haedong@openstack2:~]$ sudo systemctl start sshd.service

 # 서비스 재시작
 # service sshd restart
[haedong@openstack2:~]$ sudo systemctl restart sshd.service

 # 서비스 구동
 # service sshd stop
[haedong@openstack2:~]$ sudo systemctl stop sshd.service

사실 service sshd stop 또는 systemctl stop sshd.service 명령은 평생 내릴 일 없는 명령일지도 모른다.

ssh 키 쌍을 이용한 로그인 설정

SSL 그리고 HTTPS 포스트에서 설명한 공개키를 미리 서버에 저장해 두고 인증하는 방식이다.
이해를 위해 개념적인 절차를 기재해보면(실제 절차와는 차이가 있음)
1. 사용자가 비대칭 키 쌍 K1(공개키), K2(비밀키)를 생성.
2. 서버에 K1 을 저장
3. 사용자가 서버에 접속 시도
4. 서버는 대칭키 KS 생성
5. K1로 KS를 암호화하여 KK 생성
6. KK를 사용자에게 전달
7. 사용자는 KK를 K2를 복호화하여 KS 획득
8. KS를 KS로 암호화하여 SS 생성
9. 서버로 SS 전송
10. 서버는 KS로 SS를 복호화 하여 KS 획득.
11. 서버가 가지고 있는 KS와 사용자가 전송한 KS가 같은지 비교
가 되겠다.

보통은 보안상의 이유로 ssh key를 이용한 로그인을 강제하지만 반대로 편리한 것도 있다. 모든 서버의 키를 하나로 통일하고 passphrase를 비워두면 패스워드 입력 없이 모든 서버에 접속이 가능해 진다.(당연히 보안상 지양해야 하는 행위다)

서버에서 키를 생성하고 등록하는 과정은 다음과 같다.

 # 키를 등록할 서버에 로그인
[haedong@openstack3:~]$ssh-keygen
Generating public/private rsa key pair.
 # 키쌍이 저장될 경로 기본값은 /home/계정명/.ssh/
Enter file in which to save the key (/home/haedong/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 비워두거나 최소5자 이상의 암호구
Enter same passphrase again: 비워두거나 최소5자 이상의 암호구
Your identification has been saved in /home/haedong/.ssh/id_rsa.
Your public key has been saved in /home/haedong/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:+rZt72JUHSrIuqEeI07ey/5MQm1pYmFxFmBukuegj8s haedong@openstack3
The key's randomart image is:
+---[RSA 2048]----+
|    +.+.         |
|   + +        .  |
|  + *  . .   o . |
| . B o .o . o .  |
|.   = =.S  o     |
| o o +o.  .      |
|. + +.oo .       |
|.= +.*....+      |
|.Eoo*oo.o+.+o    |
+----[SHA256]-----+
[haedong@openstack3:~/.ssh]$ls -lah /home/haedong/.ssh/
합계 12K
drwx------. 2 haedong haedong   57 12월 17 14:33 .
drwx------. 3 haedong haedong   95 12월 16 09:30 ..
-rw-------. 1 haedong haedong 1.8K 12월 17 14:33 id_rsa
-rw-r--r--. 1 haedong haedong  400 12월 17 14:33 id_rsa.pub
-rw-r--r--. 1 haedong haedong  188 12월 16 09:30 known_hosts
[haedong@openstack3:~/.ssh]$ls -lah /home/haedong/
합계 16K
drwx------. 3 haedong haedong  95 12월 16 09:30 .
drwxr-xr-x. 3 root    root     21 12월 14 14:27 ..
-rw-------. 1 haedong haedong  31 12월 16 10:36 .bash_history
-rw-r--r--. 1 haedong haedong  18  4월  1  2020 .bash_logout
-rw-r--r--. 1 haedong haedong 193  4월  1  2020 .bash_profile
-rw-r--r--. 1 haedong haedong 231  4월  1  2020 .bashrc
drwx------. 2 haedong haedong  57 12월 17 14:33 .ssh
# 파일 권한ㅇ르 주목하자.
 # 공개키 등록
 # 다른 곳에서 만든 키를 넣어도 된다.
 # sshd_config 파일에 설정한 파일명과 일치해야 한다.
[haedong@openstack3:~/.ssh] cp ~/.ssh/id_rsa.pub    ~/.ssh/authorized_keys

 # 또는
[haedong@openstack3:~/.ssh] cat ~/.ssh/id_rsa.pub    >>  ~/.ssh/authorized_keys
 # >를 하나만 넣게 되면 authorized_key 파일의 내용을 모두 지운다음 id_rsa.pub의 내용이 들어가게 된다.
 # >>는 읽으려는 파일의 내용을 대상 파일의 맨 끝에 붙여넣는다.
 # .ssh 디렉토리는 700 
 # .ssh 디렉토리 아래 파일들은 600 권한이어야 한다.
 # 당연한 이야기지만 소유자는 해당 키를 사용할 계정이어야 한다.
[haedong@openstack3:~/.ssh]$chmod 600 ~/.ssh/*
[haedong@openstack3:~/.ssh]$ll ~/.ssh/
합계 16
-rw-------. 1 haedong haedong  400 12월 17 14:41 authorized_keys
-rw-------. 1 haedong haedong 1766 12월 17 14:33 id_rsa
-rw-------. 1 haedong haedong  400 12월 17 14:33 id_rsa.pub
-rw-------. 1 haedong haedong  188 12월 16 09:30 known_hosts

id_rsa 파일을 클라이언트에 저장한다.
다운로드 해도 되고, 내용을 복사한뒤 일반 텍스트 파일 형식으로 저장해도 된다.
앞서 설명한 것처럼 ” ssh account@hostname -i id_rsa ” 와 같이 키 파일을 지정해주면 된다.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,C820352F5512D184F9C6887101DBE9F2

TFynB3AwsiFRoPUxJRg3Y9vv34lOsimQB3yNEyKMP2jvt5XbJFNT6Qw9BAD1xIkl
MfL27ADniRM73OgB+4E6OxzMgDXRE88Gor6CifWUZcASMPPOn55HrontgNE+fv7F
RL1TZ285IX73N/GDifAu9rchc3mIOL2i9D8t/TWUVMNjV+jL+jmSrWI70YlMArPE
I8qVUWc39SFn7NmQYuyo/7LBMNLdSBSMr4WpavM7WbbZAAcRZIYgT51gLWmgGEJv
LrCOcjdzHbSekxIp/8kejKj3ZbJZo6cwGsTKgT9RfLvamU38f21XeBp1bxXazuGF
jiqE9zZ4on69/nNzDRw9BKxuSbiO2rD4hwfSZyH0yJO0TUFaNPr2ejQ8uvbhVIxN
WNQ8+TNX84sm2Mjs8USN8UkAq9uzCLCBeKXJVbmrQAyGvIaU4Y8p9hXjwDgg4oKv
ohiW1VtoqMEigpgpRo2xF6Ft3E6O6yuuh48QauFVNwen2FPGLmRrx2ZkD5htBjjM
mgaZv/E2wP21EmEf6/3tmMOyR4mVxnn1Am4O6zMnOjCtA4OZxv2a2jWBSIZl7/SB
8Zu6yDaHycv0SLKBMtwm3cTXYwpD4StDgX7XBUv0tpyfYh/okT/YRVCx+HP723L+
FLSuwMs9bnvYvLqRbF2GBPJSUQSG1REyoxL//gSqBTdiUSYb2275vAVxYg72Oh28
MgH4tAGhTlk6rxp5ZMflFF0GeMQAoTqjfcs1n+LjFztLZY/L/nZfk6jQEZIbDyEA
IYrZ9zL4XQhsILI0RjCpYei//8rMtf3+w2QiyOFyIcKH0PDRDJegQyFUs5CWiOIX
0j+5ZOMr1igNHbotCR8JhGsPnm2XWx0rs5+nY/Y198Re9waebE7zCKHRjC2jbRnK
mM14mngyIVsaKkKlJz1OMkN1rEnHd6Hu0t52JRTDxI+DWed+ZbUsxpUsmPq9Y68l
jH7R7b5g0emb0sqcyMvjYOEbWD9hk7VBFuKL5CnLGraW4Ag+FcZSGg0DM5nL+Iwr
OHKslt6xFMHVRr7aSJxslw9zGGUb2LG0lBEp+SKLquCFevcv2rQp0Vzprb5UAzum
pVE/TYKXXVjeQA+rQlqefDY43HjJxWA+Oai8dLUNVMt/LuSge5D9mmwK3Nkkj98d
eVDZp1AKBw1vjom1w0LS4J9kKk8FJmUPjb/nb1nbkGYMc+QGQZGvOVYOmfb3bjbI
8M8EUHTs6Sg3WVPEALWZU99yqvemeVx1/A/gf3cqP/kuEYphFN7zRchMV9lXNs7m
pE1DtAYLcAEaLK5MZDgQ6Oo9jCVLlleiYXj3kBCijJ2zK0iXh08PsiggAoaYvlgk
l21oXTS1tPl1Cpe3QaIb98LMdTPZk+Qkbq4N+9YPQbRwBgiDF2ApXJQhSTdKmVES
B9E3mYCf5OqtiYw/V9xOKA7RB/RR2vCGxXAa1pem5ntzqPLYhBLaUZ2CShOOUPFh
/oL1exNCATeOgpSLypx0ZoHqU+TJLI9IhD15HlA6IAcZmyBp+jVMayTNYjvAmWgT
br8tBxaGuTyIVO00auUJQeud84Lq85pS0mGQMM7fORHsk9B4PuZT2zjkIpiGay30
-----END RSA PRIVATE KEY-----

putty 클라이언트를 사용하는 경우

puttygen 을 실행한 다음 아래 절차를 따라 키 포맷을 변경하고 putty에서 로드하면 된다.

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이다.
단명하는 대형 클라우드를 포함한 모든 환경에 유용하게 쓰일 수 있도록 하는 것이 목적이다.


CentOS 8 Linux 설치

SuDO : SuperUser DO

CentOS 7 네트워크설정

이전 포스트 CentOS 설치 미디어(ISO) 다운로드 를 참고하여 CentOS 설치 이미지를 다운로드 하고 설치 미디어를 만들어 부팅한다.

정상적으로 설치 미디어로 부팅이 된다면 다음 절차들을 참고하여 설치를 진행한다.
※ 예시는 CentOS8을 기준으로 하였지만 CentOS7도 다르지 않다.

설치가 완료되면 재부팅한다.
root 패스워드를 설정하지 않았으므로 root 계정으로는 로그인할 수 없다.
sudo 명령을 이용해 권한을 바꿔가면서 작업 하는 것을 권장하지만 꼭 root 로 로그인 해야 한다면 아래를 참고하여 password를 변경하면 된다.

login as: haedong
haedong@192.168.103.176's password:
Last login: Wed Dec  9 15:08:34 2020 from 192.168.4.199
[centos7:/home/haedong:]$ sudo -i
[sudo] haedong의 암호:
[centos7:/root:]# passwd root
root 사용자의 비밀 번호 변경 중
새  암호:
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[centos7:/root:]#

CentOS 설치 미디어(ISO) 다운로드

센트OS(영어: CentOS)는 센트OS 프로젝트에서 레드햇 제휴로 개발한 컴퓨터 운영 체제이다. 업스트림 소스인 레드햇 엔터프라이즈 리눅스와 완벽하게 호환되는 무료 기업용 컴퓨팅 플랫폼을 제공할 목적으로 만들어진 리눅스계 운영 체제 가운데 하나다. 6.4 버전부터 베타 버전은 파워PC에서 사용가능할 것으로 예상되지만, 공식적으로 물리 주소 확장 기능을 가진 x86과 x86-64 아키텍처를 지원한다.

레드햇 엔터프라이즈 리눅스의 소스 코드를 그대로 가져와 빌드해 내놓으며 이 과정에서 이루어지는 변형은 레드햇의 상표가 잘리고 그 자리에 CentOS의 상표가 붙는(상표권 분쟁을 피하기 위해) 정도뿐이다. 판수 또한 레드햇 엔터프라이즈 리눅스의 판수를 그대로 가져오며(소수점 아래 숫자는 업데이트 차수를 가리킨다) 오늘날에는 레드햇 엔터프라이즈 리눅스의 행보를 가장 잘 따라가는 운영 체제라고 알려져 있다. 사용하는 꾸러미 형식은 RPM이다. 1위키백과에서 발췌

즉, RedHat Enterprise Linux 와 같다.

미러 사이트 등을 통해서 iso 파일과, torrent 파일을 이용해 배포하고 있다.

정보와 설치 미디어는 CentOS 홈페이지에서 다운로드 할 수 있다.

또는

 

 

 

SuDo : SuperUser DO

개요

sudo 명령어는 유닉스 및 유닉스 계열 운영 체제에서, 다른 사용자의 보안 권한, 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램이다. 명칭은 본래 슈퍼유저로서의 실행에 사용되던 것에서 “superuser do”에서 유래하였으나, 후에 프로그램의 기능이 확장되며 “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말로 해석되게 되었다. 기본적으로 Sudo는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수도 있고, 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없다. Sudo는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며, 주로 우분투, 리눅스와 애플의 OS X 에서 볼 수 있다. 1위키백과에서 발췌

Windows 시스템의 경우 이것과 같다.

이 명령(기능)이 필요한 이유는 이렇게 생각해 볼 수있겠다.
– 시스템 관리자 A가 있다. root 패스워드는 A만 알고 있다.
– DBA B B는 ‘가’서버의 DB만 관리한다. 서비스의 재 시작등이 필요할 때엔 A에게 요청해야 한다.
– A가 휴가를 갔다.
– A가 휴가를 간 사이 DBMS 서비스에 이상이 생겼고 서비스를 재시작해야 하는 상황이 발생했다.
– 서비스 재시작에는 root 권한이 필요하다.
이 때 A가 취할 수 있는 조치는 B에게 root의 패스워드를 알려주는 방법이 있다.
하지만 A는 A가 관리하는 ‘가’,’나’,’다’모든 서버의 패스워드를 동일하게 설정해서 관리 하고 있었다.
B는 A가 관리하는 모든 서버의 패스워드를 획득한 것과 다름이 없다.

이런 상황이 예가 될 수 있겠다.
사실 B는 신뢰할 수 있는 사람이겠지만, 위 상황은 이미 권한 없는 사용자가 모든 권한을 획득한 보안 사고라 할 수 있겠다. 여기서 sudo는 아래와 같이 동작한다.
– 시스템 관리자 A는 ‘가’서버에신뢰할 수 있는 사용자 B를 sudo 명령 허용 목록에 추가하였다.
– A가 휴가를 갔다.
– B는 ‘가’ 서버에서 sudo 명령을 사용한다.
sudo 명령은 B의 패스워드를 묻는다.
B의 패스워드가 정상적으로 입력 되었을 경우 권한을 상승시킨다.

여기서 B가 B로 로그인 해 있는데 B의 패스워드를 왜 확인해? 이게 무슨 소용이야? 하고 질문할 수 있겠지만 B의 계정은 이미 신뢰하는 계정이라 했으니, 작업을 하는 시점에 다시 B가 맞는지 확인 하는 것이다.
즉, B가 로그인 후 자리를 비웠다거나 하는 등 B를 대체 하더라도 B의 패스워드는 B만 알고 있으니 패스워드를 한번 더 입력 받고 B가 맞는지 확인한 뒤 권한을 상승 시킨다는 말이다.

설정

/etc/sudoers 파일에 권한을 부여할 사용자를 넣으면 된다.
※만약 설정파일의 문법을 틀리거나 하면 아런 에러를 만날 수 있다. (sudo가 동작하지 않는다!!!!)

[centos7:/home/haedong:]$ sudo -i
>>> /etc/sudoers: 문법 오류 near line 94 <<<
sudo: /etc/sudoers 94번째 줄에서 해석 오류
sudo: 올바른 sudoers 설정 원본이 없습니다. 나갑니다.
sudo: 정책 플러그인을 초기화할 수 없습니다

사용자 추가

 ## 기본적으로 root는 포함되어있다. root ALL=(ALL) ALL 을 찾아서 아래에 사용자를 추가한다.
 ## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

 # 여기부터 선택적으로 추가한다.
 # 기본. 
 # haedong 계정으로 sudo 명령 사용 시 패스워드 확인 후 권한을 부여한다. 
 # 모든 명령 사용이 가능하다.
haedong ALL=(ALL)       ALL

 # haedong 계정으로 sudo 명령 사용 시 패스워드 확인 후 권한을 부여한다. /usr/bin/vi,/usr/bin/vim 만 사용 가능하다.
haedong ALL=            /usr/bin/vi,/usr/bin/vim      


 # haedong 계정으로 모든 명령 사용 시 패스워드 확인을 하지 않는다.
haedong ALL=(ALL)       NOPASSWD:   ALL

 # vi, vim 커맨드 사용 시 패스워드 확인을 하지 않고 권한을 상승시킨다.
haedong ALL=NOPASSWD:   /usr/bin/vi,/usr/bin/vim

환경변수 설정
현재 사용자의 환경변수를 sudo 명령 사용 시 승계 하고자 하는경우

 # "" 안에 추가하고자 하는 환경 변수를 추가한다.
Defaults    env_keep += "LD_LIBRARY_PATH"

PATH 변수 설정

 # : 로 구분하여 경로를 추가한다.
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

옵션 및 사용법
자세한 옵션은 man 을 참조하자

 # 일반적인 사용 예
[centos7:/home/haedong:]$ sudo vi
[sudo] haedong의 암호:
 # sudo를 이용한 로그인
[centos7:/home/haedong:]$ sudo -i
[sudo] haedong의 암호:
[centos7:/root:]#
[centos7:/root:]# sudo -h
sudo - 다른 사용자 권한으로 명령을 실행합니다

usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...

옵션:
  -A, --askpass               암호 질문에 보조 프로그램 활용
  -b, --background            백그라운드에서 명령 실행
  -C, --close-from=num        num 보다 크거나 같은 모든 파일 서술자를 닫습니다
  -E, --preserve-env          명령을 실행할 때 사용자 환경을 유지합니다
  -e, --edit                  명령을 실행하는 대신 파일을 편집합니다
  -g, --group=group           지정 그룹 이름 또는 ID로 명령을 실행합니다
  -H, --set-home              대상 사용자의 내 폴더에 HOME 변수를 지정합니다
  -h, --help                  도움말을 보여주고 빠져나갑니다
  -h, --host=host             (플러그인에서 지원한다면)호스트에서 명령을 실행합니다
  -i, --login                 대상 사용자 자격으로 셸에 로그인합니다. 명령도 지정할 수 있습니다.
  -K, --remove-timestamp      타임스탬프 파일을 완전히 제거합니다
  -k, --reset-timestamp       타임스탬프 파일을 초기화합니다
  -l, --list                  사용자 권한을 보여주거나 지정 명령을 확인합니다. 긴 형식으로 보려면 옵션을 두 번 사용하십시오
  -n, --non-interactive       비대화형 모드. 프롬프트를 사용하지 않습니다
  -P, --preserve-groups       대상을 설정하는 대신 그룹 벡터를 유지합니다
  -p, --prompt=prompt         지정 암호 프롬프트를 활용합니다
  -r, --role=role             지정 역할을 지닌 SELinux 보안 컨텍스트를 만듭니다
  -S, --stdin                 표준 입력으로 암호를 입력 받습니다
  -s, --shell                 셸을 대상 사용자 명의로 실행합니다. 명령도 지정합니다.
  -t, --type=type             지정 유형의 SELinux 보안 컨텍스트를 만듭니다
  -U, --other-user=user       목록 모드에서 사용자 권한을 보여줍니다
  -u, --user=user             지정한 사용자 이름 또는 ID로 명령을 실행(또는 파일 편집)
  -V, --version               버전 정보를 보여주고 나갑니다
  -v, --validate              명령을 실행하지 않고 사용자 타임스탬프를 업데이트합니다
  --                          명령행 인자 처리를 멈춥니다