OpenStack Class2014.12.05 19:56

안녕하세요~!!


지난시간에는 인스턴스 생성시 운영체제 이미지를 담당하는 Glance와 이미지를 이용하여 인스턴스를 생성해 주는 Nova를 설해 보았습니다. 오늘은 인스턴스에 IP를 부여해주고 서로 다른 인스턴스와 통신을 할 수 있도록 해 주는 네트워크 서비스인 Neutron을 설치해 볼까합니다. 그리고, 쉬운 사용자 인터페이스를 제공하는 데쉬보드 서비스인 Horizon까지 함께 설치해 보도록 하겠습니다. 


자 그럼 시작해 볼까요~!!


Neutron 서버 설치

오픈스택의 인스턴스 IP를 할당하고 인스턴스와 인스턴스가 서로 통신할 수 있게 해주며, 외부 인터넷 연결 및 IP를 할당해 주는 네트워크 서비스는 Neutron입니다. Neutron은 컨트롤러 노드에 Neutron 서버를 설치하고 네트워크 노드와 컴퓨트 노드에는 플러그인과 에이전트를 설치합니다.

 

1.     Neutron 서버를 설치하기 전에 mysqlneutron 데이터베이스와 사용자 계정 그리고 접속 권한을 할당합니다.

$ mysql -u root -p
mysql> CREATE DATABASE neutron;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'neutrondbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'neutrondbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit
Bye

 

2.     Keystoneneutron 사용자 계정을 생성하고 서비스 테넌트에 생성한 neutron 계정을 추가합니다.

$ keystone user-create --name neutron --pass neutronpass --email neutron@email.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |        neutron@email.com         |
| enabled  |               True               |
|    id    | 32bbaa8caa8a495a842a2685ad476b46 |
|   name   |             neutron              |
| username |             neutron              |
+----------+----------------------------------+
$ keystone user-role-add --user neutron --tenant service --role admin

 

3.     서비스 이용을 위해 keystoneneutron 서비스를 추가합니다.

$ keystone service-create --name=neutron --type=network --description="OpenStack Networking"

+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |       OpenStack Networking       |
|   enabled   |               True               |
|      id     | e6c839a3a17b4f7989e551a64b58e122 |
|     name    |             neutron              |
|     type    |             network              |
+-------------+----------------------------------+

 

4.     생성한 서비스 IDendpoint URL을 생성합니다. Neutronendpoint URL 포트는 9696입니다. 다른 포트를 사용하면 서비스를 실행할 수 없으므로 주의합니다.

$ keystone endpoint-create \
  --service-id=e6c839a3a17b4f7989e551a64b58e122 \
  --publicurl=http://10.10.15.11:9696 \
  --adminurl=http://10.10.15.11:9696 \
--internalurl=http://10.10.15.11:9696
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
|   adminurl  |     http://10.10.15.11:9696      |
|      id     | be992170a1624b689fcabed8a403bf27 |
| internalurl |     http://10.10.15.11:9696      |
|  publicurl  |     http://10.10.15.11:9696      |
|    region   |            regionOne             |
|  service_id | e6c839a3a17b4f7989e551a64b58e122 |
+-------------+----------------------------------+

 

5.     Keystone 설정이 모두 완료되면 neutron 서버와 ml2 플러그인을 설치합니다.

$ sudo apt-get install neutron-server neutron-plugin-ml2

 

6.     /etc/neutron/neutron.conf 환경설정 파일은 다른 서비스의 환경설정 파일과 달리 설정할 값이 많으므로 주의해서 설정합니다. 서비스를 설치하고 conf 파일을 열면 설정 값 대부분이 주석으로 처리되어 있습니다. Vi 에디터는 /을 입력하고 검색할 값을 입력하면 주석으로 처리된 파라메터 값을 찾을 수 있습니다. 그렇게 찾은 값을 다음과 같이 수정합니다.

$ sudo vi /etc/neutron/neutron.conf

