1. 허브

허브는 한 시점에 24대 중에 PC1개에게만 데이터를 보낼 수 있다.

 

csma(carrier sense multiple access)

연결된 PC에 모두 접속 가능 multiple access

데이터를 보낼 수 있는지 확인 carrier sense


csma/cd =ethernet 통신 방법

pc1개에게만이 아닌 다중으로 데이터를 보낼 때에 colligion 충돌이 일어난다.

csma/cd를 통해서 데이터를 보낸다.

이 전체(허브와 연결되어 있는 pc네트워크)colligion domain(충돌이 일어날 수 있는 구역)이라고 한다.

*cd  collision detector 충돌이 일어났는지 확인

 

Broadcast

상대방의 mac주소가 있어야 연결이 가능한데 모르면 어떻게 알아내느냐 broadcast를 통해서 확인한다.

192.168.0.2mac 주소를 곳이 어딨는지 확인한다. 그럼 찾고자 하는 mac주소를 가진 pc가 반응한다.

mac 주소 =

#허브라는 장비는 100대 가 있어도 1대 만 데이터를 보낼 수 있다.

 

hub 가 다른 허브와 연결 되어 있다 =colligion domain 구역이 2개 있다.

그 구역2개를 통틀어 broadcast domain이라고 한다.

broadcast domain = 영향 미칠 수 잇는 공간 = 전체 네트워크

 

broadcast domain = 영향을 미칠 수 있는 전체네트워크 공간

 

colligion domain

=충돌이 일어날 수

있는 구역

 

colligion domain

=충돌이 일어날 수

있는 구역

 

허브

 

허브

 

pc

pc

 

pc

pc

한계-허브는 한 시점에 24대 중에 pc1개만 데이터를 보낼 수 있다.

연결된 PC에 모두 접속 가능 multiple access

데이터를 보낼 수 있는지 확인 carrier sense

=>csma

cd collision detector 충돌이 일어났는지 확인

csma/cd라는 방법으로 이더넷이 통신을 하고 데이터를 보낸다.

허브에서는 pc 1대만 데이터를 보낼 수 있고 2대가 동시에 데이터를 보내지 못한다.

 

 

2. 브리지

허브 다음에 브리지가 나온다.

허브 특징

-한대만 보낼 수 있다.

-속도가 떨어진다.

그것을 보완하고자 브리지가 나온다.

브리지는 포트가 2-4개 정도만 있다.

브리지 밑으로 허브 여러개 연결 되어 있다.

충돌 도메인이 여러개로 나뉜다.

데이터를 보낼 때 충돌이 일어난다.

, 400개면 100대로 나뉘어 충돌이 일어나는 경우의 수를 줄이게 된다.

결국 많아지게 되면 허브와 비슷한 상황을 마주 한계 있음

 

broadcast domain

브리지

(포트2-4개 보유)

브리지

(포트2-4개 보유)

1개 포트와 연결된

허브 1

=colligion

domain 1

1개 포트와 연결된

허브 1

=colligion

domain 1

1개 포트와 연결된

허브 1

=colligion

domain 1

1개 포트와 연결된

허브 1

=colligion

domain 1

1개 포트와 연결된

허브 1

=colligion

domain 1

1개 포트와 연결된

허브 1

=colligion

domain 1

허브와 연결된 pc

허브와 연결된 pc

허브와 연결된 pc

허브와 연결된 pc

허브와 연결된 pc

허브와 연결된 pc

장점

-허브를 여러개 연결함으로 데이터를 1대 이상 보낼 수 있다.

-브리지 밑으로 허브 여러개 연결 되어 있다. 충돌 도메인이 여러개로 나뉘어 있다.

, 400개면 100대로 나뉘어 충돌이 일어나는 경우의 수를 줄이게 된다.

한계

결국 많아지게 되면 허브와 비슷한 상황을 마주 한계 있음

=>결국 데이터를 보낼 때 충돌이 똑같이 일어난다.

 

3. 스위치

이러한 배경에서 swtich가 나오게 되었다.

 

각각의 포트가 colligion domain이다.

각각의 pc가 콜리전 도메인이기 때문에 충돌이 일어나지 않음

#충돌 도메인은 여러개 지만, 여전히 broadcast domain1개이다.

 

