티스토리 뷰

728x90
반응형

본 포스팅은 OpenStack의 구성요소들을 수동으로 설치하는 방법에 대한 가이드입니다.


오픈스택은 Core 프로젝트 즉 주요 구성요소로 10가지를 채택하고 있습니다. 이들은 각자의 VM으로 구성되며 VM간의 연결을 위해 하이퍼바이저를 사용합니다. 본 포스팅에서는 각 구성요소들을 하나씩 수동으로 구성해 보고 연결과정에 대해 알아보겠습니다.


★Cloud★/OpenStack [OpenStack] Part 1. kestone (아이덴티티 서비스)

★Cloud★/OpenStack [OpenStack] Part 2. glance (이미지 서비스)

★Cloud★/OpenStack [OpenStack] Part 3. nova (컴퓨트)


네번째 시간으로 설치할 구성요소는 Network인 neutron입니다.

앞선 포스팅은 위 URL을 참고하세요.

OpenStack 네트워크 (neutron)를 사용하면 다른 OpenStack 서비스에서 관리하는 인터페이스 장치를 만들고 네트워크에 연결할 수 있습니다. 다양한 물리 및 가상 네트워크 장치 및 소프트웨어를 수용하기 위해 플러그인을 구현하여 OpenStack 아키텍처 및 구현에 유연성을 제공합니다.

neutron는 다음과 같은 구성 요소가 포함되어 있습니다.


- neutron-server

API 요청을 허가하고 OpenStack 네트워킹 플러그인으로 라우팅을 하는 역할을 수행합니다.

- OpenStack Networking plug-ins and agents

Port와 Plug-in을 연결하고 네트워크 또는 서브넷을 생성하여 IP 주소를 지정합니다.

- Messaging queue

대부분의 OpenStack 네트워킹 설치에서 neutron server와 다양한 Agent 간의 정보를 라우팅하는 데 사용됩니다.


OpenStack Networking은 주로 OpenStack Compute와 상호 작용하여 인스턴스가 네트워크에 연결할 수 있도록 도와주는 역할을 합니다. OpenStack 네트워킹은 firewall, load balancer, virtual private network (VPN) 같은 서비스를 포함할수 있으며, 진보한 가상 네트워크 토폴리지를 생성하여 tenant를 활성화 합니다.


네트워킹에서는 객체 추상화를 통해 네트워크, 서브넷, 라우터를 제공합니다.

네트워크는 서브넷이 포함되어 있고, 다른 서브넷과 네트워크 간의 트레픽은 라우터를 통하여 나눠집니다.

각 라우터는 네트워크에 연결하는 하나의 게이트웨이를 갖고, 많은 인터페이스들이 서브넷에 연결됩니다.

서브넷은 같은 라우터 내에 연결된 다른 서브넷 상의 머신에 액세스 가능합니다.

외부 네트워크 뿐만 아니라, 임의의 네트워킹 셋업은 하나 이상의 내부 네트워크를 갖습니다.

이러한 소프트웨어 정의 네트워크들은 VM에 직접 연결됩니다.

임의의 주어진 내부 네트워크, 또는 인터페이스를 통해 비슷한 라우터에 연결된 서브넷 상의 VM에서만 대상 네트워크에 직접 연결된 VM에 액세스 가능합니다.

외부 네트워크에서 VM에 접근하거나, 그 반대의 경우에도 네트워크 사이의 라우터가 필요합니다.

또한, 외부 네트워크를 내부 네트워크와 연결하도록 IP 주소를 할당할 수 있습니다.

네트워킹은 시큐리티 그룹 을 지원합니다.

시큐리티 그룹은 그룹내에서 방화벽 규칙을 정의하여 관리자를 활성화합니다.


네트워킹에서 사용하는 각 플러그인은 각자의 개념을 갖고 있습니다.

VNI 및 OpenStack 환경을 운영하는데 필수는 아니지만, 이러한 개념에 대한 이해는 네트워킹 셋업을 도와줍니다.

모든 네트워킹 설치는 코어 플러그인과 보안 그룹 플러그인 (또는 단순히 No-Op 보안 그룹 플러그인)을 사용합니다.

부가적으로, Firewall-as-a-Service (FWaaS) 및 Load-Balancer-as-a-Service (LBaaS)이 사용 가능합니다.


