Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第4章 デプロイメントのテスト
4.1. 基本的なテストの実行
基本的なテストでは、インスタンスが相互に ping できるかどうかを検証します。また、Floating IP の SSH アクセスもチェックします。以下の例では、アンダークラウドからテストを実行する方法について説明します。
本手順では、個別のステップを多数実行する必要があるので、便宜を図るために小さいセクションに分けています。ただし、これらのステップは、所定の順序で実行する必要があります。
このステップでは、flat ネットワークを使用して _External_ network を作成し、_VXLAN_ を使用して _Tenant_ networks を作成します。デプロイメントに望ましい場合には、_VLAN External_ networks と _VLAN Tenant_ networks もサポートされています。
4.1.1. テスト用の新規ネットワークの作成
オーバークラウドにアクセスするための認証情報を読み込みます。
$ source /home/stack/overcloudrc
オーバークラウドの外部からインスタンスにアクセスするのに使用する neutron の外部ネットワークを作成します。
$ openstack network create --external --project service --external --provider-network-type flat --provider-physical-network datacentre
新しい外部ネットワーク (前のステップで作成済み) に対応する neutron サブネットを作成します。
$ openstack subnet create --project service --no-dhcp --network external --gateway 192.168.37.1 --allocation-pool start=192.168.37.200,end=192.168.37.220 --subnet-range 192.168.37.0/24 external-subnet
オーバークラウドインスタンスを作成するための cirros イメージをダウンロードします。
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
オーバークラウドの glance に cirros イメージをアップロードします。
$ openstack image create cirros --public --file ./cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare
オーバークラウドインスタンスに使用する
tiny
フレーバーを作成します。$ openstack flavor create m1.tiny --ram 512 --disk 1 --public
インスタンスをホストするための VXLAN ベースのテナントネットワークを作成します。
$ openstack network create net_test --provider-network-type=vxlan --provider-segment 100
テナントネットワーク (前のステップで作成済み) のサブネットを作成します。
$ openstack subnet create --network net_test --subnet-range 123.123.123.0/24 test
テナントネットワークの ID を特定して保存します。
$ net_mgmt_id=$(openstack network list | grep net_test | awk '{print $2}')
cirros1
という名前のインスタンスを作成して、net_test
ネットワークに接続します。$ openstack server create --flavor m1.tiny --image cirros --nic net-id=$net_mgmt_id cirros1
cirros2
という名前の第 2 のインスタンスを作成して、同様にnet_test
ネットワークに接続します。$ openstack server create --flavor m1.tiny --image cirros --nic net-id=$net_mgmt_id cirros2
4.1.2. ネットワークとテスト環境の設定
admin プロジェクトの ID を特定して保存します。
$ admin_project_id=$(openstack project list | grep admin | awk '{print $2}')
admin プロジェクトのデフォルトのセキュリティーグループを特定して保存します。
$ admin_sec_group_id=$(openstack security group list | grep $admin_project_id | awk '{print $2}')
admin のデフォルトセキュリティーグループに、ICMP トラフィックの受信を許可するルールを追加します。
$ openstack security group rule create $admin_sec_group_id --protocol icmp --ingress
admin のデフォルトセキュリティーグループに、ICMP トラフィックの送信を許可するルールを追加します。
$ openstack security group rule create $admin_sec_group_id --protocol icmp --egress
admin のデフォルトセキュリティーグループに、SSH トラフィックの受信を許可するルールを追加します。
$ openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --ingress
admin のデフォルトセキュリティーグループにルールを追加して SSH トラフィックの送信を許可します。
$ openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --egress
4.1.3. 接続性のテスト
-
horizon からインスタンスの novnc コンソールにアクセスできるはずです。overcloudrc のパスワードを使用して admin として horizon にログインします。cirros イメージのデフォルトのログインでは、ユーザー名は
cirros
、パスワードはcubswin:)
です。 novnc コンソールから、DHCP アドレスがインスタンスに割り当てられているかどうかをことを確認します。
$ ip addr show
注記アンダークラウドから
nova console-log <instance id>
を使用してこの操作を行う方法もあります。これにより、DHCP リースが取得されているかどうかが表示されます。- 次に、ステップ 1 と 2 をその他すべてのインスタンスで繰り返します。
- 1 つのインスタンスから他のインスタンスに ping を試みて、オーバークラウドにおける基本的な テナント ネットワーク接続を検証します。
- Floating IP を使用して他のインスタンスに到達できるかどうかを確認します。
4.1.4. デバイスの作成
cirros1
インスタンスに割り当てる Floating IP を外部ネットワーク上に作成します。$ openstack floating ip create external
Floating IP と
cirros1
のテナント IP の間での NAT 処理に使用するルーターを作成します。$ openstack router create test
ルーターのゲートウェイを外部ネットワークに設定します。
$ openstack router set test --external-gateway external
テナントネットワークに接続するルーターへのインターフェースを追加します。
$ openstack router add subnet test test
ステップ 1 で作成した Floating IP を特定して保存します。
$ floating_ip=$(openstack floating ip list | head -n -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
Floating IP を
cirros1
インスタンスに割り当てます。$ openstack server add floating ip cirros1 $floating_ip
外部ネットワークにアクセス可能なノードからインスタンスへのログインを試みます。
$ ssh cirros@$floating_ip
4.2. 高度なテストの実行
OpenDaylight の設定およびデプロイメントのコンポーネントのいくつかは、デプロイメント後に確認することができます。インストールの特定の部分をテストするには、いくつかの手順に従って操作を実行する必要があります。各手順は別々に記載しています。
これらの手順は、オーバークラウド ノードで実行します。
4.2.1. オーバークラウドノードへの接続
この手順では、オーバークラウドノードに接続して稼働中かどうかをテストします。
手順
- アンダークラウドにログインします。
以下のコマンドを入力して作業を開始します。
$ source /home/stack/stackrc
全インスタンスを一覧表示します。
$ openstack server list
- 必要なインスタンスを選択して、一覧に表示される IP アドレスを書き留めておきます。
マシンに接続します。上記の一覧から取得した IP アドレスを使用します。
$ ssh heat-admin@<IP from step 4>
superuser に切り替えます。
$ sudo -i
4.2.2. OpenDaylight のテスト
OpenDaylight が機能することをテストするには、サービスが稼働していることと、特定の機能が正しく読み込まれていることを確認する必要があります。
手順
- OpenDaylight を実行するオーバークラウドノードまたはカスタムロールで実行している OpenDaylight ノードに superuser としてログインします。
OpenDaylight サービスがアクティブかどうかを確認します。
# systemctl status opendaylight
HAProxy がポート 8081 をリッスンするように適切に設定されていることを確認します。
# grep -A7 opendaylight /etc/haproxy/haproxy.cfg
karaf アカウントに接続します。
$ ssh -p 8101 karaf@localhost
インストール済みの機能を一覧表示します。
$ feature:list | grep odl-netvirt-openstack
API が稼働中であることを確認します。
# web:list | grep neutron
VXLAN トンネルが稼動状態であることを確認します。
# vxlan:show
REST API が正しく応答するかどうかをテストするには、それを使用するモジュールを一覧表示して確認することができます。
# curl -u "admin:admin" http://localhost:8181/restconf/modules
以下と同じような出力が表示されます (この例は短く省略されています)。
{"modules":{"module":[{"name":"netty-event-executor","revision":"2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor"},{"name" ...
REST ストリームをリストします。
# curl -u "admin:admin" http://localhost:8181/restconf/streams
以下のような出力が表示されます。
{"streams":{}}
以下のコマンドを入力して、NetVirt の準備が整って実行中であることを確認します。
# curl -u "admin:admin" http://localhost:8181/restconf/operational/network-topology:network-topology/topology/netvirt:1
以下の出力により確認されます。
{"topology":[{"topology-id":"netvirt:1"}]}
詳細情報
-
ステップ 5: この手順で生成されたリストの 3 番目のコラムに
x
がある場合には、その機能は適切にインストールされていることになります。 -
ステップ 6: この API エンドポイントは、
/etc/neutron/plugins/ml2/ml2_conf.ini
で設定され、neutron が OpenDaylight と通信するのに使用されます。
4.2.3. Open vSwitch のテスト
Open vSwitch を検証するには、コンピュートノードの 1 つに接続し、適切に設定されて OpenDaylight に接続されていることを確認します。
手順
- オーバークラウド内のコンピュートノードの 1 つに superuser として接続します。
Open vSwitch の設定を一覧表示します。
# ovs-vsctl show
出力に Manager が複数ある点に注意してください (以下の例の 2 行目と 3 行目)。
6b003705-48fc-4534-855f-344327d36f2a Manager "ptcp:6639:127.0.0.1" Manager "tcp:172.17.1.16:6640" is_connected: true Bridge br-ex fail_mode: standalone Port br-ex-int-patch Interface br-ex-int-patch type: patch options: {peer=br-ex-patch} Port br-ex Interface br-ex type: internal Port "eth2" Interface "eth2" Bridge br-isolated fail_mode: standalone Port "eth1" Interface "eth1" Port "vlan50" tag: 50 Interface "vlan50" type: internal Port "vlan30" tag: 30 Interface "vlan30" type: internal Port br-isolated Interface br-isolated type: internal Port "vlan20" tag: 20 Interface "vlan20" type: internal Bridge br-int Controller "tcp:172.17.1.16:6653" is_connected: true fail_mode: secure Port br-ex-patch Interface br-ex-patch type: patch options: {peer=br-ex-int-patch} Port "tun02d236d8248" Interface "tun02d236d8248" type: vxlan options: {key=flow, local_ip="172.17.2.18", remote_ip="172.17.2.20"} Port br-int Interface br-int type: internal Port "tap1712898f-15" Interface "tap1712898f-15" ovs_version: "2.7.0"
-
OpenDaylight が実行されているノードの IP アドレスを
tcp
Manager がポイントしていることを確認します。 -
Manager の下に
is_connected: true
と表示されていることを確認し、OVS から OpenDaylight への接続が確立されて、OVSDB プロトコルを使用していることを確かめます。 - 各ブリッジ (br-int 以外) が存在し、Compute ロールでのデプロイメントに使用した NIC テンプレートと一致していることを確認します。
- tcp 接続が、OpenDaylight サービスが実行されているところの IP に対応していることを確認します。
-
ブリッジ br-int で
is_connected: true
が表示され、OpenFlow プロトコルから OpenDaylight への接続が確立されていることを確認します。
詳細情報
- br-int は OpenDaylight によって自動的に作成されます。
4.2.4. コンピュートノード上の Open vSwitch の設定の確認
- コンピュートノードに superuser として接続します。
Open vSwitch の設定を一覧表示します。
# ovs-vsctl list open_vswitch
出力を確認します。以下の例と同様の内容が表示されます。
_uuid : 4b624d8f-a7af-4f0f-b56a-b8cfabf7635d bridges : [11127421-3bcc-4f9a-9040-ff8b88486508, 350135a4-4627-4e1b-8bef-56a1e4249bef] cur_cfg : 7 datapath_types : [netdev, system] db_version : "7.12.1" external_ids : {system-id="b8d16d0b-a40a-47c8-a767-e118fe22759e"} iface_types : [geneve, gre, internal, ipsec_gre, lisp, patch, stt, system, tap, vxlan] manager_options : [c66f2e87-4724-448a-b9df-837d56b9f4a9, defec179-720e-458e-8875-ea763a0d8909] next_cfg : 7 other_config : {local_ip="11.0.0.30", provider_mappings="datacentre:br-ex"} ovs_version : "2.7.0" ssl : [] statistics : {} system_type : RedHatEnterpriseServer system_version : "7.4-Maipo"
-
other_config
オプションの値に、VXLAN トンネルを介してテナントネットワークに接続するローカルインターフェースの正しいlocal_ip
が設定されていることを確認します。 -
other_config
のオプション下のprovider_mappings
の値が OpenDaylightProviderMappings Heat テンプレートパラメーターで指定されている値と一致していることを確認します。この設定により、neutron の論理ネットワークが対応する物理インターフェースにマッピングされます。
4.2.5. neutron の設定の確認
手順
- Controller ロールのノードの 1 つの superuser アカウントに接続します。
-
/etc/neutron/neutron.conf
ファイルにservice_plugins=odl-router_v2,trunk
の設定が含まれていることを確認します。 /etc/neutron/plugin.ini
ファイルに以下の ml2 設定が含まれていることを確認します。[ml2] mechanism_drivers=opendaylight_v2 [ml2_odl] password=admin username=admin url=http://192.0.2.9:8081/controller/nb/v2/neutron
オーバークラウド のコントローラーの 1 つで、neutron エージェントが適切に稼働していることを確認します。
# openstack network agent list
メタデータエージェントと DHCP エージェントが up の状態 (
admin_state_up
オプションがTrue
) であることを確認します。+--------------------------------------+----------------+--------------------------+-------------------+-------+----------------+------------------------+ | id | agent_type | host | availability_zone | alive | admin_state_up | binary | +--------------------------------------+----------------+--------------------------+-------------------+-------+----------------+------------------------+ | 3be198c5-b3aa-4d0e-abb4-51b29db3af47 | Metadata agent | controller-0.localdomain | | :-) | True | neutron-metadata-agent | | 79579d47-dd7d-4ef3-9614-cd2f736043f3 | DHCP agent | controller-0.localdomain | nova | :-) | True | neutron-dhcp-agent | +--------------------------------------+----------------+--------------------------+-------------------+-------+----------------+------------------------+
詳細情報
-
ステップ 3 で触れた
plugin.ini
内の IP は、 InternalAPI の仮想 IP アドレス (VIP) である必要があります。 - ステップ 5 の出力には、Open vSwitch エージェントまたは L3 エージェントは記載されていない点に注意してください。これらはいずれも OpenDaylight によって管理されるようになったので、出力に含まれていないのは望ましい状態です。