'OpenStack Kilo install'에 해당되는 글 6건

  1. 2015.10.01 OpenStack Kilo Install - Dashboard (10)
  2. 2015.10.01 OpenStack Kilo Install - Network Service (20)
  3. 2015.10.01 OpenStack Kilo Install - Compute Service (6)
  4. 2015.10.01 OpenStack Kilo Install - Image Service
  5. 2015.09.30 OpenStack Kilo install - Identity Service (13)
  6. 2015.09.30 OpenStack Kilo Install - Common (6)

OpenStack Kilo Install - Dashboard

OpenStack/Install_OpenStack 2015.10.01 20:19

OpenStack Horizon Install

OpenStack에서 사용자 UI인 Dashboard는 Horizon 이라는 프로젝트 이름으로 개발되고 있다.


사용자는 Horizon을 통하여 가상네트워크를 생성하고 VM을 할당할 수 있다.


Dashboard인 Horizon은 Control Node에 설치하여야 하며 Public IP를 통하여 접근이 가능하여야 한다.



OpenStack Horizon Install




1. Horizon 설치 및 설정


1-1. Horizon 설치

    • Horizon 다운로드
$ sudo apt-get install openstack-dashboard
    • 기본적으로 openstack-dashboard 만 다운로드 받으면 정상동작을 한다.
    • 혹시라도 Horizon을 수정하고 싶은 경우 아래를 따르면 된다.
      • Horizon 설정
        • /etc/openstack-dashboard/local_settings.py
$ sudo vi /etc/openstack-dashboard/local_settings.py

[파일 내용 추가 및 수정]----------------------------------------------------------------

OPENSTACK_HOST = "controlnode01"

ALLOWED_HOSTS = '*'

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

TIME_ZONE = "<Default:UTC / 선택가능>"
-------------------------------------------------------------------------------------------
    • Horizon 적용
$ sudo service apache2 reload



1-2. Horizon 확인

    • WEB 접속
http://<Control Node IP>/horizon



Trackbacks 0 : Comments 10

OpenStack Kilo Install - Network Service

OpenStack/Install_OpenStack 2015.10.01 11:14

OpenStack Neutron Install

드디어 Network Service를 설치할 순간이 왔다.


OpenStack에서 제공하는 네트워크 서비스는 2가지 타입이 있다.


nova network / neutron


본 포스팅에서는 neutron을 다루고자 한다.


OpenStack 사용자는 Neutron 서비스를 통하여 가상 네트워크를 구성한다.


간단하게는 가상네트워크(서브넷 범위 포함)를 생성하고 서브넷이 다른 가상 네트워크 끼리 가상 라우터를 사용하여 연동하는 네트워킹 서비스이다.


Neutron은 대표적으로 OpenvSwitch(이하, OVS)를 활용하여 가상의 네트워크를 구성한다.


Neutron의 동작 메커니즘을 파악하기 위해서는 OVS 관련 지식이 필요하다.


Neutron 메커니즘은 강효성 군의 블로그를 살펴보면 된다.