OpenStack Compute Service Installation

Networking Service는 neutron이라는 프로젝트로 개발되었습니다. OpenStack은 오픈소스로써 이러한 프로젝트들이 핵심프로젝트로 올라가면 이를 실제 OpenStack에 반영하여 사용하고 실제 프로젝트 Name은 Module Name 및 CLI 환경에서 Command로 사용할 수 있습니다.


- 본 테스트는 다음과 같은 환경에서 작성되었습니다.

[nrson@nrsonLinux~$]uname -a
Linux nrsonLinux 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[nrson@nrsonLinux~$]

- 본 포스팅에서는 다양한 설치가 이루어짐에 따라 필수로 설치되어야 하는 mysql, rabbitMQ등의 Install과정으 과감히 제거하였습니다. 별도의 포스팅에서 사전에 준비되야 하는 Package의 설치 과정을 설명드리겠습니다.

- 본 포스팅에서 설치되는 패키지들은 apt-get package manager를 통해 수행됩니다.


neutron 설치 이전 선행 작업

1. Database 생성


root@nrsonLinux:~# mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1519

Server version: 5.7.23-0ubuntu0.16.04.1 (Ubuntu)


Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> CREATE DATABASE neutron;

Query OK, 1 row affected (0.00 sec)


mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql>


2. admin 권한 부여


root@nrsonLinux:~# source nrsonOpenrc.sh

root@nrsonLinux:~#


3. neutron User 생성


root@nrsonLinux:~# openstack user create --domain default --password-prompt neutron

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 41cbe172006d4047a92de61db3de09f1 |

| name      | neutron                          |

+-----------+----------------------------------+

root@nrsonLinux:~#


4. neutron 서비스 엔티티 생성


root@nrsonLinux:~# openstack service create --name neutron --description "OpenStack Networking" network

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Networking             |

| enabled     | True                             |

| id          | 9cdb981c6a4241a185f6c52aa7527669 |

| name        | neutron                          |

| type        | network                          |

+-------------+----------------------------------+

root@nrsonLinux:~#


5. Networking Service API 엔드포인트 생성


root@nrsonLinux:~# openstack endpoint create --region RegionOne network public http://controller:9696

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | f8d7673e56804d66837a96e0e3945c87 |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 9cdb981c6a4241a185f6c52aa7527669 |

| service_name | neutron                          |

| service_type | network                          |

| url          | http://controller:9696           |

+--------------+----------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne network internal http://controller:9696

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | a8715db247184d878b65cce06052231c |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 9cdb981c6a4241a185f6c52aa7527669 |

| service_name | neutron                          |

| service_type | network                          |

| url          | http://controller:9696           |

+--------------+----------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne network admin http://controller:9696

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 3894c4beeea44a4faa37ebbc2107545f |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 9cdb981c6a4241a185f6c52aa7527669 |

| service_name | neutron                          |

| service_type | network                          |

| url          | http://controller:9696           |

+--------------+----------------------------------+

root@nrsonLinux:~#


neutron Controller Node 구성

neutron Networking Option 구성

두가지 방식의 옵션으로 구성할 수 있습니다.

옵션 1은 공용(프로바이더) 네트워크에 대한 인스턴스 연결만을 지원하는 단순한 아키텍처 배포 방식입니다. Self-Service Network, 라우터, 플로팅IP주소를 지원하지 않습니다.

옵션 2는 옵션 1에 Self-Service Network에 대한 인스턴스 연결을 지원하는 L3 서비스를 확장합니다.

지금부터 neutron Networking 옵션 1 프로바이더 네트워크에 대해 상세히 알아 보겠습니다.


1. 구성요소 설치


root@nrsonLinux:~# apt-get install neutron-server neutron-plugin-ml2 neutron-plugin-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent python-neutronclient conntrack

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

...

...

conntrack is the newest version (1:1.4.3-3).

neutron-dhcp-agent is the newest version (2:8.4.0-0ubuntu7.3).

neutron-metadata-agent is the newest version (2:8.4.0-0ubuntu7.3).

neutron-plugin-ml2 is the newest version (2:8.4.0-0ubuntu7.3).

neutron-server is the newest version (2:8.4.0-0ubuntu7.3).

python-neutronclient is the newest version (1:4.1.1-2ubuntu1).

