1. 2019.01.20 오픈스택 수동 설치 실습 #.9
  2. 2019.01.18 오픈스택 수동 설치 실습 #.1

오픈스택 수동 설치 실습 #.9


오픈스택 수동 설치 실습 #.9 - Controller 노드에 Nova 설치


Nova 설치 준비


SQL DB에 접속하여 nova, placement 2개의 유저를 생성합니다. DB계정에 대한 password는 보기 편하게 user와 동일하게 설정 했습니다.

Database nova, nova-api, nova_cell0, placement 4개의 DB를 생성합니다.

# su - postgres

$ psql

postgres=# create database nova;

postgres=# create database nova_api;

postgres=# create database nova_cell0;

postgres=# create database placement;


postgres=# create role nova with login;

postgres=# create role placement with login;


postgres=# grant all privileges on database nova to nova;

postgres=# grant all privileges on database nova_api to nova;

postgres=# grant all privileges on database nova_cell0 to nova;

postgres=# grant all privileges on database placement to placement;


postgres=# alter user nova with encrypted password 'nova';

postgres=# alter user placement with encrypted password 'placement';

keystone 인증 불러오기

# . admin-openrc

Nova 유저를 생성합니다.

$ openstack user create --domain Default --password-prompt nova

Nova 유저에 admin 권한을 줍니다.

$ openstack role add --project service --user nova admin

Nova 서비스 엔티티 생성

$ openstack service create --name nova \

  --description "OpenStack Compute" compute

Compute API 엔드포인트 생성

$ openstack endpoint create --region RegionOne \

  compute public http://controller:8774/v2.1


$ openstack endpoint create --region RegionOne \

  compute internal http://controller:8774/v2.1

  

$ openstack endpoint create --region RegionOne \

  compute admin http://controller:8774/v2.1

Placement 서비스 유저 생성

$ openstack user create --domain Default --password-prompt placement

Placement 서비스 유저에 admin 권한부여

$ openstack role add --project service --user placement admin

Placement 서비스 생성

$ openstack service create --name placement \

  --description "Placement API" placement

Placement API 엔드포인트 생성

$ openstack endpoint create --region RegionOne \

  placement public http://controller:8778

  

$ openstack endpoint create --region RegionOne \

  placement internal http://controller:8778


$ openstack endpoint create --region RegionOne \

  placement admin http://controller:8778


Nova 패키지 설치 및 설정

# yum install openstack-nova-api openstack-nova-conductor \

  openstack-nova-console openstack-nova-novncproxy \

  openstack-nova-scheduler openstack-nova-placement-api

# vi /etc/nova/nova.conf

[DEFAULT]

# ...

enabled_apis = osapi_compute,metadata

transport_url = rabbit://openstack:RABBIT_PASS@controller

my_ip = 10.0.0.11


[api_database]

# ...

connection = postgresql://nova:nova@controller/nova_api


[database]

# ...

connection = postgresql://nova:nova@controller/nova


[placement_database]

# ...

connection = postgresql://placement:placement@controller/placement


[api]

# ...

auth_strategy = keystone


[keystone_authtoken]

# ...

auth_url = http://controller:5000/v3

memcached_servers = controller:11211

auth_type = password

project_domain_name = Default

user_domain_name = Default

project_name = service

username = nova

password = NOVA_PASS


[vnc]

enabled = true

# ...

server_listen = 10.0.0.11

server_proxyclient_address = 10.0.0.11


[oslo_concurrency]

# ...

lock_path = /var/lib/nova/tmp


[placement]

# ...

region_name = RegionOne

project_domain_name = Default

project_name = service

auth_type = password

user_domain_name = Default

auth_url = http://controller:5000/v3

username = placement

password = PLACEMENT_PASS

Placement API 설정에 15째줄에 아래 내용을 추가해줘야 합니다.

# vi /etc/httpd/conf.d/00-nova-placement-api.conf

  <Directory /usr/bin>
    Require all granted
  </Directory>

# semanage port -a -t http_port_t -p tcp 8778

Nova-api DB와 placement DB에 배포

# su -s /bin/bash nova -c "nova-manage api_db sync"

cell0 데이터베이스 등록

# su -s /bin/bash nova -c "nova-manage cell_v2 map_cell0"

