第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 external
新しい外部ネットワーク (前のステップで作成済み) に対応する 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ネットワークとSSHセキュリティーグループにアタッチします。$ openstack server create --flavor m1.small --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain net1_host1_vm1 cirros1
cirros2という 2 番目のインスタンスを作成して、そのインスタンスもnet_testネットワークとSSHセキュリティーグループにアタッチします。$ openstack server create --flavor m1.small --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain net1_host1_vm1 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 から取得したパスワードを使用して horizon に admin としてログインします。cirros イメージのデフォルトの認証情報はユーザー名が
cirros、パスワードがcubswin:)です。 novnc コンソールから、DHCP アドレスがインスタンスに割り当てられているかどうかをことを確認します。
$ ip addr show
注記また、アンダークラウドから
nova console-log <instance id>のコマンドを実行して、インスタンスが DHCP アドレスnova console-log <instance id>を受信していることを確認することができます。- ステップ 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 の設定およびデプロイメントのコンポーネントのいくつかは、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 コントローラーがすべてのコントローラーノード上で実行されていることを確認します。
# docker ps | grep opendaylight 2363a99d514a 192.168.24.1:8787/rhosp13/openstack-opendaylight:latest "kolla_start" 4 hours ago Up 4 hours (healthy) opendaylight_api
HAProxy がポート 8081 をリッスンするように適切に設定されていることを確認します。
# docker exec -it haproxy-bundle-docker-0 grep -A7 opendaylight /etc/haproxy/haproxy.cfg listen opendaylight bind 172.17.0.10:8081 transparent bind 192.168.24.10:8081 transparent mode http balance source server overcloud-controller-0.internalapi.localdomain 172.17.0.22:8081 check fall 5 inter 2000 rise 2 server overcloud-controller-1.internalapi.localdomain 172.17.0.12:8081 check fall 5 inter 2000 rise 2 server overcloud-controller-2.internalapi.localdomain 172.17.0.13:8081 check fall 5 inter 2000 rise 2
HAproxy IPを使用して、karaf のアカウントを接続します。karaf のパスワードは
karafです。# ssh -p 8101 karaf@localhost
インストール済みの機能を一覧表示します。
# feature:list -i | grep odl-netvirt-openstack
ステップ 5: この手順で生成されたリストの 3 番目のコラムに
xがある場合には、その機能は適切にインストールされていることになります。API が稼働中であることを確認します。
# web:list | grep neutron
このAPIエンドポイントは、
/etc/neutron/plugins/ml2/ml2_conf.iniで設定され、neutron が OpenDaylight と通信するのに使用されます。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" ...ホストの internal_API IP を使用する REST のストリームを一覧表示します。
# curl -u "admin:admin" http://localhost:8181/restconf/streams
以下と同様の出力が表示されます。
{"streams":{}}ホストの internal_API IP で次のコマンドを実行して、NetVirt が動作していることを確認します。
# curl -u "admin:admin" http://localhost:8181/restconf/operational/network-topology:network-topology/topology/netvirt:1
NetVirt が動作可能であることを確認するには、以下の出力に注意してください。
{"topology":[{"topology-id":"netvirt:1"}]}
4.2.3. Open vSwitch のテスト
Open vSwitch を検証するには、コンピュートノードの 1 つに接続し、適切に設定されて OpenDaylight に接続されていることを確認します。
手順
- オーバークラウド内のコンピュートノードの 1 つに superuser として接続します。
Open vSwitch の設定を一覧表示します。
# ovs-vsctl show
出力に複数のマネージャーがあることに注意してください。この例では、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 アドレスを
tcpManager がポイントしていることを確認します。 -
Manager の下に
is_connected: trueと表示されていることを確認し、OVS から OpenDaylight への接続が確立されて、OVSDB プロトコルを使用していることを確かめます。 - 各ブリッジ (br-int 以外) が存在し、Compute ロールでのデプロイメントに使用した NIC テンプレートと一致していることを確認します。
- tcp 接続が、OpenDaylight サービスが実行されているところの IP に対応していることを確認します。
-
ブリッジ br-int に
is_connected: trueが表示され、OpenFlow プロトコルから OpenDaylight への接続が確立されていることを確認します。
詳細情報
- OpenDaylight は、br-int のブリッジを自動的に作成します。
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 エージェントの両方の
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 によって管理されるようになったので、出力に含まれていないのは望ましい状態です。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.