neutron-plugin-linuxbridge-agent is the newest version (2:8.4.0-0ubuntu7.3).

root@nrsonLinux:~#


2. 서버 구성요소 구성

네트워킹 서버 구성요소는 데이터베이스, 인증 방식, MQ, 토폴로지 변경 알림, 플러그인 등이 있습니다.

/etc/neutron/neutron.conf 구성


root@nrsonLinux:~# vi /etc/neutron/neutron.conf

[DEFAULT]

...

# keystone의 Identity 서비스 접근을 구성

# auth_strategy = keystone

auth_strategy = keystone

...

# L2 플러그인을 활성화하고 부가적인 플러그인을 비활성화

# The core plugin Neutron will use (string value)

core_plugin = ml2

# The service plugins Neutron will use (list value)

service_plugins =

...

# RabbitMQ 메시징 큐 접근을 구성

# The messaging driver to use, defaults to rabbit. Other drivers include amqp

# and zmq. (string value)

rpc_backend = rabbit

...

# nova에서 네트워크 토폴로지 변경이 발생했을 경우 Compute에 알려주도록 네트워킹을 구성

notify_nova_on_port_status_changes = true

notify_nova_on_port_data_changes = true

nova_url=http://172.21.70.22:8774/v2

...

[database]

# MySQL 데이터베이스 연결 설정

# connection = sqlite:////var/lib/neutron/neutron.sqlite

connection=mysql+pymysql://neutron:neutron@172.21.70.22:3306/neutron

...

[oslo_messaging_rabbit]

...

# RabbitMQ 메시징 큐 접근을 구성

# rabbit_host = localhost

rabbit_host = 172.21.70.22

# rabbit_userid = guest

rabbit_userid = openstack

rabbit_password = guest

rabbit_password = openstack

...

[keystone_authtoken]

...

# keystone의 Identity 서비스 접근을 구성

auth_uri = http://172.21.70.22:5000

auth_url = http://172.21.70.22:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = neutron

password = neutron

...

[nova]

# nova에서 네트워크 토폴로지 변경이 발생했을 경우 Compute에 알려주도록 네트워킹을 구성

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = nova

password = nova

...


3. Module Layer 2(ML2) 플러그인 구성

ML2 플러그인은 인스턴스에 대한 layer-2(브리지와 스위칭) 가상 네트워킹 인프라를 구축하여 리눅스 브릿지 메커니즘을 사용합니다.

/etc/neutron/plugins/ml2/ml2_conf.ini 구성


root@nrsonLinux:~# vi /etc/neutron/plugins/ml2/ml2_conf.ini

...

[ml2]

...

# flat, VLAN 네트워크 활성화

# type_drivers = local,flat,vlan,gre,vxlan,geneve

type_drivers = flat,vlan

...

# 프로젝트 사설 네트워크 비활성화

# tenant_network_types = local

tenant_network_types =

...
# 리눅스 브릿지 체계를 활성화
# mechanism_drivers =
mechanism_drivers = linuxbridge
...
# 포트 보안 확장 드라이버를 활성화
# extension_drivers =
extension_drivers = port_security
...
[ml2_type_flat]
...
# 공용 플랫 프로바이더 네트워크 구성
# flat_networks = *
flat_networks = public
...
[securitygroup]
...
# 섹션에서 시큐리티 그룹 규칙의 효율을 높이기 위해 ipset을 활성화
# enable_ipset = true
enable_ipset = true

4. 리눅스 브릿지 에이전트 구성

리눅스 브릿지 에이전트는 사설 네트워크 상의 VXLAN 터널링을 포함하는 인스턴스에 대한 later-2 가상 네트워킹 인프라를 구축하고 시큐리티 그룹을 처리합니다.

/etc/neutron/plugins/ml2/linuxbridge_agent.ini 구성


root@nrsonLinux:~# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

...

[linux_bridge]

...

# 공용 물리 네트워크 인터페이스에 공용 가상 네트워크를 매핑

physical_interface_mappings = public:enp2s0

...
[vxlan]
...
# VXLAN 오버레이 네트워크를 비활성화
# enable_vxlan = true
enable_vxlan = false
...
[agent]
...
# ARP spoofing 방어를 활성화
prevent_arp_spoofing = true
...
[securitygroup]
...
# 시큐리티 그룹을 활성화 시키고 리눅스 브릿지 iptables 방화벽 드라이버를 구성
# firewall_driver = <None>
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = true