(아마도 이보다 더 잘 만들 수는 없을 것 이다. http://blog.naver.com/love_tolty/220237750951)


주의할 점은 OpenStack Network은 OpenStack을 구성하고 있는 Control/Network/Compute Node 모두 Neutron 이 설치되고 설정되어야 한다.


또한 실제 Network Service가 실행되는 Network/Compute Node 사이에는 Full mesh로 터널이 구성되기 때문에 Data Network을 위한 별도의 Network을 구성하여야 한다.


우리는 이미 eth2를 통하여 별도의 Data Network을 구성하였다.



OpenStack Neutron Install



1. Control Node


1-1. Neutron DataBase 사용자 등록 및 테이블 생성

    • DB 사용자 등록 (neutron)
$ mysql -u root -p
    • Neutron DB 생성
MariaDB [(none)]> CREATE DATABASE neutron;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> exit

1-2. Neutron 관련 OpenStack CLI 사용을 위한 admin 계정 활성화

$ source admin-openrc.sh

1-3. Keystone Neutron 서비스 등록

    • Neutron 사용자 등록
      • 여기서 설정한 Password는 neutron.conf 등의 파일에 사용함 (기억할 것)
$ openstack user create --password-prompt neutron

[결과]
User Password:
Repeat User Password:
+-----------+------------------------------------------+
| Field        | Value                                         |
+-----------+------------------------------------------+
| email       | None                                          |
| enabled    | True                                           |
| id            | 4ff9b670a6c444b2bb432545206f1322 |
| name       | neutron                                       |
| username | neutron                                        |
+-----------+------------------------------------------+
    • admin 및 nova 사용자의 nova 관련 제어를 위한 role 생성
$ openstack role add --project service --user neutron admin

[결과]
+-------+-------------------------------------------+
| Field   | Value                                           |
+-------+-------------------------------------------+
| id       | 9c6551f223cc492392c51c2e454756e4 |
| name  | admin                                          |
+-------+-------------------------------------------+
    • neutron 서비스 entry 생성
$ openstack service create --name neutron --description "OpenStack Networking" network

[결과]
+-------------+------------------------------------------+
| Field          | Value                                          |
+-------------+------------------------------------------+
| description | OpenStack Networking                    |
| enabled     | True                                            |
| id             | 1e6b43342a7e4cdeaf3112a2fb805014 |
| name        | neutron                                       |
| type          | network                                       |
+-------------+------------------------------------------+
    • neutron 서비스 end point 등록
$ openstack endpoint create --publicurl http://controlnode01:9696 --adminurl http://controlnode01:9696 --internalurl http://controlnode01:9696 --region RegionOne network

[결과]
+--------------+--------------------------------------------+
| Field            | Value                                           |
+--------------+--------------------------------------------+
| adminurl       | http://controlnode01:9696                |
| id                | 8d8b6c08f195433590bb7010667c8421 |
| internalurl     | http://controlnode01:9696                |
| publicurl       | http://controlnode01:9696                |
| region          | RegionOne                                    |
| service_id      | 1e6b43342a7e4cdeaf3112a2fb805014 |
| service_name | neutron                                        |
| service_type  | network                                        |
+--------------+--------------------------------------------+


1-4. Neutron 패키지 인스톨 및 설정

    • Neutron 패키지 인스톨
$ sudo apt-get install neutron-server neutron-plugin-ml2 python-neutronclient
    • Neutron 환경 설정
      • /etc/neutron/neutron.conf
$ sudo vi /etc/neutron/neutron.conf

[파일 내용 추가 및 수정]----------------------------------------------------------------

[DEFAULT]
...
verbose = True
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://controlnode01:8774/v2

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[database]
...
connection = mysql://neutron:NEUTRON_DBPASS@controlnode01/neutron

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = <Neutron 사용자 등록시 설정한 Pass>

[nova]
...
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = RegionOne
project_name = service
username = nova
password = <Nova 사용자 등록시 설정한 Pass>
--------------------------------------------------------------------------------------------
      • /etc/neutron/plugins/ml2/ml2_conf.ini
        • mechanism_driver 관련하여 SDN Controller와 연동하는 경우 해당하는 이름을 설정하고 이에 따른 다른 설정도 완성한다.
        • SDN Controller와 연동되는 부분은 따로 포스팅 할 예정이다.
$ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini

[파일 내용 추가 및 수정]----------------------------------------------------------------

[ml2]
...
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch

[ml2_type_gre]
...
tunnel_id_ranges = 1:1000

[ml2_type_vxlan]
...
vni_ranges = 1001:2000

[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
----------------------------------------------------------------------------------------------


1-5. neutron 서비스를 위한 Nova 설정

    • Nova 설정
      • /etc/nova/nova.conf
$ sudo vi /etc/nova/nova.conf

[파일 내용 추가]--------------------------------------------------------------------

[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[neutron]
...
url = http://controlnode01:9696
auth_strategy = keystone
admin_auth_url = http://controlnode01:35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = <Neutron 사용자 등록시 설정한 Pass>
...
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET
------------------------------------------------------------------------------------------------
    • 변경사항 DB 적용
$ sudo su
$ su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron


1-6. neutron 서비스 재실행

    • neutron 서비스 재실행
$ sudo service nova-api restart
$ sudo service neutron-server restart


1-7. neutron 서비스 확인

    • neutron 서비스 동작확인
      • admin 사용자 계정 활성화
$ source admin-openrc.sh
    • neutron server 동작 확인
$ neutron ext-list

[결과]
+-------------------------+-------------------------------------------------------+
| alias                        | name                                                          |
+-------------------------+-------------------------------------------------------+
| security-group           | security-group                                              |
| l3_agent_scheduler      | L3 Agent Scheduler                                       |
| net-mtu                    | Network MTU                                              |
| ext-gw-mode             | Neutron L3 Configurable external gateway mode |
| binding                     | Port Binding                                                |
| provider                    | Provider Network                                          |
| agent                       | agent                                                         |
| quotas                      | Quota management support                           |
| subnet_allocation        | Subnet Allocation                                         |
| dhcp_agent_scheduler  | DHCP Agent Scheduler                                  |
| l3-ha                        | HA Router extension                                     |
| multi-provider            | Multi Provider Network                                  |
| external-net               | Neutron external network                               |
| router                       | Neutron L3 Router                                       |
| allowed-address-pairs  | Allowed Address Pairs                                   |
| extraroute                 | Neutron Extra Route                                     |
| extra_dhcp_opt           | Neutron Extra DHCP opts                               |
| dvr                           | Distributed Virtual Router                              |
+-------------------------+-------------------------------------------------------+


2. Network Node


2-1. Network Node 기본 설정

    • 커널 네트워킹 설정
$ sudo vi /etc/sysctl.conf

[파일 내용 수정]-----------------------------------------

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
-----------------------------------------------------------
    • 변경 사항 적용
$ sudo sysctl -p


2-2. Neutron 패키지 인스톨 및 설정

    • Neutron 패키지 인스톨
$ sudo apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent
    • Neutron 환경 설정
      • /etc/neutron/neutron.conf
        • Database 섹션은 모두 comment 처리 함
$ sudo vi /etc/neutron/neutron.conf

[파일 내용 추가 및 수정]--------------------------------------------

[DEFAULT]
...
verbose = True
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = <Neutron 사용자 등록시 설정한 Pass>
-----------------------------------------------------------------------
    • ml2 환경 설정
      • /etc/neutron/plugins/ml2/ml2_conf.ini
$ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini

[파일 내용 추가 및 수정]---------------------------------------

[ml2]
...
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch

[ml2_type_gre]
...
tunnel_id_ranges = 1:1000

[ml2_type_vxlan]
...
vni_ranges = 1001:2000

[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

[ovs]
...
local_ip = 10.0.1.21
tunnel_type = vxlan
tunnel_bridge = br-tun
integration_bridge = br-int
tunnel_id_ranges=1001:2000
tenant_network_type = vxlan
enable_tunneling = True

[agent]
...
tunnel_types = vxlan
vxlan_udp_port = 4789
------------------------------------------------------------------
    • L3 환경 설정
      • /etc/neutron/l3_agent.ini
$ sudo vi /etc/neutron/l3_agent.ini

[파일 내용 추가 및 수정]---------------------------------------

[DEFAULT]
...
verbose = True
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =
router_delete_namespaces = True
------------------------------------------------------------------
    • dhcp 환경 설정
      • /etc/neutron/dhcp_agent.ini
$ sudo vi /etc/neutron/dhcp_agent.ini

[파일 내용 추가 및 수정]---------------------------------------

[DEFAULT]
...
verbose = True
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
dhcp_delete_namespaces = True
...
dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf
------------------------------------------------------------------
      • /etc/neutron/dnsmasq-neutron.conf 생성
$ sudo vi /etc/neutron/dnsmasq-neutron.conf

[신규 파일 생성]--------------------------------------------------

dhcp-option-force=26,1454
--------------------------------------------------------------------

* MTU 사이즈를 변경하는 경우 아래와 같이 변경하면 된다.
* 아래의 예는 MTU 사이즈 1400으로 고정하는 예이다.
[신규 파일 생성]--------------------------------------------------

dhcp-option-force=26,1400
--------------------------------------------------------------------
      • dhsmasq kill
$ pkill dnsmasq
    • Metadata 환경 설정
      • /etc/neutron/metadata_agent.ini
$ sudo vi /etc/neutron/metadata_agent.ini

[파일 내용 추가 및 수정]---------------------------------------

[DEFAULT]
...
verbose = True
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_region = RegionOne
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = <Neutron 사용자 등록시 설정한 Pass>
...
nova_metadata_ip = controlnode01
...
metadata_proxy_shared_secret = METADATA_SECRET
------------------------------------------------------------------


2-3. OpenvSwitch 설정

    • ovs 재실행
$ sudo service openvswitch-switch restart
    • ovs external bridge 생성 및 포트 바인딩
      • Network Node의 Public IP를 설정하여야 하는 인터페이스를 바인딩한다. (본 예제는 eth0 이다)
$ sudo ovs-vsctl add-br br-ex

$ sudo ovs-vsctl add-port br-ex eth0
      • network driver의 GRO(Generic Receive Offload) 종료
$ sudo ethtool -K eth0 gro off
    • network service 재실행
$ sudo service neutron-plugin-openvswitch-agent restart
$ sudo service neutron-l3-agent restart
$ sudo service neutron-dhcp-agent restart
$ sudo service neutron-metadata-agent restart


2-4. 동작 확인

    • Control Node에서 admin 사용자를 활성화 한다.
$ source admin-openrc.sh
    • neutron agent 리스트를 확인한다.
$ neutron agent-list

[결과]
+-----------------------------------------------+-----------------------+---------------+-------+----------------+-----------------------+
| id                                                      | agent_type            | host             | alive   | admin_state_up | binary                 |
+-----------------------------------------------+-----------------------+---------------+-------+----------------+-----------------------+
| 01ede9f9-fe57-4caf-b976-bae7f6a1f04d    | Metadata agent       | networknode01 | :-)   | True    | neutron-metadata-agent    |
| 2e0e5956-6fa6-406d-9f26-9b275f85c625   | Open vSwitch agent | networknode01 | :-)   | True    | neutron-openvswitch-agent |
| 44c9169b-b9d9-4251-9e7a-11097d3972f6 | Open vSwitch agent | networknode02 | :-)   | True    | neutron-openvswitch-agent |
| a6c75b6b-9723-4942-91ef-3d8f2b69b7f9  | Metadata agent       | networknode02 | :-)   | True    | neutron-metadata-agent     |
| b1ce9201-33cd-4c53-9c33-5783a807180c | L3 agent                 | networknode02 | :-)   | True    | neutron-l3-agent              |
| c9db2aa0-4086-44ec-bc1f-3e8755916964 | DHCP agent            | networknode02 | :-)   | True     | neutron-dhcp-agent          |
| cee50d11-f753-4c42-a678-06aee0c963da | L3 agent                 | networknode01 | :-)   | True     | neutron-l3-agent              |
| f8255b22-7833-4db1-b3f4-d6e4d6578f04 | DHCP agent            | networknode01 | :-)   | True     | neutron-dhcp-agent          |
+----------------------------------------------+-----------------------+---------------+-------+----------------+------------------------+


