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 가 작동한다.