5. DHCP 에이전트 구성

DHCP agent 가상 네트워크에 대한 DHCP 서비스를 제공합니다.

/etc/neutron/dhcp_agent.ini 구성


root@nrsonLinux:~# vi /etc/neutron/dhcp_agent.ini

[DEFAULT]

...

# 리눅스 브릿지 인터페이스 드라이버, Dnsmasq DHCP 드라이버를 구성하고 메타데이터를 활성화하여 공용 네트워크 인스턴스가 네트워크에서 메타데이터를 액세스하도록 합니다.

# interface_driver = <None>

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

...

# dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

...

# enable_isolated_metadata = false

enable_isolated_metadata = true

...



메타데이터 에이전트 구성

메타데이터 에이전트는 인스턴스에 대한 자격 증명과 같은 구성 정보를 제공합니다.

/etc/neutron/metadata_agent.ini 구성


root@nrsonLinux:~# vi /etc/neutron/metadata_agent.ini

[DEFAULT]

...

# 메타데이터 호스트를 구성

# IP address used by Nova metadata server. (string value)

# nova_metadata_ip = 127.0.0.1

nova_metadata_ip = 172.21.70.22

...

# 메타데이터 프록시 공유 암호를 구성

# When proxying metadata requests, Neutron signs the Instance-ID header with a

# shared secret to prevent spoofing. You may select any string for a secret,

# but it must match here and in the configuration used by the Nova Metadata

# Server. NOTE: Nova uses the same config key, but in [neutron] section.

# (string value)

# metadata_proxy_shared_secret =

metadata_proxy_shared_secret = metadataPassword

...

# 접근 매개변수를 구성

auth_uri = http://controller:5000

auth_url = http://controller:35357

auth_region = RegionOne

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = neutron

password = neutron

...



Networking을 사용하는 Compute 구성

/etc/nova/nova.conf 구성


root@nrsonLinux:~# vi /etc/nova/nova.conf

...

[neutron]

url = http://controller:9696

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = neutron

password = neutron

service_metadata_proxy = True

metadata_proxy_shared_secret = metadataPassword



설치 마무리

1. neutron databse 초기화


root@nrsonLinux:~# 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

No handlers could be found for logger "oslo_config.cfg"

/usr/lib/python2.7/dist-packages/pymysql/cursors.py:158: Warning: '@@tx_isolation' is deprecated and will be removed in a future release. Please use '@@transaction_isolation' instead

  result = self._query(query)

INFO  [alembic.runtime.migration] Context impl MySQLImpl.

INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

  Running upgrade for neutron ...

INFO  [alembic.runtime.migration] Context impl MySQLImpl.

INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

INFO  [alembic.runtime.migration] Running upgrade  -> kilo, kilo_initial

INFO  [alembic.runtime.migration] Running upgrade kilo -> 354db87e3225, nsxv_vdr_metadata.py

INFO  [alembic.runtime.migration] Running upgrade 354db87e3225 -> 599c6a226151, neutrodb_ipam

INFO  [alembic.runtime.migration] Running upgrade 599c6a226151 -> 52c5312f6baf, Initial operations in support of address scopes

INFO  [alembic.runtime.migration] Running upgrade 52c5312f6baf -> 313373c0ffee, Flavor framework

INFO  [alembic.runtime.migration] Running upgrade 313373c0ffee -> 8675309a5c4f, network_rbac

INFO  [alembic.runtime.migration] Running upgrade 8675309a5c4f -> 45f955889773, quota_usage

INFO  [alembic.runtime.migration] Running upgrade 45f955889773 -> 26c371498592, subnetpool hash

INFO  [alembic.runtime.migration] Running upgrade 26c371498592 -> 1c844d1677f7, add order to dnsnameservers

INFO  [alembic.runtime.migration] Running upgrade 1c844d1677f7 -> 1b4c6e320f79, address scope support in subnetpool

INFO  [alembic.runtime.migration] Running upgrade 1b4c6e320f79 -> 48153cb5f051, qos db changes

INFO  [alembic.runtime.migration] Running upgrade 48153cb5f051 -> 9859ac9c136, quota_reservations

