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

*cirros 이미지 활용  

7. glance 서비스 테스트

yum -y install wget

wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

openstack image create "cirrors" \

--file cirros-0.3.5-x86_64-disk.img \

--disk-format qcow2 \

--container-format bare \

--public

 

8.버전확인 

glance --version

glance image-show id번호적기

id) a732aca0-6a88-406b-9d27-1e3df3203fcc) //이미지내용확인

 

 

glance image-deactivate id번호적기

(a732aca0-

6a88-406b-9d27-1e3df3203fcc) //이미지비활성화

openstack image list //이미지 상태 확인

glance image-reactivate a732aca0-6a88-406b-9d27-1e3df3203fcc //이미지활성화

 

openstack image list //이미지 상태 확인

 

#오픈스택 바이블 책에 있는 p182의 glance-registry.conf 대로 수정하지 말 것

버전의 문제인 것으로 보인다.

olso.config. parseerror ~ 그리고 section must be started before signment 와 같은 장애 발생

 

Glance(이미지서비스)

기능

-사용자들이 가상 머신 이미지를 찾고, 등록해서 가져올수 있도록 활성화하는 역할

-가상머신 이미지를 찾은 후에는 메타데이터에 질문/요청을 던져 실제 이미지를 가져오도록 하는 REST API제공

 

1. Glance 데이터베이스 설정하기

데이터베이스에 glance 사용자 추가하기

 

mysql -u root p

create database glance;

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

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

flush privileges

exit

 

2. Glance사용자, 서비스 그리고 엔드포인트 생성하기

glance 사용자 추가하기

 

(유저생성)

openstack user create --domain default --project service --password servicepassword glance

 

(역할추가)

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

 

(서비스생성)

openstack service create --name glance --description "Openstack Image service" image

 

(엔드포인트생성)

openstack endpoint create --region RegionOne image public http://$controller:9292

 

(엔드포인트내부용 생성)

openstack endpoint create --region RegionOne image internal http://$controller:9292

 

(엔드포인트어드민용 생성)

openstack endpoint create --region RegionOne image admin http://$controller:9292

 

 

3. glance 설치하기(glance 패키지 설치)

yum --enablerepo=centos-openstack-train,epel -y install openstack-glance

 

4. glance-api.conf 설정파일 백업후 설정파일 새로 생성해서 새로운 내용 추가하기

mv /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak

 

vi /etc/glance/glance-api.conf

[DEFAULT]

bind_host=0.0.0.0

 

[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

 

[database]

connection = mysql+pymysql://glance:123qwe@10.0.0.30/glance   

->내가 원하는 비번을 작성하면된다. glance:비번작성하는곳

 

[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 = glance

password = servicepassword

->키스톤의 권한토큰을 받아서 모든 노드가 돌아가므로, 항상 들어가는 정보..

 

[paste_deploy]

flavor = keystone

 

5. 직접작성해서 만든 파일이니 권한과 소유자(그룹)을 변경

chmod 640 /etc/glance/glance-api.conf

chgrp glance /etc/glance/glance-api.conf (명령어 잘확인할 것 )

#ubuntu 버전으로 chown 명령어를 사용하니 안되서 다시

glance-api.conf를 생성해서 명령어를 사용하니 되었다.

 

6. 데이터베이스 파일 생성하기 및 selinux 설정하기

su -s /bin/bash glance -c "glance-manage db_sync"

systemctl start openstack-glance-api

systemctl enable openstack-glance-api

setsebool -P glance_api_can_network on

 

+ Recent posts