broadcast가 올 때에 작업하고 있는 pcinterrupt 되는데 자꾸 오면 작업을 못한다.

이것이 세지면 arp 공격이라고 한다.

 

네트워크가 커지면 커질수록 broadcast가 늘어나니 해야 할 일을 못하는 상황에 마주한다.

솔루션 broadcast를 자른다? 전체 네트워크가 안되니 ㄴㄴ

router를 이용한다. router를 이용하면 broadcastrouter를 못 넘어간다.

다른 네트워크가 되고, 통신

 

switch csma/co 방법을 사용하지 않는다.

wifi csma/ca colligion avoid

 

switched network

shared network hub, wifi, 모바일통신

 

broadcast

스위치

스위치

colligion domain1

colligion domain1

colligion domain1

colligion domain1

=포트 1

=포트 1

=포트 1

=포트 1

=포트1개에 pc연결

=포트1개에 pc연결

=포트1개에 pc연결

=포트1개에 pc연결

각각의 포트가

colligion domain

각각의 pc가 콜리전 도메인이기 때문에

충돌이 안일어남

각각의 포트가

colligion domain

각각의 pc가 콜리전 도메인이기 때문에

충돌이 안일어남

각각의 포트가

colligion domain

각각의 pc가 콜리전 도메인이기 때문에

충돌이 안일어남

각각의 포트가

colligion domain

각각의 pc가 콜리전 도메인이기 때문에

충돌이 안일어남

장점

-각각의 포트가 colligion domain이다.

각각의 pc가 콜리전 도메인이기 때문에 충돌이 일어나지 않음

단점

-broadcast가 올 때에 다른을 작업하고 있는 pc들이 interrupt 되는데

broadcast가 자꾸 오면 작업을 못한다.

스위치 한계

네트워크가 커지면 커질수록 broadcast가 많아지니/늘어나니 해야 할 일을 못하는 상황에 마주한다.

 

통신방법

허브/브리지-csma/cd라는 방법으로 이더넷이 통신을 하고 데이터를 보낸다.

switch csma/co 방법을 사용하지 않는다. ? csma/cd가 아니고?

wifi csma/ca colligion avoid

 

switched network(1개 이상의 스위치로 연결된 네트워크, 인터넷 없이도 소통가능함)

shared network =ex)hub, wifi, 모바일통신

솔루션

솔루션 broadcast를 자른다? 전체 네트워크작동이 안되니 ㄴㄴ

=>router를 이용한다. router를 이용하면 broadcastrouter를 못 넘어간다.

다른 네트워크가 되고, 통신

 

broadcast 과정

#통신을 하기 위해 mac주소를 확인해야 하고 확인하기 위해서는 broadcast를 통해 확인

-상대방의 mac주소가 있어야 연결이 가능한데 모르면 어떻게 알아내느냐 broadcast를 통해서 확인한다.

broadcast

arp(address resolution protocol)

=>내가 알고 있는 ip주소를 가진

pcmac address를 알려달라는 요청이 broadcast 이다.

ip주소를 mac(media access control) 주소로 바꾸는 과정

broadcast 일어나는 과정

 

1. 내가 알고 있는 ip주소를 가진 pc의    
   mac 주소를 알려줘라는 브로드캐스트를 pc에게 보냄


2.
브로드 캐스트 과정에서 전체의 pc에게 해당
   ip주소를 가지고 있는지 확인하는 요청을 보냄


3. ip
주소를 가지고 있는 pc가 브로드캐스트를 요청한
   해당
pc에게 전달


4.
해당 ip주소를 가지고 있는 pc의 맥주소 를 브로드캐스트     요청한 pc에게 보내면 비로써 통신이 시작된다.

 

 

라우터까지의 과정 순서와 장비별 특징확인

허브 -> pc 1대당 데이터 1개만 보낼 수 있음

브리지 -> 브리지 포트별로 허브를 연결하여 pc들을 연결하여 동시에 pc1대 이상 데이터 1개 이상을 동시에 할 수 있다. 하지만 충돌의 경우의 수를 낮출 뿐 브로드캐스트로 인해 결국엔 충돌이 일어나는 한계가 있음

 

스위치-> 

(포트1개가 pc와 연결되고 pc1대 자체가 콜리전도메인이라서 충돌이 일어나지 않는다.

 브로드캐스트가 일어날 때 충돌이 된다는 한계가 있음.)