INFO  [alembic.runtime.migration] Running upgrade 9859ac9c136 -> 34af2b5c5a59, Add dns_name to Port

INFO  [alembic.runtime.migration] Running upgrade 34af2b5c5a59 -> 59cb5b6cf4d, Add availability zone

INFO  [alembic.runtime.migration] Running upgrade 59cb5b6cf4d -> 13cfb89f881a, add is_default to subnetpool

INFO  [alembic.runtime.migration] Running upgrade 13cfb89f881a -> 32e5974ada25, Add standard attribute table

INFO  [alembic.runtime.migration] Running upgrade 32e5974ada25 -> ec7fcfbf72ee, Add network availability zone

INFO  [alembic.runtime.migration] Running upgrade ec7fcfbf72ee -> dce3ec7a25c9, Add router availability zone

INFO  [alembic.runtime.migration] Running upgrade dce3ec7a25c9 -> c3a73f615e4, Add ip_version to AddressScope

INFO  [alembic.runtime.migration] Running upgrade c3a73f615e4 -> 659bf3d90664, Add tables and attributes to support external DNS integration

INFO  [alembic.runtime.migration] Running upgrade 659bf3d90664 -> 1df244e556f5, add_unique_ha_router_agent_port_bindings

INFO  [alembic.runtime.migration] Running upgrade 1df244e556f5 -> 19f26505c74f, Auto Allocated Topology - aka Get-Me-A-Network

INFO  [alembic.runtime.migration] Running upgrade 19f26505c74f -> 15be73214821, add dynamic routing model data

INFO  [alembic.runtime.migration] Running upgrade 15be73214821 -> b4caf27aae4, add_bgp_dragent_model_data

INFO  [alembic.runtime.migration] Running upgrade b4caf27aae4 -> 15e43b934f81, rbac_qos_policy

INFO  [alembic.runtime.migration] Running upgrade 15e43b934f81 -> 31ed664953e6, Add resource_versions row to agent table

INFO  [alembic.runtime.migration] Running upgrade 31ed664953e6 -> 2f9e956e7532, tag support

INFO  [alembic.runtime.migration] Running upgrade 2f9e956e7532 -> 3894bccad37f, add_timestamp_to_base_resources

INFO  [alembic.runtime.migration] Running upgrade 3894bccad37f -> 0e66c5227a8a, Add desc to standard attr table

INFO  [alembic.runtime.migration] Running upgrade kilo -> 30018084ec99, Initial no-op Liberty contract rule.

INFO  [alembic.runtime.migration] Running upgrade 30018084ec99, 8675309a5c4f -> 4ffceebfada, network_rbac

INFO  [alembic.runtime.migration] Running upgrade 4ffceebfada -> 5498d17be016, Drop legacy OVS and LB plugin tables

INFO  [alembic.runtime.migration] Running upgrade 5498d17be016 -> 2a16083502f3, Metaplugin removal

INFO  [alembic.runtime.migration] Running upgrade 2a16083502f3 -> 2e5352a0ad4d, Add missing foreign keys

INFO  [alembic.runtime.migration] Running upgrade 2e5352a0ad4d -> 11926bcfe72d, add geneve ml2 type driver

INFO  [alembic.runtime.migration] Running upgrade 11926bcfe72d -> 4af11ca47297, Drop cisco monolithic tables

INFO  [alembic.runtime.migration] Running upgrade 4af11ca47297 -> 1b294093239c, Drop embrane plugin table

INFO  [alembic.runtime.migration] Running upgrade 1b294093239c, 32e5974ada25 -> 8a6d8bdae39, standardattributes migration

INFO  [alembic.runtime.migration] Running upgrade 8a6d8bdae39 -> 2b4c2465d44b, DVR sheduling refactoring

INFO  [alembic.runtime.migration] Running upgrade 2b4c2465d44b -> e3278ee65050, Drop NEC plugin tables

INFO  [alembic.runtime.migration] Running upgrade e3278ee65050, 15e43b934f81 -> c6c112992c9, rbac_qos_policy

INFO  [alembic.runtime.migration] Running upgrade c6c112992c9 -> 5ffceebfada, network_rbac_external

INFO  [alembic.runtime.migration] Running upgrade 5ffceebfada, 0e66c5227a8a -> 4ffceebfcdc, standard_desc

  OK