3. Compute Node


3-1. Network Node 기본 설정

    • 커널 네트워킹 설정
$ sudo vi /etc/sysctl.conf

[파일 내용 수정]-------------------------------------------------

net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
-------------------------------------------------------------------
    • 변경사항 적용
$ sudo sysctl -p


3-2. Neutron 패키지 인스톨 및 설정

    • Neutron 패키지 인스톨
$ sudo apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent
    • Neutron 환경 설정
      • /etc/neutron/neutron.conf
        • Database 섹션은 모두 comment 처리 함
$ sudo vi /etc/neutron/neutron.conf

[파일 내용 추가 및 수정]--------------------------------------------

[DEFAULT]
...
verbose = True
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = <Neutron 사용자 등록시 설정한 Pass>
-----------------------------------------------------------------------
    • ml2 환경 설정
      • /etc/neutron/plugins/ml2/ml2_conf.ini
$ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini

[파일 내용 추가 및 수정]---------------------------------------

[ml2]
...
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch

[ml2_type_gre]
...
tunnel_id_ranges = 1:1000

[ml2_type_vxlan]
...
vni_ranges = 1001:2000

[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

[ovs]
...
local_ip = 10.0.1.31
tunnel_type = vxlan
tunnel_bridge = br-tun
integration_bridge = br-int
tunnel_id_ranges=1001:2000
tenant_network_type = vxlan
enable_tunneling = True

[agent]
...
tunnel_types = vxlan
vxlan_udp_port = 4789
------------------------------------------------------------------


3-3. OpenvSwitch 설정

    • ovs 재실행
$ sudo service openvswitch-switch restart


3-4. Nova Compute 설정

    • nova 설정
      • /etc/nova/nova.conf
$ sudo vim /etc/nova/nova.conf

[파일 내용 추가 및 수정]---------------------------------------

[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[neutron]
...
url = http://controlnode01:9696
auth_strategy = keystone
admin_auth_url = http://controlnode01:35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = <Neutron 사용자 등록시 설정한 Pass>
------------------------------------------------------------------
    • Compute Service 재 실행
$ sudo service nova-compute restart


3-5. Neutron Network 재실행

    • neutron agent 재 실행
$ sudo service neutron-plugin-openvswitch-agent restart


3-6. 동작 확인

    • Control Node에서 admin 사용자를 활성화 한다.
$ source admin-openrc.sh
    • neutron agent 리스트를 확인한다.
      • Open vSwitch agent의 Compute Node가 정상 동작하는지 확인
$ neutron agent-list

[결과]
+-----------------------------------------------+----------------------+-------------------+-------+----------------+---------------------------+
| id                                                     | agent_type             | host                | alive | admin_state_up | binary                    |
+-----------------------------------------------+----------------------+-------------------+-------+----------------+---------------------------+
| 01ede9f9-fe57-4caf-b976-bae7f6a1f04d    | Metadata agent       | networknode01 | :-)   | True    | neutron-metadata-agent            |
| 2e0e5956-6fa6-406d-9f26-9b275f85c625   | Open vSwitch agent | networknode01 | :-)   | True    | neutron-openvswitch-agent        |
| 44c9169b-b9d9-4251-9e7a-11097d3972f6 | Open vSwitch agent | networknode02 | :-)   | True    | neutron-openvswitch-agent        |
| 4c292855-5538-45dc-a6d1-26a52d7c9c8b | Open vSwitch agent | compute01       | :-)   | True    | neutron-openvswitch-agent        |
| a6c75b6b-9723-4942-91ef-3d8f2b69b7f9  | Metadata agent       | networknode02 | :-)   | True    | neutron-metadata-agent            |
| b1ce9201-33cd-4c53-9c33-5783a807180c | L3 agent                 | networknode02 | :-)   | True    | neutron-l3-agent                     |
| b62fa17c-c34e-4635-a76e-05fd419d7037  | Open vSwitch agent | compute02       | :-)   | True    | neutron-openvswitch-agent        |
| c9db2aa0-4086-44ec-bc1f-3e8755916964  | DHCP agent           | networknode02 | :-)   | True    | neutron-dhcp-agent                  |
| cee50d11-f753-4c42-a678-06aee0c963da  | L3 agent                | networknode01 | :-)   | True    | neutron-l3-agent                      |
| f8255b22-7833-4db1-b3f4-d6e4d6578f04  | DHCP agent           | networknode01 | :-)   | True    | neutron-dhcp-agent                  |
+-----------------------------------------------+----------------------+-------------------+-------+----------------+---------------------------+



Trackbacks 0 : Comments 20

OpenStack Kilo Install - Compute Service

OpenStack/Install_OpenStack 2015.10.01 10:21

OpenStack Nova Install

OpenStack은 가상네트워크를 생성하고 Virtual Machine(VM)을 생성하여 VM간의 네트워킹을 제공한다.


VM 생성에 관련된 서비스는 Nova 서비스이다.


Nova 서비스를 사용하여 VM에 대한 관리를 할 수 있다.


Nova 서비스는 Nova 서버 역할을 담당하는 부분과 실제 Nova 서비스가 시행되는 부분으로 나뉠 수 있다.


즉, Control Node에서 Nova 관리를 담당하고 Compute Node에서 Nova 관련 서비스가 실행된다고 생각하면 된다.


Nova 서비스는 Control Node 및 Compute Node에 설치가 되어야 한다.



OpenStack Nova Install



1. Control Node


