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. 여기까지가 기본적인 세팅의 완료. 이제 인스턴스 생성가능

 

 

 

Neutron 설치

 

1.MariaDB 데이터베이스 및 사용자 생성 후 권한 부여

mysql -u root -p

create database neutron_ml2;

grant all privileges on nuetron_ml2.* to neutron

 

2.keystoneneutron 사용자 생성 및 역할 부여

openstack user create domain default project service password 123qwe neutron

openstack role add project service user neutron admin

 

3.네트워크 서비스 추가

openstack service cerate name neutron description “OpenStack Networking service” network

 

4.네트워크 서비스 엔드포인트 생성

echo $controller

export controller=10.0.0.30

openstack endpoint create region RegionOne network public http://$controller:9696

openstack endpoint create region RegionOne network internal http://$controller:9696

openstack endpoint create region RegionOne network admin http://$controller:9696

 

 

5.Neutron 설치하기

yum y install enablerepo=centos-openstack-train,epel openstack-neutron-ml2 openstack-neutron-openvswitch

 

 

6. neutron 설정파일 내용 수정하기

mv /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak

 

vi /etc/neutron/neutron.conf

[DEFAULT]

core_plugin = ml2

service_plugins = router

auth_strategy = keystone

state_path = /var/lib/neutron

dhcp_agent_notification = True

allow_overlapping_ips = True

notify_nova_on_port_status_changes = True

notify_nova_on_port_data_changes = True

# RabbitMQ connection info

transport_url = rabbit://openstack:password@10.0.0.30

 

# 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 = neutron

password = servicepassword

 

# MariaDB connection info

[database]

connection = mysql+pymysql://neutron:password@10.0.0.30/neutron_ml2

 

# Nova connection info

[nova]

auth_url = http://10.0.0.30:5000

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = servicepassword

 

[oslo_concurrency]

lock_path = $state_path/tmp

 

chmod 40 neutron.conf

chgrp neutron neutron.conf

 

vi l3_agent.ini -> 두번째 줄에 추가

interface_driver=openvswitch

 

vi dhcp_agent.ini -> 두번째 줄에 추가

interface_driver=opensvswitch

dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata=true

 

vi metadata_agent.ini -> 두번째 줄에 추가

nova_metadata_host = 10.0.0.30

metadata_proxy_shared_secret = metadata_secret

212 memcache_servers = localhost:11211

 

cd /etc/neutron/plugins/ml2

vi ml2_conf.ini

[ml2]

type_drivers = flat,vlan,gre,vxlan

tenant_network_types =

mechanism_drivers = openvswitch

extension_drivers = port_security

 

vi openvswitch_agent.ini

[securitygroup]

firewall_driver = openvswitch

enable_security_group = true

enable_ipset = true

 

vi /etc/nova/nova.conf

[DEFAULT]섹션에 추가

use_neutron = True

linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

vif_plugging_is_fatal = True

vif_plugging_timeout = 300

 

 

7. SELinux 설정하기

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

setsebool -P neutron_can_network on

setsebool -P haproxy_connect_any on

setsebool -P daemons_enable_cluster_mode on

 

SELinux 모듈 컴파일

vi my-ovsofctl.te

module my-ovsofctl 1.0;

 

require {

type neutron_t;

class capability sys_rawio;

}

 

8. SELinux 설정하기

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

setsebool -P neutron_can_network on

setsebool -P haproxy_connect_any on

setsebool -P daemons_enable_cluster_mode on

 

selinux 모듈 컴파일

cd /etc/selinux

checkmodule m M o my-ovsofctl.mod my-ovsofctl.te

semodule_package --outfile my-ovsofctl.pp --module my-ovsofctl.mod

semodule -i my-ovsofctl.pp

 

 

9. 방화벽 추가

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

firewall-cmd --reload

 

10. Neutron서비스 실행

systemctl start openvswitch

systemctl enable openvswitch

ovs-vsctl add-br br-int

 

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

-> ml2_conf.ini가 실행될 때 /etc/neutron/plugin.ini 이 같이 실행 된다.

 

su -s /bin/bash neutron -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head“    (위에줄하고 한명령어)

#장애 발생

해본 것들

grant all privileges 2개 주어야 하는데

하나만 권한을 주니 작동이 된다.

그리고 conf

 

for service in server dhcp-agent l3-agent metadata-agent openvswitch-agent; do

systemctl start neutron-$service

systemctl enable neutron-$service

done

 

systemctl restart openstack-nova-api openstack-nova-compute

openstack network agent list

#neutron이 싱글노드에서 하는 일은 없다.

 

+ Recent posts