INFO  [alembic.runtime.migration] Context impl MySQLImpl.

INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

  Running upgrade for neutron-fwaas ...

INFO  [alembic.runtime.migration] Context impl MySQLImpl.

INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

INFO  [alembic.runtime.migration] Running upgrade  -> start_neutron_fwaas, start neutron-fwaas chain

INFO  [alembic.runtime.migration] Running upgrade start_neutron_fwaas -> 4202e3047e47, add_index_tenant_id

INFO  [alembic.runtime.migration] Running upgrade 4202e3047e47 -> 540142f314f4, FWaaS router insertion

INFO  [alembic.runtime.migration] Running upgrade 540142f314f4 -> 796c68dffbb, cisco_csr_fwaas

INFO  [alembic.runtime.migration] Running upgrade 796c68dffbb -> kilo, kilo

INFO  [alembic.runtime.migration] Running upgrade kilo -> 67c8e8d61d5, Initial Liberty no-op script.

INFO  [alembic.runtime.migration] Running upgrade 67c8e8d61d5 -> 458aa42b14b, fw_table_alter script to make <name> column case sensitive

INFO  [alembic.runtime.migration] Running upgrade kilo -> c40fbb377ad, Initial Liberty no-op script.

INFO  [alembic.runtime.migration] Running upgrade c40fbb377ad -> 4b47ea298795, add reject rule

  OK

root@nrsonLinux:~#


2. service Restart


# Compute service 재시작

root@nrsonLinux:~# service nova-api restart

# 네트워킹 서비스 재시작

root@nrsonLinux:~# service neutron-server restart

root@nrsonLinux:~# service neutron-linuxbridge-agent restart

root@nrsonLinux:~# service neutron-dhcp-agent restart

root@nrsonLinux:~# service neutron-metadata-agent restart

# L3 서비스 재시작

root@nrsonLinux:~# service neutron-l3-agent restart

root@nrsonLinux:~# service nova-api restart;service neutron-server restart;service neutron-linuxbridge-agent restart;service neutron-dhcp-agent restart;service neutron-metadata-agent restart;service neutron-l3-agent restart

root@nrsonLinux:~#


3. neutron SQLite 제거


root@nrsonLinux:~# rm -f /var/lib/neutron/neutron.sqlite

root@nrsonLinux:~#


neutron Compute Node 구성

neutron Networking Option 구성

두가지 방식의 옵션으로 구성할 수 있습니다.

옵션 1은 공용(프로바이더) 네트워크에 대한 인스턴스 연결만을 지원하는 단순한 아키텍처 배포 방식입니다. Self-Service Network, 라우터, 플로팅IP주소를 지원하지 않습니다.

옵션 2는 옵션 1에 Self-Service Network에 대한 인스턴스 연결을 지원하는 L3 서비스를 확장합니다.

지금부터 neutron Networking 옵션 1 프로바이더 네트워크에 대해 상세히 알아 보겠습니다.

 

1. 구성요소 설치


root@nrsonLinux:~# apt-get install neutron-plugin-linuxbridge-agent conntrack
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료

...

...
conntrack is the newest version (1:1.4.3-3).
neutron-plugin-linuxbridge-agent is the newest version (2:8.4.0-0ubuntu7.3).


2. 서버 구성요소 구성

/etc/neutron/neutron.conf 구성


root@nrsonLinux:~# vi /etc/neutron/neutron.conf

[DEFAULT]

...

# keystone의 Identity 서비스 접근을 구성

# auth_strategy = keystone

auth_strategy = keystone

...

# RabbitMQ 메시징 큐 접근을 구성

# The messaging driver to use, defaults to rabbit. Other drivers include amqp

# and zmq. (string value)

rpc_backend = rabbit

...

[database]

# Compute 노드가 직접 데이터베이스에 접근하지 않기때문에 모든 connection 옵션을 주석처리

# connection = sqlite:////var/lib/neutron/neutron.sqlite

...

[oslo_messaging_rabbit]

...

# RabbitMQ 메시징 큐 접근을 구성

# rabbit_host = localhost

rabbit_host = 172.21.70.22

# rabbit_userid = guest

rabbit_userid = openstack

rabbit_password = guest

rabbit_password = openstack

...

[keystone_authtoken]