1-1. Nova DataBase 사용자 등록 및 테이블 생성

    • DB 사용자 등록 (nova)
$ mysql -u root -p
    • nova DB 생성
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> exit


1-2. Nova 관련 OpenStack CLI 사용을 위한 admin 계정 활성화

$ source admin-openrc.sh

1-3. Keystone Nova 서비스 등록

    • nova 사용자 등록
      • 여기서 설정한 Password는 nova.conf 등 여러 파일에 사용하여야 함 (기억할 것)
$ openstack user create --password-prompt nova

[결과]
User Password:
Repeat User Password:
+----------+--------------------------------------------+
| Field       | Value                                           |
+----------+--------------------------------------------+
| email      | None                                            |
| enabled   | True                                             |
| id           | 8d15185f66b942b1811169618ab28ab8 |
| name      | nova                                             |
| username | nova                                             |
+----------+---------------------------------------------+
    • admin 및 nova 사용자의 nova 관련 제어를 위한 role 생성
$ openstack role add --project service --user nova admin

[결과]
+--------+--------------------------------------------+
| Field     | Value                                           |
+--------+--------------------------------------------+
| id        | 9c6551f223cc492392c51c2e454756e4   |
| name    | admin                                           |
+--------+--------------------------------------------+
    • nova 서비스 entry 생성
$ openstack service create --name nova --description "OpenStack Compute" compute

[결과]
+-------------+--------------------------------------------+
| Field          | Value                                           |
+-------------+--------------------------------------------+
| description  | OpenStack Compute                       |
| enabled      | True                                            |
| id              | f9eda7927ebd41b0b09709497c07f9d2 |
| name         | nova                                            |
| type           | compute                                      |
+-------------+--------------------------------------------+
    • nova 서비스 end point 등록
$ openstack endpoint create --publicurl http://controlnode01:8774/v2/%\(tenant_id\)s --internalurl http://controlnode01:8774/v2/%\(tenant_id\)s --adminurl http://controlnode01:8774/v2/%\(tenant_id\)s --region RegionOne compute

[결과]
+--------------+--------------------------------------------------+
| Field            | Value                                                  |
+--------------+--------------------------------------------------+
| adminurl       | http://controlnode01:8774/v2/%(tenant_id)s |
| id                | 6b035f7255cf487e92961c87cc4d9f51          |
| internalurl     | http://controlnode01:8774/v2/%(tenant_id)s |
| publicurl       | http://controlnode01:8774/v2/%(tenant_id)s |
| region          | RegionOne                                           |
| service_id      | f9eda7927ebd41b0b09709497c07f9d2        |
| service_name | nova                                                   |
| service_type   | compute                                             |
+--------------+--------------------------------------------------+

1-4. Nova 패키지 인스톨 및 설정

    • nova 패키지 인스톨
$ sudo apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient
    • nova 환경 설정
      • /etc/nova/nova.conf
$ sudo vi /etc/nova/nova.conf

[파일 내용 추가 및 수정]----------------------------------------
[DEFAULT]
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
my_ip = 10.0.0.11
...
vncserver_listen = 10.0.0.11
vncserver_proxyclient_address = 10.0.0.11
...
verbose = True

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = <nova 사용자 등록시 설정한 Pass>

[database]
connection = mysql://nova:NOVA_DBPASS@controlnode01/nova

[glance]
...
host = controlnode01

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
-------------------------------------------------------------------
    • 수정된 nova DB sync
$ sudo su
$ su -s /bin/sh -c "nova-manage db sync" nova
$ exit

1-5. Nova 서비스 재 실행

  • nova 서비스 재실행
$ sudo service nova-api restart
$ sudo service nova-cert restart
$ sudo service nova-consoleauth restart
$ sudo service nova-scheduler restart
$ sudo service nova-conductor restart
$ sudo service nova-novncproxy restart

$ sudo rm -f /var/lib/nova/nova.sqlite


2. Compute Node


Control Node에 Nova 설치 및 설정이 완료되면 Compute node에 nova 서비스를 설치하고 설정한다.


지금부터는 Compute Node에 설치할 내용이니 다시한번 Compute Node인지 확인하자.


2-1. Nova 패키지 인스톨

  • nova 패키지 인스톨
$ sudo apt-get install nova-compute sysfsutils
  • nova 서비스 설정
    • /etc/nova/nova.conf
$ sudo vi /etc/nova/nova.conf

[파일 수정 및 추가 내용]---------------------------------------------

[DEFAULT]
...
verbose = True
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
my_ip = 10.0.0.31
...
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.0.0.31
novncproxy_base_url = http://<Controlnode01의 Public IP>:6080/vnc_auto.html

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = <control node에 nova 사용자 등록시 설정한 Pass>

[glance]
...
host = controlnode01

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
-------------------------------------------------------------------------
  • Compute Node HW acceleration 확인 및 Virtual Type 설정
    • HW acceleration 설정 확인
      • 결과값이 0인 경우 H/W에서 가상화 관련 지원을 하지 않음
$ egrep -c '(vmx|svm)' /proc/cpuinfo
    • Virtual Type 설정
      • /etc/nova/nova-compute.conf
$  sudo vi /etc/nova/nova-compute.conf

[파일 내용 수정]--------------------------------------------

[libvirt]
...
virt_type = qemu
--------------------------------------------------------------

* 만일 H/W 가상화를 지원하는 경우 KVM을 사용할 수 있다.
[파일 내용 수정]--------------------------------------------

[libvirt]
...
virt_type = kvm
--------------------------------------------------------------

2-2. Nova 서비스 재실행

  • nova 재실행
$ sudo service nova-compute restart

$ sudo rm -f /var/lib/nova/nova.sqlite



3. 설정 확인


Nova Service 설치가 모두 완료되었으면 정상동작을 하는지 확인한다.


확인은 Control Node에서 시행하면 된다.


3-1. Nova Service 설정 및 동작 확인

  • admin 사용자 계정 활성화

$ source admin-openrc.sh

  • nova 서비스 확인
$ nova service-list

[결과]
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary                 | Host            | Zone     | Status    | State | Updated_at                  | Disabled Reason |
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-cert            | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:32.000000 | -               |
| 2  | nova-consoleauth | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:36.000000 | -               |
| 3  | nova-scheduler    | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:33.000000 | -               |
| 5  | nova-conductor   | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:38.000000 | -               |
| 6  | nova-compute     | compute01     | nova     | enabled | up    | 2015-10-01T01:50:33.000000 | -               |
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+
  • nova endpoint 확인
$ nova endpoints
  • nova image 연동 확인
$ nova image-list



Trackbacks 0 : Comments 6

OpenStack Kilo Install - Image Service

OpenStack/Install_OpenStack 2015.10.01 09:09

OpenStack glance Install

OpenStack에서 이미지 서비스를 담당하는 glance를 설치한다.


OpenStack의 Infrastructure-as-a-Service(IaaS)로 이야기 되는 glance는 OpenStack의 VM에 설치될 OS의 image를 관리한다.



