CentOS 6
Sponsored Link

OpenStack Havana - Neutron 利用例#22013/10/29

 
OpenStack Network Service(Neutron)による仮想ネットワークの設定です。
例として、仮想ルーターを追加して、仮想ルーターの内側に仮想マシン用の内部ネットワークを設定してみます。
制御ノードネットワークノード計算ノードはそれぞれ事前に基本設定をしておいてください。
また、ここでの各ノードは、ネットワークノードが3つのネットワークインターフェースを持ち、 制御ノードと計算ノードは2つのネットワークインターフェースを持っているとします。
[1] まずは制御ノードでの設定です。
[root@dlp ~(keystone)]#
vi /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
# 最終行に追記

[OVS]
tenant_network_type = vlan
network_vlan_ranges = physnet1:1:4094
bridge_mappings = physnet1:br-eth1
[root@dlp ~(keystone)]#
/etc/rc.d/init.d/neutron-server restart

Stopping neutron:                                          [  OK  ]
Starting neutron:                                          [  OK  ]
[2] ネットワークノード、および、計算ノードの両方で以下の設定をしてください。
[root@network ~(neutron)]#
ovs-vsctl add-br br-eth1
   
# ブリッジ追加

[root@network ~(neutron)]#
ovs-vsctl add-port br-eth1 eth1
   
# 追加したブリッジのポートにeth1を追加

[root@network ~(neutron)]#
vi /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
# 最終行に追記

[OVS]
tenant_network_type = vlan
network_vlan_ranges = physnet1:1:4094
bridge_mappings = physnet1:br-eth1
[root@network ~(neutron)]#
/etc/rc.d/init.d/neutron-openvswitch-agent restart

Stopping neutron-openvswitch-agent:                        [  OK  ]
Starting neutron-openvswitch-agent:                        [  OK  ]
[3] ネットワークノードで外部接続用のブリッジの作成と定義をしておきます。
[root@network ~(neutron)]#
ovs-vsctl add-br br-ext

[root@network ~(neutron)]#
ovs-vsctl add-port br-ext eth2

[root@network ~(neutron)]#
vi /etc/neutron/l3_agent.ini
# 46行目:コメント解除して変更

external_network_bridge =
br-ext
[root@network ~(neutron)]#
/etc/rc.d/init.d/neutron-l3-agent restart

Stopping neutron-l3-agent: [  OK  ]
Starting neutron-l3-agent: [  OK  ]
[4] 仮想ルータを作成しておきます。作業場所はどこでもよいですが、ここでは計算ノード上で作業しています。
# 仮想ルーター作成

[root@node01 ~(keystone)]#
neutron router-create router01

Created a new router:
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| admin_state_up        | True                                 |
| external_gateway_info |                                      |
| id                    | a9c4dea2-0b70-4d09-a676-5fcaae138c08 |
| name                  | router01                             |
| status                | ACTIVE                               |
| tenant_id             | 97be94660c2043e58fee407bc9cde0d5     |
+-----------------------+--------------------------------------+

[root@node01 ~(keystone)]#
Router_ID=`neutron router-list | grep router01 | awk '{ print $2 }'`

[5] 内部用のネットワークを作成し、仮想ルーターに関連付けます。
# 内部用ネットワーク作成

[root@node01 ~(keystone)]#
neutron net-create int_net

Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 8b1defd0-ba76-477e-8756-3694420b9343 |
| name                      | int_net                              |
| provider:network_type     | vlan                                 |
| provider:physical_network | physnet1                             |
| provider:segmentation_id  | 1                                    |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 97be94660c2043e58fee407bc9cde0d5     |
+---------------------------+--------------------------------------+

# 内部用ネットワークにサブネット作成

[root@node01 ~(keystone)]#
neutron subnet-create int_net 192.168.100.0/24

Created a new subnet:
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| allocation_pools | {"start": "192.168.100.2", "end": "192.168.100.254"} |
| cidr             | 192.168.100.0/24                                     |
| dns_nameservers  |                                                      |
| enable_dhcp      | True                                                 |
| gateway_ip       | 192.168.100.1                                        |
| host_routes      |                                                      |
| id               | 499ddb13-aa9a-41c7-8d2d-9fa85a0f3bb2                 |
| ip_version       | 4                                                    |
| name             |                                                      |
| network_id       | 8b1defd0-ba76-477e-8756-3694420b9343                 |
| tenant_id        | 97be94660c2043e58fee407bc9cde0d5                     |
+------------------+------------------------------------------------------+

[root@node01 ~(keystone)]#
Int_Subnet_ID=`neutron net-list | grep int_net | awk '{ print $6 }'`
# 仮想ルーターに内部ネットワークを設定

[root@node01 ~(keystone)]#
neutron router-interface-add $Router_ID $Int_Subnet_ID

Added interface 5a789a4e-2a06-4d42-97f9-2ff97bc18605 to router a9c4dea2-0b70-4d09-a676-5fcaae138c08.
[6] 外部用のネットワークを作成し、仮想ルーターに関連付けます。
# 外部用ネットワーク作成