[DEFAULT] ... auth_strategy = keystone ... rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = 10.10.15.11 rabbit_password = rabbitpass ... notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True nova_url = http://10.10.15.11:8774/v2 nova_admin_username = nova nova_admin_tenant_id = 850e02e81d02499eaf1e726147ac0640 #SERVICE_TENANT_ID nova_admin_password = novapass nova_admin_auth_url = http://10.10.15.11:35357/v2.0 ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = True ... service_neutron_metadata_proxy = true neutron_metadata_proxy_shared_secret = metadatasecret [database] connection = mysql://neutron:neutrondbpass@10.10.15.11/neutron [keystone_authtoken] auth_uri = http://10.10.15.11:5000 auth_host = 10.10.15.11 auth_protocol = http auth_port = 35357 admin_tenant_name = service admin_user = neutron admin_password = neutronpass

 

7.     오픈스택의 Neutron 기본 플러그인은 ML2입니다. 설치한 ML2 환경설정 파일을 vi 에디터로 열어 다음과 같이 수정합니다. 처음 구성도를 그릴 때 ML2 플러그인에 gre 네트워크 방식을 이용하고, 메커니즘 드라이버는 openvswitch를 사용한다고 했으므로 그대로 설정합니다.

$ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2] ... type_drivers = gre tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] ... tunnel_id_ranges = 1:1000 [securitygroup] ... firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver enable_security_group = True


8.     마지막으로 아래와 같이 neutron 테이블을 생성합니다.

sudo neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file

/etc/neutron/plugins/ml2/ml2_conf.ini stamp icehouse


9.     Neutronnova 서비스의 인스턴스에 할당되는 네트워크 IP 및 통신을 담당하므로 nova 서비스와 neutron 서비스를 모두 재시작합니다.

$ sudo service nova-api restart
nova-api stop/waiting
nova-api start/running, process 9616
$ sudo service nova-scheduler restart
nova-scheduler stop/waiting
nova-scheduler start/running, process 9649
$ sudo service nova-conductor restart
nova-conductor stop/waiting
nova-conductor start/running, process 9669
$ sudo service neutron-server restart
neutron-server stop/waiting
neutron-server start/running, process 9690



이렇게해서 컨트롤러 노드에 설치되는 Neutorn 서버를 설치해봤습니다. 오픈스택의 대부분의 서비스는 해당 서비스의 데이터베이스 생성, Keystone에 해당 서비스에 대한 인증 정보 추가, 서비스 설치, 환경설정, 서비스 재시작 순으로 이루어진다는 사실 눈치채셨나요? 그럼, 이번에는 Horizon을 설치해 보도록 하겠습니다.


Horizon 설치

아무리 좋은 기능이 있어도 사용하기 불편하다면 그 시스템은 오래가지 못합니다. 그런데 오픈스택은 다행히도 웹에서 쉽게 서비스를 제공하는 데쉬보드를 제공합니다. 그 데쉬보드 서비스가 바로 Horizon입니다.

 

1.     먼저 apache, memcached, openstack-dashboard를 설치합니다

$ sudo apt-get install apache2 memcached libapache2-mod-wsgi openstack-dashboard


2.     /etc/memcached.conf 파일의 로컬 IP 주소를 컨트롤러 IP 주소로 수정합니다.

$ sudo vi /etc/memcached.conf
#-l 127.0.0.1
-l 10.10.15.11

 

3.     /etc/openstack-dashboard/local-settings.py를 열어 데쉬보드에 접속할 수 있는 IP를 등록합니다. 그리고 접속할 IP 주소는 컨트롤러 노드 IP로 입력합니다.

$ sudo vi /etc/openstack-dashboard/local_settings.py
…
ALLOWED_HOSTS = ['localhost', '10.10.15.11']
…
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : ‘10.10.15.11:11211'
}
}
…
OPENSTACK_HOST = "10.10.15.11"

 

4.     Localsetting.py 파일을 수정하고 아파치 서버와 memcached를 재시작합니다.

$ sudo service apache2 restart
* Restarting web server apache2                                                              
apache2: Could not reliably determine the server's fully qualified domain name, using 10.10.15.11 for ServerName 
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 10.10.15.11 for ServerName
$ sudo service memcached restart
Restarting memcached: memcached.

 

5.     이제 컨트롤러 IP로 데쉬보드에 접속할 수 있습니다.

http://10.10.15.11/horizon



이렇게해서 Neutron 서비스와 Horizon 서비스를 설치해 보았습니다. 다음시간에는 스토리지 서비스인 Cinder와 Swift를 설치해보도록 하겠습니다. 그럼, 다음시간에 또 만나요~!! ^^

Posted by 나리 짱!!! naleejang