OpenStack glance install



1. glance install을 위한 서비스 등록


  • Control Node
    • Database 사용자 생성
$ mysql -u root -p
      • DB 사용자 등록 (glance)
MariaDB [(none)]> CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> exit
      • OpenStack CLI로 OpenStack 서비스를 생성하기 위하여 admin 계정 활성화
$ source admin-openrc.sh
    • OpenStack glance 등록
      • glance 사용자 등록
      • 여기서 설정한 Password는 glance-api.conf/glance-registry.conf 등 여러 파일에 사용하여야 함 (기억할 것)
$ openstack user create --password-prompt glance

[결과]
User Password:
Repeat User Password:
+----------+--------------------------------------------+
| Field       | Value                                            |
+----------+--------------------------------------------+
| email      | None                                            |
| enabled   | True                                             |
| id           | 76409d2d86a943ae81bf3327163a7d23 |
| name      | glance                                           |
| username | glance                                           |
+----------+---------------------------------------------+
      • admin 사용자가 glance 관련 관리를 할 수 있도록 role 설정
$ openstack role add --project service --user glance admin

[결과]
+-------+------------------------------------------+
| Field    | Value                                         |
+-------+------------------------------------------+
| id       | 9c6551f223cc492392c51c2e454756e4 |
| name  | admin                                          |
+-------+------------------------------------------+
      • glance 서비스 엔티티 등록
$ openstack service create --name glance --description "OpenStack Image service" image

[결과]
+-------------+-------------------------------------------+
| Field         | Value                                            |
+-------------+-------------------------------------------+
| description | OpenStack Image service                  |
| enabled     | True                                             |
| id             | e0896ae5795346e5a0162bde2de81738 |
| name        | glance                                           |
| type          | image                                           |
+-------------+-------------------------------------------+
    • glance endpoint 등록
$ openstack endpoint create --publicurl http://controlnode01:9292 --internalurl http://controlnode01:9292 --adminurl http://controlnode01:9292 --region RegionOne image

[결과]
+--------------+---------------------------------------------+
| Field            | Value                                            |
+--------------+---------------------------------------------+
| adminurl       | http://controlnode01:9292                 |
| id                | 5f4755f428c643b4a26584652eee7780  |
| internalurl     | http://controlnode01:9292                 |
| publicurl       | http://controlnode01:9292                 |
| region          | RegionOne                                     |
| service_id      | e0896ae5795346e5a0162bde2de81738 |
| service_name | glance                                           |
| service_type   | image                                           |
+--------------+---------------------------------------------+


2. glance install

  • Control Node
    • glance 패키지 다운로드
$ sudo apt-get install glance python-glanceclient
    • glance config 파일 수정
      • /etc/glance/glance-api.conf
$ sudo vi /etc/glance/glance-api.conf

[파일 내용 수정 및 추가]------------------------------------------------------------------

[database]
...
connection = mysql://glance:GLANCE_DBPASS@controlnode01/glance

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = <glance 사용자 등록에 설정한 pass>

[paste_deploy]
...
flavor = keystone

[glance_store]
...
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

[DEFAULT]
...
notification_driver = noop
verbose = True
------------------------------------------------------------------------------------
      • /etc/glance/glance-registry.conf
$ sudo vi /etc/glance/glance-registry.conf

[파일 내용 수정 및 추가]---------------------------------------------------------

[database]
...
connection = mysql://glance:GLANCE_DBPASS@controlnode01/glance

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = <glance 사용자 등록에 설정한 pass>

[paste_deploy]
...
flavor = keystone

[DEFAULT]
...
notification_driver = noop
verbose = True
---------------------------------------------------------------------------------------
    • glance config 수정 내용 sync
$ sudo su

$ su -s /bin/sh -c "glance-manage db_sync" glance
    • glance 서비스 재실행
$ sudo service glance-registry restart
$ sudo service glance-api restart

$ sudo rm -f /var/lib/glance/glance.sqlite


3. glance 동작 확인 및 light weight OS 이미지 설정

glance는 서두에 이야기 한 것 처럼 OS 이미지를 관리하는 서비스이다.

하이퍼바이저 위에 OS가 설치되는 서비스에서 OS 종류가 다양하여야 하는 것은 당연한 일이다.

OpenStack에서는 CirrOS라고 하는 매우 가벼운 테스트용 OS 이미지를 제공하고 있다.

이를 활용하여 VM에 CirrOS를 설치하게 되는데 VM간의 네트워크 등을 확인하는 정도로 사용하면 되겠다.

  • Control Node
    • 클라이언트 환경 설정 (API 버전 2)
$ echo "export OS_IMAGE_API_VERSION=2" | tee -a admin-openrc.sh demo-openrc.sh
    • OpenStack CLI를 활용하기 위한 admin 계정 활성
$ source admin-openrc.sh
    • 이미지가 저장될 디렉토리 생성
$ mkdir /tmp/images
    • CirrOS 이미지 다운로드
$ wget -P /tmp/images http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
    • glance 서비스에 사용할 CirrOS 이미지 업로드
$ glance image-create --name "cirros-0.3.4-x86_64" --file /tmp/images/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public --progress

[결과]
[=============================>] 100%
+-------------------+---------------------------------------------+
| Property            | Value                                              |
+-------------------+---------------------------------------------+
| checksum          | ee1eca47dc88f4879d8a229cc70a07c6     |
| container_format | bare                                               |
| created_at         | 2015-10-01T00:04:55Z                         |
| disk_format        | qcow2                                             |
| id                    | b6810506-c9fe-48ba-b4df-5efad5e7c2b3 |
| min_disk            | 0                                                    |
| min_ram            | 0                                                    |
| name                | cirros-0.3.4-x86_64                             |
| owner               | 0d1c68156ad84d63a6b7a19e92b46ddf   |
| protected           | False                                              |
| size                   | 13287936                                       |
| status                | active                                             |
| tags                  | []                                                   |
| updated_at         | 2015-10-01T00:04:55Z                        |
| virtual_size          | None                                             |
| visibility             | public                                             |
+-------------------+---------------------------------------------+
    • glance 이미지 업로드 정상 동작 확인
$ glance image-list

[결과]
+----------------------------------------------+---------------------+
| ID                                                     | Name                |
+----------------------------------------------+---------------------+
| b6810506-c9fe-48ba-b4df-5efad5e7c2b3 | cirros-0.3.4-x86_64 |
+----------------------------------------------+---------------------+



Trackbacks 0 : Comments 0

OpenStack Kilo install - Identity Service

OpenStack/Install_OpenStack 2015.09.30 18:06

OpenStack Keystone 인스톨


OpenStack Kilo 버전에도 여전히 Keystone을 사용한다.


Keystone은 쉽게 말하면 사용자 인증에 대한 서비스를 제공해주는 블록이다.


OpenStack의 사용자 인증에 대한 내용은 다음과 같다.


  • user
  • credentials
  • authentication
  • token
  • tenant
  • service
  • endpoint
  • role
  • keystone client