라우터 (브로드캐스트가 못넘어오도록 한다)

 

스위치는 –네트워크를 나눌 수 없는 한계가 있다.

라우터 – 네트워크를 나눌 수 있다.

 

 

HORIZON DASHBOARD 설치

 

CONTROL NODE에서

 

1. openstack repository 설치

yum -y install centos-release-openstack-train

sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-OpenStack-train.repo

 

2.대시보드 설치

yum install openstack-dashboard

 

*내가 잊고 안해준 것

firewall-cmd --add-service={http,https} --permanent

 

3. 대시보드 config 수정 전 원본 백업

cp /etc/openstack-dashboard/local_settings

/etc/openstack-dashboard/local_settings.org

 

대시보드 config 수정

vi /etc/openstack-dashboard/local_settings

 

line 28

WEBROOT =’/dashboard/‘

 

line 39

ALLOWED_HOSTS = [‘*’, ‘10.0.0.111’]

 

line 94 to 99 uncomment

CACHES = {

‘default’ : {

‘BACKEND’ : ‘d jango.core.cache.backends.memcached.MemcachedCache’,

‘LOCATION’ : ‘10.0.0.111:11211’ ##control node ip 주소 설정

},

}

 

line 118

OPENSTACK_HOST = “10.0.0.111”

 

line 119

OPENSTACK_KEYSTONE_URL = “http://%s:5000/v3/” % OPENSTACK_HOST

 

line 125 True -> False 로 변경

line 126 - True -> False 로 변경

line 128 - True -> False 로 변경

line 129 - True -> False 로 변경

line 132 - True -> False 로 변경

line 133 - True -> False 로 변경

line 134 - True -> False 로 변경

 

line 147 TIME_ZONE = “Asia/Seoul” 으로 설정

 

맨 끝줄 다음 줄에 이어 line 401, 402에 두줄 추가

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = “Default”

OPENSTACK_KEYSTONE_DEFAULT_ROLE = “user”

 

OpenVSwitch

(장현정 작가님의 "오픈스택을 다루는 기술" 서적을 참고하였음을 밝힙니다.) 

Open vSwitch(이하 OVS)는 클라우드 서비스 내(內) 가상의 Network Bridge와 Flow rule을 사용하여

효율적으로 가상머신에 패킷을 포워딩하기 위한 가상의 스위치

 

참고링크 https://m.blog.naver.com/love_tolty/220237750951

 

네트워크 어댑터 추가하기 (host only, no dhcp, eth2)

브릿지 만들어 이용해보기

 

1. ovs-vsctl add-br [브릿지이름] #브릿지만들기

작업] ovs-vsctl add-br br-eth2

 

2. ovs-vsctl add-port [브릿지이름] [인터페이스카드이름] #브릿지 포트에 eth1을 추가

작업] ovs-vsctl add-port br-eth2 eth2

 

3. 레이어2 에이전트 설정( vi /etc/neutron/plugins/ml2/ml2_conf.ini )

마지막 줄에 추가(다른 섹션과 겹치지 않게)

[ml2_type_flat]

flat_networks = physnet1

 

4. OSV 에이전트 설정( vi /etc/neutron/plugins/ml2/openvswitch_agent.ini )

마지막 줄에 추가(다른 섹션과 겹치지 않게)

[ovs]

bridge_mappings = physnet1:br-eth2

 

5. 가상 네트워크 생성

openstack network create --project [project ID] --share \

--provider-network-type flat

--provider-physical-network [ovs에 설정된 브릿지네트워크ID] \

[가상 네트워크 이름]

 

작업1] projectID=$(openstack project list | grep service | awk '{print $2}')

-> service project의 두번째 필드 값을 추출해 변수에 저장(첫번째 필드는 |(파이프))

awk는 필드값을 추출해 표시하는 명령어 입니다. 작은 따옴표를 이용해 패턴을 표현하거나 표준입력함수를 이용합니다.

$0은 모든 필드값을 나타내며, 이후 1,2,3,4 이런식으로 필드 값을 정해 줄 수 있습니다.

 

예를 들어 ls -al을 사용했다라고 한다면

-rw-------. 1 root root 13889 1211 16:25 .bash_history

요런 형태로 나타나게 되는데,

 

