1. mysql에 데이터베이스 생성하고 사용자 추가 및 권한 할당

mysql u root -p

create database nova;

grant all privileges on nova.* to nova@'localhost' identified by '123qwe';

grant all privileges on nova.* to nova@'%' identified by '123qwe';

 

create database nova_api;

grant all privileges on nova_api.* to nova@'localhost' identified by '123qwe';

grant all privileges on nova_api.* to nova@'%' identified by '123qwe';

 

create database nova_cell0;

grant all privileges on nova_cell0.* to nova@'localhost' identified by '123qwe';

grant all privileges on nova_cell0.* to nova@'%' identified by '123qwe';

 

create database placement;

grant all privileges on placement.* to placement@'localhost' identified by '123qwe';

grant all privileges on placement.* to placement@'%' identified by '123qwe';

 

flush privileges;

exit;

 

2. 키스톤에 NOVA사용자 생성, 관리자 역할추가, 엔드포인트 생성

openstack user create --domain default --project service --password 123qwe nova

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

 

openstack user create --domain default --project service --password 123qwe placement

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

 

openstack service create --name nova --description "OpenStack Compute service" compute

openstack service create --name placement --description "OpenStack Compute Placement service" placement

 

export controller=10.0.0.30

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/

 

openstack endpoint create --region RegionOne placement admin

http://$controller:8778

 

openstack endpoint create --region RegionOne placement public

http://$controller:8774/v2.1/

 

openstack endpoint create --region RegionOne placement internal

http://$controller:8774/v2.1/

 

 

3. 노바 및 placement 설치

yum --enablerepo=centos-openstack-train,epel -y install openstack-nova openstack-placement-api

 

https://docs.openstack.org/nova/train/install/controller-install-rdo.html

에서 default api 별로 내용을 모아서 하기와 같이 작성해주면 된다.

 

 

4. KVM 및 NOVA-COMPUTE 설치

kvm 설치
yum -y install qemu-kvm libvirt virt-install
lsmod | grep kvm 명령어를 이용해서 확인

nova-compute 설치
 yum --enablerepo=centos-openstack-train,epel -y install openstack-nova-compute

 

firewall-cmd --add-port=5900-5999/tcp --permanent
firewall-cmd --reload

nova-compute실행
systemctl start openstack-nova-compute
systemctl enable openstack-nova-compute

 

 

5. 노바 설정파일 수정

mv /etc/nova/nova.conf /etc/nova/nova.conf.backup

vi /etc/nova/nova.conf

 

[DEFAULT]

# define own IP

my_ip = 10.0.0.30

state_path = /var/lib/nova

enabled_apis = osapi_compute,metadata

log_dir = /var/log/nova

# RabbitMQ connection info

transport_url = rabbit://openstack:password@10.0.0.30

 

[api]

auth_strategy = keystone

 

# Glance connection info

[glance]

api_servers = http://10.0.0.30:9292

 

[oslo_concurrency]

lock_path = $state_path/tmp

 

# MariaDB connection info

[api_database]

connection = mysql+pymysql://nova:password@10.0.0.30/nova_api

 

[database]

connection = mysql+pymysql://nova:password@10.0.0.30/nova

 

# Keystone auth info

[keystone_authtoken]

www_authenticate_uri = http://10.0.0.30:5000

auth_url = http://10.0.0.30:5000

memcached_servers = 10.0.0.30:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = servicepassword

 

[placement]

auth_url = http://10.0.0.30:5000

os_region_name = RegionOne

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = placement

password = servicepassword

 

[wsgi]

api_paste_config = /etc/nova/api-paste.ini

 

chmod 640 /etc/nova/nova.conf

chgrp nova /etc/nova/nova.conf

 

 

6. placement 설정파일 수정

(하기에 있는 것이 아닌 기존에 내용 그대로 사용하고 특정 내용만 추가할 것)

cd /etc/placement/

mv -v placement.conf placement.conf.backup

vi placement.conf

 

[DEFAULT]

debug = false

 

[api]

auth_strategy = keystone

 

[keystone_authtoken]

www_authenticate_uri = http://10.0.0.30:5000

auth_url = http://10.0.0.30:5000

memcached_servers = 10.0.0.30:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = placement