OpenStack Keystone 설정



Database에 Keystone 사용자를 등록하여야 한다.


1. Keystone 사용자 등록


1-1. Control Node

    • MySql 사용자 등록 - keystone
$ mysql -u root -p

[MySql 환경]--------------------------------------------

MariaDB [(none)] > CREATE DATABASE keystone;
MariaDB [(none)] > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)] > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

MariaDB [(none)] > exit

-----------------------------------------------------------

$ sudo su

$ echo "manual" > /etc/init/keystone.override

$ exit

$ sudo apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache

$ openssl rand -hex 10

[주의]-----------------------------------------------------------------
openssl rand -hex 10 결과 값을 복사하여 메모장에 붙여넣는다.
keystone의 admin_token에 난수 발생 결과 값을 활용하기 때문
------------------------------------------------------------------------

$ sudo vi /etc/keystone/keystone.conf
    • keystone.conf
[난수 발생 결과 값을 활용한 Admin_token 설정]--------------------
[DEFAULT]
...
admin_token = 8d65110e0540c7e9b126
-------------------------------------------------------------------------

[Database 연결 설정]--------------------------------------------------
[database]
...
connection = mysql://keystone:KEYSTONE_DBPASS@controlnode01/keystone
--------------------------------------------------------------------------

[memcache 설정]-------------------------------------------------------
[memcache]
...
servers = localhost:11211
--------------------------------------------------------------------------

[token 제공 및 드라이버 설정]-----------------------------------------
[token]
...
provider = keystone.token.providers.uuid.Provider
driver = keystone.token.persistence.backends.memcache.Token
--------------------------------------------------------------------------

[revoke SQL revocation 드라이버 설정]-------------------------------
[revoke]
...
driver = keystone.contrib.revoke.backends.sql.Revoke
--------------------------------------------------------------------------

[Logging 설정]----------------------------------------------------------
[DEFAULT]
...
verbose = True
--------------------------------------------------------------------------
    • 예)

    • DB sync
$ sudo su

$ su -s /bin/sh -c "keystone-manage db_sync" keystone


2. 아파치 HTTP 서버 설정


2-1. Control Node

    • apache 서버 등록
$ sudo vi /etc/apache2/apache2.conf

[추가]-------------------------------------------------

ServerName controlnode01

-------------------------------------------------------
    • Keystone wsgi 파일 생성
$ sudo vi /etc/apache2/sites-available/wsgi-keystone.conf

[신규파일 생성]---------------------------------------

Listen 5000
Listen 35357

<VirtualHost *:5000>
  WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP}
  WSGIProcessGroup keystone-public
  WSGIScriptAlias / /var/www/cgi-bin/keystone/main
  WSGIApplicationGroup %{GLOBAL}
  WSGIPassAuthorization On
  <IfVersion >= 2.4>
    ErrorLogFormat "%{cu}t %M"
  </IfVersion>
  LogLevel info
  ErrorLog /var/log/apache2/keystone-error.log
  CustomLog /var/log/apache2/keystone-access.log combined
</VirtualHost>

<VirtualHost *:35357>
  WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP}
  WSGIProcessGroup keystone-admin
  WSGIScriptAlias / /var/www/cgi-bin/keystone/admin
  WSGIApplicationGroup %{GLOBAL}
  WSGIPassAuthorization On
  <IfVersion >= 2.4>
    ErrorLogFormat "%{cu}t %M"
  </IfVersion>
  LogLevel info
  ErrorLog /var/log/apache2/keystone-error.log
  CustomLog /var/log/apache2/keystone-access.log combined
</VirtualHost>

-------------------------------------------------------

    • Service enable
$ ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
    • WSGI 컴포넌트 디렉토리 생성
$ sudo mkdir -p /var/www/cgi-bin/keystone
    • upstream repository 설정
$ sudo su

$ curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/keystone.py?h=stable/kilo | tee /var/www/cgi-bin/keystone/main /var/www/cgi-bin/keystone/admin
    • 디렉토리 권한 설정