...

# keystone의 Identity 서비스 접근을 구성

auth_uri = http://172.21.70.22:5000

auth_url = http://172.21.70.22:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = neutron

password = neutron

...


3. 리눅스 브릿지 에이전트 구성

리눅스 브릿지 에이전트는 사설 네트워크 상의 VXLAN 터널링을 포함하는 인스턴스에 대한 later-2 가상 네트워킹 인프라를 구축하고 시큐리티 그룹을 처리합니다.

/etc/neutron/plugins/ml2/linuxbridge_agent.ini 구성


root@nrsonLinux:~# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

...

[linux_bridge]

...

# 공용 물리 네트워크 인터페이스에 공용 가상 네트워크를 매핑

physical_interface_mappings = public:enp2s0

...
[vxlan]
...
# VXLAN 오버레이 네트워크를 비활성화
# enable_vxlan = true
enable_vxlan = false
...
[agent]
...
# ARP spoofing 방어를 활성화
prevent_arp_spoofing = true
...
[securitygroup]
...
# 시큐리티 그룹을 활성화 시키고 리눅스 브릿지 iptables 방화벽 드라이버를 구성
# firewall_driver = <None>
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = true

 

Networking을 사용하는 Compute 구성

/etc/nova/nova.conf 구성


root@nrsonLinux:~# vi /etc/nova/nova.conf

...

[neutron]

url = http://controller:9696

auth_url = http://controller:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

region_name = RegionOne

project_name = service

username = neutron

password = neutron


 

설치 마무리

service Restart


root@nrsonLinux:~# service nova-compute restart

root@nrsonLinux:~# service neutron-linuxbridge-agent restart

root@nrsonLinux:~#



검증 단계

1. admin 권한 부여


root@nrsonLinux:~# source nrsonOpenrc.sh
root@nrsonLinux:~#


2. neutron ext-list 확인


root@nrsonLinux:~# neutron ext-list
+---------------------------+-----------------------------------------------+
| alias                     | name                                          |
+---------------------------+-----------------------------------------------+
| default-subnetpools       | Default Subnetpools                           |
| availability_zone         | Availability Zone                             |
| network_availability_zone | Network Availability Zone                     |
| auto-allocated-topology   | Auto Allocated Topology Services              |
| binding                   | Port Binding                                  |
| agent                     | agent                                         |
| subnet_allocation         | Subnet Allocation                             |
| dhcp_agent_scheduler      | DHCP Agent Scheduler                          |
| tag                       | Tag support                                   |
| external-net              | Neutron external network                      |
| net-mtu                   | Network MTU                                   |
| network-ip-availability   | Network IP Availability                       |
| quotas                    | Quota management support                      |
| provider                  | Provider Network                              |
| multi-provider            | Multi Provider Network                        |
| address-scope             | Address scope                                 |
| timestamp_core            | Time Stamp Fields addition for core resources |
| extra_dhcp_opt            | Neutron Extra DHCP opts                       |
| security-group            | security-group                                |
| rbac-policies             | RBAC Policies                                 |
| standard-attr-description | standard-attr-description                     |
| port-security             | Port Security                                 |
| allowed-address-pairs     | Allowed Address Pairs                         |
+---------------------------+-----------------------------------------------+
root@nrsonLinux:~#


3. 에이전트 목록으로 neutron 에이전트가 제대로 실행되는지 확인


root@nrsonLinux:~# neutron agent-list
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| id                                   | agent_type         | host       | availability_zone | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| 36456da9-f514-48f3-a89e-b327220b386b | Linux bridge agent | nrsonLinux |                   | :-)   | True           | neutron-linuxbridge-agent |
| ab7a7859-2366-42b2-a935-b3a5b0eefdcb | Metadata agent     | nrsonLinux |                   | :-)   | True           | neutron-metadata-agent    |
| ca6612bc-55e6-4a2c-9e23-29a7d9f0cace | DHCP agent         | nrsonLinux | nova              | :-)   | True           | neutron-dhcp-agent        |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
root@nrsonLinux:~#



지금까지 OpenStack 구성요소인 뉴트론(neutron) 네트워크 서비스를 구성해 보았습니다.

다음시간에는 호라이즌(horizon) 대시보드 서비스에 대해 알아보겠습니다.


728x90
반응형