password = servicepassword

 

[placement_database]

connection = mysql+pymysql://placement:password@10.0.0.30/placement

 

chmod 640 /etc/placement/placement.conf

chgrp placement /etc/placement/placement.conf

 

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

16 <Directory /usr/bin>

17 Require all granted

18 </Directory>

19 </VirtualHost>

 

=> 원래는 이것을 해야 하지만 에러가 생긴 관계로

vi placement.conf 그대로를 이용하여 기존에 파일내용에서

하기 것만 추가를 한다.

 

[placement_database]

connection = mysql+pymysql://placement:password@10.0.0.30/placement

 

수정시 단어 찾기 /database를 이용 할 것

#장애 vi /etc/placement/placement.conf

[placement_database] => 기존의 vi /etc/placement/placement.conf 에서

connection = mysql+pymysql://placement:password@10.0.0.30/placement

 

grant all privileges on placement to placement 형태로 바꾸어 주어야 함

애초에 설정을 nova_placement가 아닌 placement로 앞에서 설정을 해주었기 때문에

placement에게로 privileges를 준다고 얘기해야 한다.

 

 

7. SELinux 설정

yum --enablerepo=centos-openstack-train -y install openstack-selinux

semanage port -a -t http_port_t -p tcp 8778

firewall-cmd--add-port={6080/tcp,6081/tcp,6082/tcp,8774/tcp,8775/tcp,8778/tcp} --permanent

firewall-cmd --reload

 

8. DB생성

su -s /bin/bash placement -c "placement-manage db sync"

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

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

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

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

systemctl restart httpd

chown placement. /var/log/placement/placement-api.log

 

for service in api console conductor scheduler novncproxy; do systemctl start openstack-nova-$service;

systemctl enable openstack-nova-$service; done

 

#마주한 장애 해결

nova.conf -> placement 비번 servicepassword ->123qwe

placement.conf - > 새로 작성

 

openstack compute service list

컴퓨트 노드의 도메인이 보이고 up상태로 나타나면 성공!!

 

 

마주한 장애들

#nova-manage cell_v2 list_cells 및 openstack endpoint list를 하니 다음과 같은 장애발생

#placement db sync를 하니 unknown database 라는 장애를 발견

 

database에 관련 된 것들을 모두 확인해보기로 함

 

해본것들

a. nova_placement to placement, nova로 각각 권한을 privileges를 주어보았다.

마지막으로 권한 준 곳

nova_placement to placement로 권한을 주었다.

 

b. 그리고 vi/etc/keystone/keystone.conf를 확인하고

mysql u root p에서 keystone 데이터베이스와 테이블이 있는지 확인

그리고 glance도 데이터베이스와 테이블이 있는지 확인

 

c. vi /etc/placement/placement.conf 에 수정 주었던 데이터베이스

connection=mysql+pymysql를 지우고

 

d. cd /etc/placement 로 가서

mv v placement.conf placement.conf.backup으로 보내고

다시 vi placement.conf에서내용 복붙하기

그곳에서 바꿔준 부분은 database에서 connection placement 로 바꾸고 /nova_placement로 바꿈

 

e. chmod 6430 /etc/placement/placement.conf

chgrp placement /etc/placement/placement.conf

 

f. vi /etc/httpd/conf.d/00-placement-api.conf

<Directory /usr/bin>

Require all granted

</Directory>

<VirtualHost>

 

g. su s /bin/bash placement c “placement-manage db sync”

를하니 sync 완료

 

#장애발생 openstack compute service list 하니 하기와 같은 에러가 발생

*ip주소 바꿔보는 작업

-그리고 openstack endpoint list를 확인하니 내부ip가 192.168.0.103인데 102로 되어 있는 것들을 발견

-id를 삭제하고 다시 만들기로 함

-placement admin id, nova 등등 삭제하고 다시 생성

 

그리고 다시 openstack compute service list를 하니 또 에러를 마주침.

 

#마주한 장애 the server is temporarily unavailable 이라고 함 keystone service is unavailable

=> reboot 한 뒤에

=> systemctl start mariadb

systemctl enable mariadb

를 해주고 다시 openstack compute service list 가 작동한다.

+ Recent posts