$ chown -R keystone:keystone /var/www/cgi-bin/keystone
$ chmod 755 /var/www/cgi-bin/keystone/*
    • 아파치 서버 재시작
$ sudo service apache2 restart

$ sudo rm -f /var/lib/keystone/keystone.db



OpenStack Keystone 설정-Endpoint 등록


1. endpoint 등록


1-1. Control Node

    • Token 설정
      • Keystone 등록시 사용한 난수를 export 함
$ export OS_TOKEN=8d65110e0540c7e9b126

$ export OS_URL=http://controlnode01:35357/v2.0
    • 서비스 등록
$ openstack service create --name keystone --description "OpenStack Identity" identity

[결과]
+-------------+-------------------------------------------+
| Field          | Value                                           |
+-------------+-------------------------------------------+
| description | OpenStack Identity                          |
| enabled     | True                                             |
| id             | 048ddf9767454c54aababa5256ad3ab2 |
| name        | keystone                                       |
| type          | identity                                         |
+-------------+-------------------------------------------+
    • endpoint 연결
$ openstack endpoint create --publicurl http://controlnode01:5000/v2.0 --internalurl http://controlnode01:5000/v2.0 --adminurl http://controlnode01:35357/v2.0 --region RegionOne identity 

[결과]
+--------------+-------------------------------------------+
| Field            | Value                                           |
+--------------+-------------------------------------------+
| adminurl       | http://controlnode01:35357/v2.0        |
| id                | fd2163d94127414aa16114b793eaff6a  |
| internalurl     | http://controlnode01:5000/v2.0          |
| publicurl       | http://controlnode01:5000/v2.0          |
| region          | RegionOne                                    |
| service_id      | 048ddf9767454c54aababa5256ad3ab2 |
| service_name | keystone                                       |
| service_type   | identity                                        |
+--------------+-------------------------------------------+


2. Admin 프로젝트, 사용자, 권한 생성


2-1. Control Node

    • Admin 프로젝트 등록
$ openstack project create --description "Admin Project" admin

[결과]
+-------------+-------------------------------------------+
| Field          | Value                                           |
+-------------+-------------------------------------------+
| description | Admin Project                                 |
| enabled     | True                                              |
| id             | 0d1c68156ad84d63a6b7a19e92b46ddf |
| name        | admin                                           |
+-------------+-------------------------------------------+
    • admin 사용자 등록
      • 설정한 password는 추후 admin-openrc.sh 파일에도 적용이 되기 때문에 주의하여야 한다
$ openstack user create --password-prompt admin

[결과]
User Password:
Repeat User Password:
+----------+-----------------------------------------+
| Field       | Value                                         |
+----------+-----------------------------------------+
| email      | None                                         |
| enabled   | True                                          |
| id           | a81078f6a3f94490a1fc504f840e23f0 |
| name      | admin                                        |
| username | admin                                       |
+----------+-----------------------------------------+
    • admin role 생성
$ openstack role create admin

[결과]
+-------+------------------------------------------+
| Field   | Value                                          |
+-------+------------------------------------------+
| id       | 9c6551f223cc492392c51c2e454756e4 |
| name  | admin                                          |
+-------+------------------------------------------+
    • admin role 연관 사용자 추가
$ openstack role add --project admin --user admin admin

[결과]
+-------+------------------------------------------+
| Field   | Value                                          |
+-------+------------------------------------------+
| id       | 9c6551f223cc492392c51c2e454756e4 |
| name  | admin                                         |
+-------+------------------------------------------+


3. Service 프로젝트, 사용자, 권한 생성


3-1. Control Node

    • Service 프로젝트 등록
$ openstack project create --description "Service Project" service
    • Demo 프로젝트 등록
$ openstack project create --description "Demo Project" demo
    • demo 사용자 등록
      • 설정한 password는 추후 demo-openrc.sh 파일에도 적용이 되기 때문에 주의하여야 한다
$ openstack user create --password-prompt demo
    • user role 생성
$ openstack role create user
    • demo role 연관 사용자 추가
$ openstack role add --project demo --user demo user


4. 설정 조회 및 추가내용

Security 설정/unset 설정 이하 내용은 위에서 설정한 내용이 적절하게 적용되었는지 확인하는 내용이다.


4-1. Control Node

    • Security 관련 설정 조절
$ sudo vi /etc/keystone/keystone-paste.ini

[파일내용: 아래 3개의 섹션에서 admin_token_auth를 삭제]------------------------------------------------

[pipeline:public_api]
# The last item in this pipeline must be public_service or an equivalent
# application. It cannot be a filter.
pipeline = sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension user_crud_extension public_service

[pipeline:admin_api]
# The last item in this pipeline must be admin_service or an equivalent
# application. It cannot be a filter.
pipeline = sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension s3_extension crud_extension admin_service

[pipeline:api_v3]
# The last item in this pipeline must be service_v3 or an equivalent
# application. It cannot be a filter.
pipeline = sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension_v3 s3_extension simple_cert_extension revoke_extension federation_extension oauth1_e
xtension endpoint_filter_extension endpoint_policy_extension service_v3
-------------------------------------------------------------------------------------------------------------------
    • unset OS_TOKEN/OS_URL
$ unset OS_TOKEN OS_URL
    • admin 사용자 API 버전 2.0 설정
$ openstack --os-auth-url http://controlnode01:35357 --os-project-name admin --os-username admin --os-auth-type password token issue

[결과]
Password: 
+------------+-------------------------------------------+
| Field        | Value                                            |
+------------+-------------------------------------------+
| expires    | 2015-09-30T12:47:10Z                       |
| id           | 457728dc906f48a1953a1c332c3e9bc8   |
| project_id | 0d1c68156ad84d63a6b7a19e92b46ddf |
| user_id     | a81078f6a3f94490a1fc504f840e23f0     |
+------------+-------------------------------------------+
    • admin 사용자 keystone 버전 3 설정
$ openstack --os-auth-url http://controlnode01:35357 --os-project-domain-id default --os-user-domain-id default --os-project-name admin --os-username admin --os-auth-type password token issue

[결과]
Password: 
+------------+-------------------------------------------+
| Field        | Value                                            |
+------------+-------------------------------------------+
| expires     | 2015-09-30T12:50:06.396284Z             |
| id            | 9d39a6a4da9f47599075e004647b8c55  |
| project_id  | 0d1c68156ad84d63a6b7a19e92b46ddf |
| user_id      | a81078f6a3f94490a1fc504f840e23f0    |
+------------+-------------------------------------------+
    • admin 사용자 project list 확인
$ openstack --os-auth-url http://controlnode01:35357 --os-project-name admin --os-username admin --os-auth-type password project list

[결과]
Password: 
+-------------------------------------------+---------+
| ID                                                | Name   |
+-------------------------------------------+---------+
| 0d1c68156ad84d63a6b7a19e92b46ddf | admin   |
| 9e53fb1e432a421792660fe6fe9da7c7   | demo    |
| f61fe004e9f049ffbe288a9fc1d546d9     | service  |
+-------------------------------------------+---------+
    • admin 사용자 user list 확인
$ openstack --os-auth-url http://controlnode01:35357 --os-project-name admin --os-username admin --os-auth-type password user list

[결과]
Password: 
+-----------------------------------------+--------+
| ID                                              | Name  |
+-----------------------------------------+--------+
| a81078f6a3f94490a1fc504f840e23f0   | admin |
| ce59f5678f1340dbb9b4f9360228612b | demo |
+-----------------------------------------+--------+
    • admin 사용자 role list 확인
$ openstack --os-auth-url http://controlnode01:35357 --os-project-name admin --os-username admin --os-auth-type password role list

[결과]
Password: 
+-----------------------------------------+--------+
| ID                                              | Name  |
+-----------------------------------------+--------+
| 7201f71d33694e4f91f67650aeaa6e3b | user    |
| 9c6551f223cc492392c51c2e454756e4 | admin |
+-----------------------------------------+--------+
    • demo 사용자 token 확인
$ openstack --os-auth-url http://controlnode01:5000 --os-project-domain-id default --os-user-domain-id default --os-project-name demo --os-username demo --os-auth-type password token issue

[결과]
Password: 
+-------------+-----------------------------------------+
| Field          | Value                                         |
+-------------+-----------------------------------------+
| expires       | 2015-09-30T13:01:49.549455Z          |
| id             | 76c7b97385a14f969c24fcf888883937  |
| project_id   | 9e53fb1e432a421792660fe6fe9da7c7  |
| user_id       | ce59f5678f1340dbb9b4f9360228612b |
+-------------+------------------------------------------+
    • 사용자 권한 확인 (demo 사용자가 admin 권한에 대한 CLI 사용하는 경우)
$ openstack --os-auth-url http://controlnode01:5000 --os-project-domain-id default --os-user-domain-id default --os-project-name demo --os-username demo --os-auth-type password user list

[결과]
Password: 
ERROR: openstack You are not authorized to perform the requested action: admin_required (HTTP 403) (Request-ID: req-aa22e65b-c4ae-439c-84fd-73f968ed90ee)


5. 클라이언트 환경 설정

OpenStack 관련 클라이언트에 대한 내용으로 admin에 대한 환경 설정이 포함된다.


5-1. Control Node

    • admin-openrc.sh 생성
$ vi admin-openrc.sh

[신규 파일 생성: ADMIN_PASS는 Keystone 생성시 적용한 password]------------------------------

export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=<admin 사용자 등록에 설정한 Pass>
export OS_AUTH_URL=http://controlnode01:35357/v3
----------------------------------------------------------------------------------------------------------
    • demo-openrc.sh 생성
$ vi demo-openrc.sh

[신규 파일 생성: DEMO_PASS는 Keystone 생성시 적용한 password]---------------------------------

export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=<demo 사용자 등록에 설정한 Pass>
export OS_AUTH_URL=http://controlnode01:5000/v3
------------------------------------------------------------------------------------------------------------
    • 클라이언트 환경 설정 확인
$ source admin-openrc.sh

$ openstack token issue

[결과]
+------------+-------------------------------------------+
| Field         | Value                                            |
+------------+-------------------------------------------+
| expires      | 2015-09-30T13:19:02.954322Z             |
| id             | 43e7bb74db4d4f64bc23c510afd25f30   |
| project_id   | 0d1c68156ad84d63a6b7a19e92b46ddf |
| user_id      | a81078f6a3f94490a1fc504f840e23f0     |
+------------+-------------------------------------------+



Trackbacks 0 : Comments 13

OpenStack Kilo Install - Common

OpenStack/Install_OpenStack 2015.09.30 15:06

OpenStack Kilo 인스톨을 위한 준비


OpenStack Install을 위하여 기본적인 설정을 알아보고자 한다.


본 포스팅은 OpenStack Kilo 버전을 Multi Node 형식으로 설치하는 내용으로 준비과정에 대한 내용이다.


OpenStack 관련 인스톨을 위한 시스템 사양은 아래와 같다.


  • Control Node
    • Ubuntu 14.04.3
    • Network Interface
      • eth0: External Network
      • eth1: Management Network
        • 10.0.0.11 (controlnode01)
  • Network Node
    • Ubuntu 14.04.3
    • Network Interface
      • eth0: External Network
      • eth1: Management Network
        • 10.0.0.21 (networknode01)
      • eth2: Data Network (Tunnel)
  • Compute Node
    • Ubuntu 14.04.3
    • Network Interface
      • eth0: External Network
      • eth1: Management Network
        • 10.0.0.31 (compute01)
      • eth2: Data Network (Tunnel)

네트워크 관점의 Architecture는 다음과 같다.




  • Data Network
    • Network Node와 Compute Node 사이의 Tunnel이 생성됨
    • 추후 OpenFlow Switch로 구성함
      • OpenFlow Switch는 SDN Controller와 연결
  • Management Network
    • OpenStack을 구성하는 모든 Node 사이의 Management Network
    • OpenStack CLI 또는 Horizon(Dashboard)를 통한 가상네트워크 구성 및 VM 적용
    • 추후 SDN Controller와 연결


OpenStack Kilo 공통 Install



1. Network 설정


1-1. Control Node

    • /etc/network/interface
# interfaces(5) file used by ifup(8) and ifdown(8)
# Public Network
auto eth0
iface eth0 inet static
      address <Public IP>
      gateway <GW IP>
      netmask 255.255.255.0
      dns-nameservers 8.8.8.8 8.8.4.4

# Management Network
auto eth1
iface eth1 inet static
      address 10.0.0.11
      gateway 10.0.0.1
      netmask 255.255.255.0
    • /etc/hosts (127.0.1.1 관련 부분은 comment 처리 하여야 함)
127.0.0.1       localhost
#127.0.1.1      networknode01

# controlnode
10.0.0.11       controlnode01
# networknode
10.0.0.21       networknode01
10.0.0.22       networknode02
# computenode
10.0.0.31       compute01
10.0.0.32       compute02

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


1-2. Network Node

    • /etc/network/interface (eth0는 추후 OVS 설정 후 대체됨)
      • OpenvSwitch가 설치되면 br-ex 활성화
# interfaces(5) file used by ifup(8) and ifdown(8)
# Public Network
auto br-ex
iface br-ex inet static
      address <Public IP>
      gateway <GW IP>
      netmask 255.255.255.0
      dns-nameservers 8.8.8.8 8.8.4.4

auto eth0
iface eth0 inet manual
      up ip link set dev $IFACE up
      down ip link set dev $IFACE down

# Management Network
auto eth1
iface eth1 inet static
      address 10.0.0.21
      gateway 10.0.0.1
      netmask 255.255.255.0

# Data Network
auto eth2
iface eth2 inet static
      address 10.0.1.21
      netmask 255.255.255.0
    • /etc/hosts (127.0.1.1 관련 부분은 comment 처리 하여야 함)
127.0.0.1       localhost
#127.0.1.1      networknode01

# controlnode
10.0.0.11       controlnode01
# networknode
10.0.0.21       networknode01
10.0.0.22       networknode02
# computenode
10.0.0.31       compute01
10.0.0.32       compute02

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


1-3. Compute Node

    • /etc/network/interface
# interfaces(5) file used by ifup(8) and ifdown(8)

# Public Network
auto eth0
iface eth0 inet static
      address <Public IP>
      gateway <GW IP>
      netmask 255.255.255.0
      dns-nameservers 8.8.8.8 8.8.4.4

# Management Network
auto eth1
iface eth1 inet static
      address 10.0.0.31
      gateway 10.0.0.1
      netmask 255.255.255.0

# Data Network
auto eth2
iface eth2 inet static
      address 10.0.1.31
      netmask 255.255.255.0
    • /etc/hosts (127.0.1.1 관련 부분은 comment 처리 하여야 함)
127.0.0.1       localhost
#127.0.1.1      networknode01

# controlnode
10.0.0.11       controlnode01
# networknode
10.0.0.21       networknode01
10.0.0.22       networknode02
# computenode
10.0.0.31       compute01
10.0.0.32       compute02

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


2. NTP Install

sudo apt-get install -y ntp


2-1. Control Node

$ sudo vi /etc/ntp.conf


[파일수정]-------------------------------


# NTP_SERVER는 ControlNode 이름 또는 IP


server controlnode01 iburst

restrict -4 default kod notrap nomodify

restrict -6 default kod notrap nomodify


-----------------------------------------


$ sudo service ntp restart


2-2. Network/Compute Node

$ sudo vi /etc/ntp.conf


[파일수정]-------------------------------


# NTP_SERVER는 ControlNode 이름 또는 IP


server controlnode01 iburst


-----------------------------------------


$ sudo service ntp restart



3. OpenStack Repository Add


3-1. Control/Network/Compute 공통

$ sudo apt-get install ubuntu-cloud-keyring


$ sudo su


echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" "trusty-updates/kilo main" > /etc/apt/sources.list.d/cloudarchive-kilo.list


$ apt-get update && apt-get dist-upgrade



4. Database 설치


4-1. Control Node

$ sudo apt-get install mariadb-server python-mysqldb
    • Password 설정 필요
$ sudo vi /etc/mysql/conf.d/mysqld_openstack.cnf

[신규파일 생성]----------------------------------------

[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

---------------------------------------------------------

$ sudo service mysql restart

mysql_secure_installation
    • MySql Secure Install 설정
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
 SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!

 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!


5. Message Queue 설치


5-1. Control Node

$ sudo apt-get install rabbitmq-server
    • User 추가
$ sudo rabbitmqctl add_user openstack RABBIT_PASS
    • 읽기 쓰기 권한 설정
$ sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"



Trackbacks 0 : Comments 6