ls -al | awk '{ print $3 }' 이라고 입력하면 3번째 필드인 root만 표시되게 됩니다.

물론 awk '{ print $3,4 }' 와 같이 콤마를 이용해 한번에 여러필드를 출력하는 것도 가능합니다.

위의 작업은 service라는 이름의 프로젝트를 검색해 ID만 추출하여 변수 projectID에 넣는 과정입니다.

 

작업2] openstack network create --project $projectID \

--share --provider-network-type flat \

--provider-physical-network physnet1 sharednet1

 

6. 서브넷 10.0.0.0/24를 만들어 둔 네트워크(sharednet1)에다가 만들어 넣습니다.

openstack subnet create subnet1 \

--network sharednet1 --project $projectID --subnet-range 10.0.0.0/24 \

--allocation-pool start=10.0.0.200,end=10.0.0.254 \

--gateway 10.0.0.2 --dns-nameserver 10.0.0.2

=> 10.0.0.0/24 대역대의 네트워크인 subnet1 이라는 서브넷을 만들어 sharednet1 이라는 이름으로 미리 정의해 두었던 가상의 네트워크에 넣어 주고 있습니다.

 

7. 여기까지가 기본적인 세팅의 완료. 이제 인스턴스 생성가능

 

 

 

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

 

22. 프로젝트 사용자, 역할 생성하기

openstack project create --domain default \

--description “Service Project” service

 

 

openstack project list

 

#openstack project list에서 해결하지 못한 장애-Internal Server Error(HTTP 500)

 

openstack domain list

openstack user create domain default\

--password-prompt demo

User Password : 비번쓰기

Repeat Password : 비번쓰기

 

openstack user list

openstack role create user

openstack role list

openstack role add --project service --user demo user

(openstack role list --user demo project service)????

openstack endpoint list

15. keystone 패키지 설치

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

openstack-utils python-openstackclient httpd mod_wsgi

 

 

16. keystone 설정하기

vi /etc/keystone/keystone.conf

 

->line 431에 하기 내용 추가

memcache_servers = 10.0.0.30:11211

->line 572에 하기 내용 추가

connection = mysql+pymysql://keystone:123qwe@192.168.0.210/keystone

->line 2436 #을 지우기:

사용자 변환 but 내용만 삽입

 

그리고

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

(keystone에서 생성한 keystone 데이터베이스에 필요한 테이블이 생기게 해준다.)

 

#internal server httpd401 장애발생

vi /etc/keystone/keystone.conf

connection = mysql+pymysql://keystone:123qwe@192.168.0.210/keystone

keystone 비번설정을 위에 작성 안할 경우 에러가 생긴다.

 

다음화면과 같이 완료 (참고 수정시 :set nu를 하면 왼쪽화면에 노란색번호가 나온다.)

 

17. mariadb rabbimq 작동 확인

systemctl start mariadb

systemctl start rabbimq

systemctl status 로 각각 확인 해줄 것

 

18. keystone manage 실행

keystone manage실행

keystone-manage fernet_setup --keystone-user keystone --keystone-group

keystone

keystone 초기세팅(사용자 및 그룹 지정)

keystone-manage credential_setup --keystone-user keystone keystone-group

keystone

 

keystone bootstrap작성

export controller=192.168.0.210 (내가 bridge 외부에 할당한 ip주소)

keystone-manage bootstrap\

> --bootstrap-password adminpassword\

> --bootstrap-admin-url http://$controller:5000/v3/ \

> --bootstrap-internal-url http://10.0.0.30:5000/v3/ \

> --bootstrap-public-url http://$controller:5000/v3/ \

> --bootstrap-region-id RegionOne

 

 

19. (selinux 에 있는 특정항목만 열어준다.)

setsebool -P httpd_use_openstack on

setsebool -P httpd_can_network_connect on

setsebool -P httpd_can_network_connect_db on

firewall-cmd add-port=5000/tcp --permanent

firewall-cmd reload

 

20. 웹 서버 및 방화벽 설정하기

ln s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

systemctl start httpd

systemctl enable httpd

 

21. vi ~/keystonerc 환경변수 생성

a. vi keystonerc

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=adminpassword

export OS_AUTH_URL=http://192.168.0.210:5000/v3

=>210은 내가 할당한 ip 102로 설정함

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