[root@node01 ~(keystone)]#
neutron net-create ext_net --router:external=True

Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | ee3890df-c382-46e5-aba4-15655d892aff |
| name                      | ext_net                              |
| provider:network_type     | vlan                                 |
| provider:physical_network | physnet1                             |
| provider:segmentation_id  | 2                                    |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 97be94660c2043e58fee407bc9cde0d5     |
+---------------------------+--------------------------------------+

# 外部用ネットワークにサブネット作成

[root@node01 ~(keystone)]#
neutron subnet-create ext_net --allocation-pool start=10.0.0.200,end=10.0.0.254 --gateway 10.0.0.1 10.0.0.0/24 --disable-dhcp

Created a new subnet:
+------------------+----------------------------------------------+
| Field            | Value                                        |
+------------------+----------------------------------------------+
| allocation_pools | {"start": "10.0.0.200", "end": "10.0.0.254"} |
| cidr             | 10.0.0.0/24                                  |
| dns_nameservers  |                                              |
| enable_dhcp      | False                                        |
| gateway_ip       | 10.0.0.1                                     |
| host_routes      |                                              |
| id               | 264f4d43-67f1-46f8-9828-11f49cc9cec9         |
| ip_version       | 4                                            |
| name             |                                              |
| network_id       | ee3890df-c382-46e5-aba4-15655d892aff         |
| tenant_id        | 97be94660c2043e58fee407bc9cde0d5             |
+------------------+----------------------------------------------+

[root@node01 ~(keystone)]#
Ext_Net_ID=`neutron net-list | grep ext_net | awk '{ print $2 }'`

# 仮想ルーターにゲートウェイを設定

[root@node01 ~(keystone)]#
neutron router-gateway-set $Router_ID $Ext_Net_ID

Set gateway for router a9c4dea2-0b70-4d09-a676-5fcaae138c08
[7] 内部ネットワークを関連付けた仮想マシンインスタンスを作成して起動します。
[root@node01 ~(keystone)]#
Int_Net_ID=`neutron net-list | grep int_net | awk '{ print $2 }'`

[root@node01 ~(keystone)]#
nova image-list

+--------------------------------------+---------+--------+--------+
| ID                                   | Name    | Status | Server |
+--------------------------------------+---------+--------+--------+
| 46042f47-c307-4fce-af0d-a1b2c14d6d78 | CentOS6 | ACTIVE |        |
+--------------------------------------+---------+--------+--------+

[root@node01 ~(keystone)]#
nova boot --flavor 2 --image CentOS6 --security_group default --nic net-id=$Int_Net_ID CentOS_64
[8] 作成した仮想マシンインスタンスにフローティングIPを割り当てます。これで仮想マシンに接続できるようになります。
[root@node01 ~(keystone)]#
neutron floatingip-create ext_net

Created a new floatingip:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| fixed_ip_address    |                                      |
| floating_ip_address | 10.0.0.201                           |
| floating_network_id | ee3890df-c382-46e5-aba4-15655d892aff |
| id                  | ab2f609b-2f6d-488f-8ddd-eec04db22644 |
| port_id             |                                      |
| router_id           |                                      |
| tenant_id           | 97be94660c2043e58fee407bc9cde0d5     |
+---------------------+--------------------------------------+

[root@node01 ~(keystone)]#
Device_ID=`nova list | grep CentOS_64 | awk '{ print $2 }'`

[root@node01 ~(keystone)]#
Port_ID=`neutron port-list -- --device_id $Device_ID | grep 192.168.100.2 | awk '{ print $2 }'`

[root@node01 ~(keystone)]#
Floating_ID=`neutron floatingip-list | grep 10.0.0.201 | awk '{ print $2 }'`

[root@node01 ~(keystone)]#
neutron floatingip-associate $Floating_ID $Port_ID

Associated floatingip ab2f609b-2f6d-488f-8ddd-eec04db22644
# 設定確認

[root@node01 ~(keystone)]#
neutron floatingip-show $Floating_ID

+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| fixed_ip_address    | 192.168.100.2                        |
| floating_ip_address | 10.0.0.201                           |
| floating_network_id | ee3890df-c382-46e5-aba4-15655d892aff |
| id                  | ab2f609b-2f6d-488f-8ddd-eec04db22644 |
| port_id             | 51d13c42-34ca-42dc-9d6b-feff28197929 |
| router_id           | a9c4dea2-0b70-4d09-a676-5fcaae138c08 |
| tenant_id           | 97be94660c2043e58fee407bc9cde0d5     |
+---------------------+--------------------------------------+

# インスタンスにログイン

[root@node01 ~(keystone)]#
ssh 10.0.0.201

The authenticity of host '10.0.0.201 (10.0.0.201)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:a5:3c:84.
Are you sure you want to continue connecting (yes/no)?
yes

Warning: Permanently added '10.0.0.201' (RSA) to the list of known hosts.
root@10.0.0.201's password:
Last login: Wed Oct 23 04:40:30 2013
[root@host-192-168-100-2 ~]#    
# ログインできた

関連コンテンツ