このセクションでは、外部ネットワークを表す仮想ネットワークを作成する方法を示します。この仮想ネットワークでは DHCP が使用されません。代わりにフローティング IP アドレスが作成されます。これらのフローティング IP アドレスは特定のテナントに割り当てられ、そのテナントで、ユーザーによって使用される Nova VM インスタンスに割り当てることができます。Neutron L3 エージェントは、Nova インスタンスに割り当てられたアドレスとフローティング IP アドレス間の 1 対 1 の NAT マッピングを自動的に作成します。
OpenStack Neutron の Oracle Solaris 11.2 実装は、プライベートネットワークデプロイメントモデルによって、プロバイダルーターをサポートしています。このモデルの詳細は、『運用者トレーニングガイド』の第 7 章にある OpenStack Neutron のユースケースを参照してください。このデプロイメントモデルで、各テナントは 1 つ以上のプライベートネットワークを使用でき、すべてのテナントネットワークが同じルーターを共有します。このルーターはデータ管理者によって作成、所有、および管理されます。ルーターはテナントのネットワークトポロジビューに表示されません。単一のルーターしかないため、テナントネットワークでは重複する IP アドレスを使用できません。管理者はテナントの代わりにプライベートネットワークを作成します。
デフォルトで、このモデル内のルーターは同じテナントに含まれるプライベートネットワーク間のルーティングを妨げます。あるプライベートネットワーク内の VM インスタンスは別のプライベートネットワーク内の VM インスタンスと、それらがすべて同じテナントに含まれる場合でも通信できません。この動作を変更するには、/etc/neutron/l3_agent.ini 構成ファイルで allow_forwarding_between_networks を True に設定し、neutron-l3-agent SMF サービスを再起動します。
このモデルのルーターはテナントの VM インスタンスの外部への接続を提供します。ルーターは、外部ネットワークにルーターを接続するインタフェース上で双方向の NAT を実行します。テナントは、それらが必要なだけ、またはフローティング IP の割り当て制限によって許可されるだけの数のフローティング IP (パブリック IP) を作成し、これらのフローティング IP を、外部接続を必要とする VM インスタンスに関連付けます。
次の図に、Oracle Solaris 11.2 Neutron デプロイメントモデルを示します。図の説明は図の後にあります。
図 3-3 プライベートネットワークモデルでのプロバイダルーター
前の図に示したモデルで、各テナントには 2 つの内部ネットワークと 2 つの VM インスタンスがあります。
サブネット 192.168.100.0/24 とゲートウェイ 192.168.100.1 の HR ネットワーク
サブネット 192.168.101.0/24 とゲートウェイ 192.168.101.1 の ENG ネットワーク
192.168.100.3 の固定 IP アドレスを持つ HR に接続された VM1
192.168.101.3 の固定 IP アドレスを持つ ENG に接続された VM2
サブネット 192.168.102.0/24 とゲートウェイ 192.168.102.1 の IT ネットワーク
サブネット 192.168.103.0/24 とゲートウェイ 192.168.103.1 の ACCT ネットワーク
192.168.102.3 の固定 IP アドレスを持つ IT に接続された VM3
192.168.103.3 の固定 IP アドレスを持つ ACCT に接続された VM4
双方向 NAT テーブルは次の表に示すように構成されます。
|
すべてのゲートウェイインタフェースが neutron-l3-agent SMF サービスを実行しているノードでインスタンス化されます。クラウドでは多くの Neutron インスタンスを使用できますが、クラウドあたりに必要な neutron-l3-agent は 1 つだけです。
外部ネットワークは、外部から到達可能なサブネット 10.134.13.0/24 24 に関連付けられたプロバイダネットワークです。テナントはこのネットワークからフローティング IP アドレスを作成し、それらを VM インスタンスに関連付けます。VM1 と VM2 にはフローティング IP 10.134.13.40 と 10.134.13.9 がそれぞれ関連付けられています。VM1 と VM2 はこれらの IP アドレスによって、外部から到達可能です。
次のダイアグラムに、これらのテナントリソースがネットワークノードおよび 2 つのコンピュートノードにどのように構成されているかを示します。図に示している機能の一部の説明は図の後にあります。
図 3-4 Neutron L3 エージェント構成
仮想ネットワークインタフェース。
双方向 NAT が発生する外部 (「e」) ネットワーク上に VNIC を作成した L3 エージェント。
デフォルトのゲートウェイ IP アドレスを持つ内部 (「i」) ネットワーク上に VNIC を作成した L3 エージェント。
次のリストに、この例の構成で IP アドレスがどのように使用されるかを示します。
デフォルトゲートウェイ
OpenStackAPI (Nova、Cinder、Glance など) をテナントに公開するために確保されている IP アドレス
テナント VM インスタンス用のフローティング IP アドレス
この手順では、service テナントを使用して、ルーター、外部ネットワーク、およびデータセンター内のすべてのテナントによって使用される外部サブネットを作成する方法を示します。
この手順は、データセンターの管理者によって実行されます。OpenStack ダッシュボードでは一度に 1 つのテナントのリソースしか管理できないため、単一の共有ルーターを構成し、異なるテナントのネットワークとサブネットを関連付けるには、コマンド行を使用する必要があります。
次の手順を実行する場合は、Figure 3–4 を参照してください。
始める前に
この手順を実行する前に、内部ネットワークの構成を完了する必要があります。
network# svcadm enable ipfilter
network# ipadm set-prop -p forwarding=on ipv4 network# ipadm set-prop -p forwarding=on ipv6
次の例の VLAN ID と範囲値は、Step 9 で完了した EVS 構成に基づいています。
network# evsadm show-controlprop -p vlan-range,l2-type PROPERTY PERM VALUE DEFAULT HOST l2-type rw vlan vlan -- vlan-range rw 13,1000-2000 -- --
network# keystone tenant-list
プロバイダルーターは service テナントに、OpenStack neutron ユーザーとして作成します。
新しいルーターの UUID (id) をメモします。これは次のステップで使用します。
network# export OS_USERNAME=neutron network# export OS_PASSWORD=neutron-password network# export OS_TENANT_NAME=service network# export OS_AUTH_URL=http://controller-name:5000/v2.0 network# neutron router-create provider_router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | 181543df-40d1-4514-ea77-fddd78c389ff | | name | provider_router | | status | ACTIVE | | tenant_id | f164220cb02465db929ce520869895fa | +-----------------------+--------------------------------------+
前のステップからのルーター UUID (id) を使用して、/etc/neutron/l3_agent.ini ファイル内の router_id の値を更新します。
router_id = 181543df-40d1-4514-ea77-fddd78c389ff
network# svcadm enable neutron-l3-agent
仮想ネットワークは service テナントに、OpenStack neutron ユーザーとして作成します。
network# neutron net-create --provider:network_type=vlan \ --provider:segmentation_id=13 --router:external=true external_network Created a new network: +--------------------------+--------------------------------------+ | Field | Value | +--------------------------+--------------------------------------+ | admin_state_up | True | | id | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f | | name | external_network | | provider:network_type | vlan | | provider:segmentation_id | 13 | | router:external | True | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | f164220cb02465db929ce520869895fa | +--------------------------+--------------------------------------+
外部ネットワークに関連付けられるサブネットネットワークを作成し、DHCP が無効であることとサブネットが外部ルーティングに使用されることを指定します。フローティング IP アドレスが割り当てられるルート可能 IP サブネットを指定します。この例では、このサブネットは VLAN ID 13 に関連付けられています。
network# neutron subnet-create --enable-dhcp=False \ --allocation-pool start=10.134.13.8,end=10.134.13.254 \ --name external_subnet external_network 10.134.13.0/24 Created a new subnet: +------------------+--------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------+ | allocation_pools | {"start": "10.134.13.8", "end": "10.134.13.254"} | | cidr | 10.134.13.0/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 10.134.13.1 | | host_routes | | | id | 5d9c8958-0de0-11e4-9d96-e1f29f417e2f | | ip_version | 4 | | name | external_subnet | | network_id | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f | | tenant_id | f164220cb02465db929ce520869895fa | +------------------+--------------------------------------------------+
次のコマンドで、最初の UUID は provider_router UUID で、2 番目の UUID は external_network UUID です。
network# neutron router-gateway-set \ 181543df-40d1-4514-ea77-fddd78c389ff \ f67f0d72-0ddf-11e4-9d95-e1f29f417e2f Set gateway for router 181543df-40d1-4514-ea77-fddd78c389ff network# neutron router-list -c name -c external_gateway_info +-----------------+--------------------------------------------------------+ | name | external_gateway_info | +-----------------+--------------------------------------------------------+ | provider_router | {"network_id": "f67f0d72-0ddf-11e4-9d95-e1f29f417e2f"} | +-----------------+--------------------------------------------------------+
neutron net-list コマンドによって表示されるネットワークは、以前に構成されました。
network# keystone tenant-list +----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | 511d4cb9ef6c40beadc3a664c20dc354 | demo | True | | f164220cb02465db929ce520869895fa | service | True | +----------------------------------+---------+---------+ network# neutron net-list --tenant-id=511d4cb9ef6c40beadc3a664c20dc354 +-------------------------------+------+------------------------------+ | id | name | subnets | +-------------------------------+------+------------------------------+ | c0c15e0a-0def-11e4-9d9f- | HR | c0c53066-0def-11e4-9da0- | | e1f29f417e2f | | e1f29f417e2f 192.168.100.0/24| | ce64b430-0def-11e4-9da2- | ENG | ce693ac8-0def-11e4-9da3- | | e1f29f417e2f | | e1f29f417e2f 192.168.101.0/24| +-------------------------------+------+------------------------------+
次のコマンドで、最初の UUID は provider_router UUID で、2 番目の UUID は HR サブネット UUID です。
network# neutron router-interface-add \ 181543df-40d1-4514-ea77-fddd78c389ff \ c0c53066-0def-11e4-9da0-e1f29f417e2f (HR subnet UUID) Added interface 7843841e-0e08-11e4-9da5-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.
次のコマンドで、最初の UUID は provider_router UUID で、2 番目の UUID は ENG サブネット UUID です。
network# neutron router-interface-add \ 181543df-40d1-4514-ea77-fddd78c389ff \ ce693ac8-0def-11e4-9da3-e1f29f417e2f Added interface 89289b8e-0e08-11e4-9da6-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.
関連項目
この手順は OpenStack Horizon ダッシュボードを使用してテナントユーザーによって実行します。
テナントユーザーの資格証明を使用して、OpenStack ダッシュボードにアクセスする方法の説明に従って、ログインします。
「Floating IP」タブに、フローティング IP アドレス 10.134.13.9 が割り当てられていることが示されます。
「プロジェクト」 -> 「インスタンス」ウィンドウにはフローティング IP アドレスが VM インスタンスに関連付けられていることが示されます。
VM インスタンスの起動中に、鍵ペア (SSH 公開鍵) を選択した場合、その SSH 鍵は VM インスタンスの root ユーザーの authorized_keys ファイルに追加されます。
global# ssh root@10.134.13.9 Last login: Fri Jul 18 00:37:39 2014 from 10.132.146.13 Oracle Corporation SunOS 5.11 11.2 June 2014 root@host-192-168-101-3:~# uname -a SunOS host-192-168-101-3 5.11 11.2 i86pc i386 i86pc root@host-192-168-101-3:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 2 instance-00000001 running / solaris excl root@host-192-168-101-3:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/dhcp inherited ok -- 192.168.101.3/24
ipf、ippool、および ipnat などの IP フィルターコマンドおよび dladm や ipadm などのネットワークコマンドを使用すると、neturon-l3-agent によって実行された構成を監視し、トラブルシューティングすることができます。
network# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VIDS l3i7843841e_0_0 net1 1000 2:8:20:42:ed:22 fixed 200 l3i89289b8e_0_0 net1 1000 2:8:20:7d:87:12 fixed 201 l3ed527f842_0_0 net0 100 2:8:20:9:98:3e fixed 0
network# ipadm NAME CLASS/TYPE STATE UNDER ADDR l3ed527f842_0_0 ip ok -- -- l3ed527f842_0_0/v4 static ok -- 10.134.13.8/24 l3ed527f842_0_0/v4a static ok -- 10.134.13.9/32 l3i7843841e_0_0 ip ok -- -- l3i7843841e_0_0/v4 static ok -- 192.168.100.1/24 l3i89289b8e_0_0 ip ok -- -- l3i89289b8e_0_0/v4 static ok -- 192.168.101.1/24
network# ipfstat -io empty list for ipfilter(out) block in quick on l3i7843841e_0_0 from 192.168.100.0/24 to pool/4386082 block in quick on l3i89289b8e_0_0 from 192.168.101.0/24 to pool/8226578 network# ippool -l table role = ipf type = tree number = 8226578 { 192.168.100.0/24; }; table role = ipf type = tree number = 4386082 { 192.168.101.0/24; };
network# ipnat -l List of active MAP/Redirect filters: bimap l3ed527f842_0_0 192.168.101.3/32 -> 10.134.13.9/32 List of active sessions: BIMAP 192.168.101.3 22 <- -> 10.134.13.9 22 [10.132.146.13 36405]