export PS1='[\u@\h \W(keystone)]\$' ->프롬프트 변경

 

b. chmod 600 ~/keystonerc

source keystonerc

echo “source ~/keystonerc” >> ~/.bash_profile

openstack token issue

openstack token issue 실행후 마주한 에러

#export controller=192.168.0.210 를 타입 안하고 넘어가니

unexpected exception for http://5000:v3/ Invalid URL 애러가 나왔다.

 

#internal server httpd500에러 이유;

부트스트랩에서 설정한 것과 연계되는 keystone 데이터베이스가 없어서 internal server 문제였다.

그래서 maria dbkeystone 데이터베이스 생성했다.

 

httpd500같은 에러 메시지 발생

-역시나 같은 데이터베이스가 생성이 되지 않았고, 문제는 vi /etc/keystone.conf에서

571라인에서 mysql+pymysql에서 맨 끝에 keystone의 철자가 틀렸다.

 

그리고 다시 sync 명령어를 해줌으로써 keystone 데이터베이스를 생성해야 openstack token issue에서 넘어간다.

 

#error the request you have made requires authentication auth와 관계된 것이

vi /keystone/keystone.conf 설정에

mysql+pymysql 에 넣는 비번설정을 해주지 않아 auth 문제가 일어난 것.

 

#openstack token issue 하니 다음과 같은 장애발생 해결못함

 

#vi ~/keystonerc를 누르니 하기와 같은 문제가 발생했다.

~ = home directory

 

다른 프로세스가 사용 중인지 확인

 

확인결과 사용중이 아니고, 비정상 종료된 적이 있는지에 해당되는 것으로 보여

ls al swp 파일이 여러개 있는 것을 확인

rm rf .keystone.sw*

파일 삭제완료

 

#home directory에 있어 vi ~/keystonerc 아닌 vi keystonerc로 확인

나머지 하기에 있는 것을 작성한다.

 

##내가 풀지 못한 장애

-bad request http400

-internal server http500 (해결함)

 

#-sync 명령어가 되지 않고 데이터베이스 생성이 되지 않았다.

알고보니 책에 있는 비번을 grant all privileges to glance에 사용 되는 비번과 그대로 사용해서 그런 것이었다.

그러니 비번을 항상 잘 체크하면서 작성할 것

 

#새롭게 알게 된 것

openstack project delete + id 번호를 써야 삭제가 된다.

12. DB설정

mariaDB에 접속

mysql -u root p

 

#비번도 안만들었는데 자꾸 아래의 메시지가 발생

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

systemctl start mariadb 설정을 안해준 것이었다.

mariadb든 무엇이든 systemctl start mariadb를 작동시켜줄 것!!

 

13. Keystone이 사용할 DB생성

create database keystone;

 

14. Keystone 사용자를 생성하고 pw를 부여, 모든 권한 부여

- 로컬에서의 접속

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

 

- 원격지에서의 접속

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

 

-적용

flush privileges;

 

-나가기

exit

(여기서 show tables; 해도 아무것도 보이지 않은 아직 sync 하기 전)

 

 

FTP 서버..

 

FTP서버를 구축을 해보기로 했었다.

일단은 그저 보고 따라 치기를 반복했다.

 

퇴사후 바로 과정을 들었고, 선수학습 없이 따라가려고 해서 그런걸까..

정말 3주 동안은 이 과정을 잘못 선택했나 고민을 계속 했었던 것 같다.

평균적으로 한달동안 고비라고 하더니 나도 그중에 한명이었던 것 같다.

 

설명하고 또 다른 실습하고..

그러니까 그 시간에 이해를 못하면 집에가서 다시 복습을 통해 깨우치거나

같이 공부하는 동생들 형들에게 안물어보고는 도저히 따라갈 수 없었다.

 

2주 정도는 담임교수님 그리고 바로 이해하고 따라가는 동생 하고 형에게 부탁해서

수업이 끝나고 설명을 계속 듣고 해야만 했다.

 

그리고 3,4주 동안은 익숙해 지기 위해서 수업중간에 쉬는시간에도 무조건 리눅스만 보고 따라치기를 반복했던 것 같다.

지나고 나니 그땐 그랬지 라며 얘기할 수 있지만, 그 당시에는 ... 정말정말 간절히 무조건 따라가야만 했다.

 

 

 

 

+ Recent posts