cell1 cell 생성

# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

Nova DB에 배포

# su -s /bin/bash nova -c "nova-manage db sync"

Nova 리스트에 cell0과 cell1을 등록

# ssu -s /bin/bash nova -c "nova-manage cell_v2 create_cell --name cell1"

httpd 재시작

# systemctl restart httpd


Nova 서비스 생성 및 자동실행 등록

# for service in api consoleauth conductor scheduler novncproxy; do
systemctl start openstack-nova-$service
systemctl enable openstack-nova-$service
done


Controller 노드에 Nova 설치가 끝났습니다.

이어서 Compute 노드에 Nova를 설치해야 합니다.


오픈스택 수동 설치 실습 #.1


오픈스택 수동 설치 실습 #.1 - OS 준비


일단 오픈스택을 수동으로 설치를 해보면 오픈스택을 이해하기에 조금 더 도움이 됩니다. 그러니 VM 환경에다가 구축 실습을 해봅니다. 설치 버전은 rocky 버전으로 가장 최신 버전이며, 설치하면서 부분 부분 설명을 가미 해보도록 하겠습니다.


https://docs.openstack.org/rocky/install/


해당 공식 설치 문서를 참고하여 진행합니다.



CentOS 7 버전을 이용해 OS를 준비해 보겠습니다.


하드웨어 설정에 controller 노드의 용량은 RAM 4GB, HDD 50GB 입니다.

compute 노드는 RAM 2GB, HDD 50GB 입니다.




보안 정책을 꺼줍니다.



KDUMP도 꺼버립니다.



NIC 설정입니다.

ens32는 Bridge 네트워크로 Provider Network가 될 부분입니다. DHCP로 놔두어도 상관 없습니다.






ens33은 NAT로 구성했습니다.

VM의 네트워크 매니저에서 10.0.0.0/24 대역으로 구성했습니다. Management Network로 구성될 부분입니다.






파티션은 원하는대로 설정해도 되고, 그냥 기본으로 설치해도 됩니다.

용량은 50GB 할당 했습니다.



네트워크 통신이 된다면 NTP도 되겠죠?



설치 되는 동안 ROOT의 패스워드를 설정해주고 완료 되면, Reboot 합니다.




미니멀로 설치 했기 때문에 터미널 모드로 부팅합니다.

편한 작업을 위한 SSH 설정을 위해 sshd_config 파일을 수정해 줍니다.

 # vi /etc/ssh/sshd_config

PermitRootLogin yes

해당 부분 주석 해제

 # vi /etc/selinux/config

SELINUX=disable

이 부분은 선택입니다. 오픈스택은 SELINUX를 사용해 보안 설정을 할 수 있기 때문에 사용하기도 합니다. 그런데 저는 MariaDB가 아닌 PostgreSQL을 기본 DB로 선택할 것이기 때문에 SELINUX가 PostgreSQL에서 문제가 발생 할 수있는 여지가 있어 해제하고 설치를 진행합니다.


 # yum -y install net-tools vim

ifconfig 같은 명령이나 vim이 없기 때문에 설치를 진행 합니다.



프로파일을 수정합니다.

# vi .bash_profile 

아래 항목을 추가해서 노드가 헷갈리지 않게 합니다.

그리고 기본 에디터를 vim으로 사용하기 위해 설정을 해줍니다.

export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\h:\[\e[31;1m\]\w]# \[\e[0m\]"

export TERM=linux

alias vi='vim $*'

그리고 SELINUX 설정을 적용하기 위해 재부팅을 한번 해줍니다.


Controller Node의 준비가 끝났습니다.


이와 같은 방식으로 Compute Node와 Block Storage Node, Network Node를 준비하시면 됩니다.

Block Storage Node와 Network Node는 옵션입니다. 최소 controller와 compute만 있어도 설치는 가능합니다.

VM을 복사해서 hostname과 ip를 바꿔서 만들어도 상관 없습니다.



.bash_profile의 프롬프트 설정 부분의 가운데 숫자 (export PS1 .... 32->33) 변경하니 노드의 색이 바뀌었습니다. 

두 노드를 왔다 갔다 하면서도 쉽게 구분 할수 있겠죠?