OpenStack の仮想ルータ、及びネットワーク削除について

何も知らない状態でネットで公開されているマニュアルを見ながら OpneStack 環境を構築して行くとうまく行かなかったり様々なトラブルが起きるわけですが。

トラブルシューティングをすることによって関連知識も深まり、今まで作った環境を見直したくなったり、要らないものを削除したいなど。 もうちょっとちゃんとした名前を付けとけばよかったな。。と後悔したりします。

特に、構築する段階では、ネットワーク関連トラブルが多く、いくら調べても原因が分からないときに、場合によっては、ネットワークを綺麗に作り直すと直ってしまうケースもあります。

OpenStack 構築マニュアルでは、インスタンス通信用のネットワークとして demo-net を使っているので、このネットワークを削除する方法を例として紹介します。

Cloud Diagram クラウド構成図

OpenStack ネットワーク削除方法

ネットワーク情報

この例では、テナント用の demo-router と demo-net を削除します。(黄色いところ)

ext-net の削除は、実施しておりません。

また、全てのコマンドは、コントロールノード上で実行しています。

ネットワーク名サブネット名CIDR用途
ext-netext-subnet10.100.100.0/24Floating IP 割当て用
demo-netdemo-subnet192.168.100.0/24インスタンス間通信用

demo-router につながっているゲートウェイ、及び demo-router 削除

まずは、demo-router の上下 (External 側 と Tenant 側) につながっているゲートウェイを切断・削除した上で、demo-router を削除します。

Step 1. demo ユーザ用のクレデンシャル読み込み

demo-net 作成時に demo ユーザ用のクレデンシャルを使ったので、削除する際にも demo ユーザ用のクレデンシャルを読込みます。

クレデンシャル読み込み
$ source ~/demo-openrc.sh

Step 2. ルータリスト確認

以下のコマンドを実行し、仮想ルータ一覧を出力し、demo-router の ID (732600f4・・・) を確認します。

neutron router-list
$ neutron router-list
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id                                   | name        | external_gateway_info                                                                                                                                                                     |
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 732600f4-cf15-421f-8b82-2f1be1bcdd1f | demo-router | {"network_id": "1f896e4f-b966-4af4-90f1-12e5f65cebcc", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "92ba088a-ac9f-4c7c-9094-3241cee3dcc3", "ip_address": "10.100.100.101"}]}|
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Step 3. ルータ詳細確認

以下のコマンドを実行し、demo-router の詳細情報を確認します。

削除しようとしているルータであることをもう一回確認してください。

neutron router-show <ROUTER_ID>
$ neutron router-show 732600f4-cf15-421f-8b82-2f1be1bcdd1f
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                                                                                                     |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                                                                                                                      |
| external_gateway_info | {"network_id": "1f896e4f-b966-4af4-90f1-12e5f65cebcc", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "92ba088a-ac9f-4c7c-9094-3241cee3dcc3", "ip_address": "10.100.100.101"}]}|
| id                    | 732600f4-cf15-421f-8b82-2f1be1bcdd1f                                                                                                                                                      |
| name                  | demo-router                                                                                                                                                                               |
| routes                |                                                                                                                                                                                           |
| status                | ACTIVE                                                                                                                                                                                    |
| tenant_id             | 111f5d2dce1b4ab79e5ab14746aae23a                                                                                                                                                          |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Step 4. ルータにつながっているゲートウェイ削除

以下のコマンドを実行し、demo-router につながっているゲートウェイ (ext-subnet のゲートウェイ) を削除します。

neutron router-gateway-clear <ROUTER_ID>
$ neutron router-gateway-clear 732600f4-cf15-421f-8b82-2f1be1bcdd1f
Removed gateway from router 732600f4-cf15-421f-8b82-2f1be1bcdd1f

Step 5. ポートリスト確認

以下のコマンドを実行し、demo-router につながっているポートリストを出力し、demo-subet ゲートウェアの subnet_id を確認します。

この subnet_id は、次のステップ ルータインタフェース削除 時に必要になります。

neutron router-port-list <ROUTER_ID>
$ neutron router-port-list 732600f4-cf15-421f-8b82-2f1be1bcdd1f
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                            |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
| b694a73d-04dd-44ee-8c51-98cf4c0c959b |      | fa:16:3e:12:4e:5f | {"subnet_id": "ed8e8a9a-9b96-4f74-90f7-32945d97dc8b", "ip_address": "192.168.100.1"} |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+

Step 6. ルータインタフェース削除

以下のコマンドを実行し、ルータインタフェース (demo-subnet のゲートウェイ) を削除します。

<SUBNET_ID> には、先ほど確認したポートリストの fixed_ips カラムの subnet_id をセットしてください。

neutron router-interface-delete <ROUTER_ID> <SUBNET_ID>
$ neutron router-interface-delete 732600f4-cf15-421f-8b82-2f1be1bcdd1f ed8e8a9a-9b96-4f74-90f7-32945d97dc8b
Removed interface from router 732600f4-cf15-421f-8b82-2f1be1bcdd1f.

Step 7. ルータ削除

この時点で、demo-router は、ext-subnet のゲートウェイdemo-subnet のゲートウェイ と接続が切れた状態になるので、以下のコマンドを実行し、demo-router を削除します。

neutron router-delete <ROUTER_ID>
$ neutron router-delete 732600f4-cf15-421f-8b82-2f1be1bcdd1f
Deleted router: 732600f4-cf15-421f-8b82-2f1be1bcdd1f

demo-subnet と demo-net 削除

demo-router を削除した後にやることは、demo-net 側に存在する demo-subnetdemo-net を削除することです。

Step 1. サブネットリスト確認

以下のコマンドを実行し、demo-subnet の ID を確認します。

neutron subnet-list
$ neutron subnet-list
+--------------------------------------+-------------+------------------+------------------------------------------------------+
| id                                   | name        | cidr             | allocation_pools                                     |
+--------------------------------------+-------------+------------------+------------------------------------------------------+
| ed8e8a9a-9b96-4f74-90f7-32945d97dc8b | demo-subnet | 192.168.100.0/24 | {"start": "192.168.100.2", "end": "192.168.100.254"} |
+--------------------------------------+-------------+------------------+------------------------------------------------------+

Step 2. サブネット詳細確認

以下のコマンドを実行し、demo-subnet の詳細情報を確認します。

この後、demo-sebnetdemo-net を削除するので、demo-subnet の idnetwork_id を確認してください。

neutron subnet-show <SUBNET_ID>
$ neutron subnet-show ed8e8a9a-9b96-4f74-90f7-32945d97dc8b
+-------------------+------------------------------------------------------+
| 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                | ed8e8a9a-9b96-4f74-90f7-32945d97dc8b                 |
| ip_version        | 4                                                    |
| ipv6_address_mode |                                                      |
| ipv6_ra_mode      |                                                      |
| name              | demo-subnet                                          |
| network_id        | a80899a3-340a-4ffe-a368-ac39f1ff222b                 |
| tenant_id         | 111f5d2dce1b4ab79e5ab14746aae23a                     |
+-------------------+------------------------------------------------------+

Step 3. サブネット削除

以下のコマンドを実行し、demo-subnet を削除します。

neutron subnet-delete <SUBNET_ID>
$ neutron subnet-delete ed8e8a9a-9b96-4f74-90f7-32945d97dc8b
Deleted subnet: ed8e8a9a-9b96-4f74-90f7-32945d97dc8b

Step 4. ネットワークリスト確認

以下のネットワークリスト確認コマンドを実行し、demo-net のサブネットである demo-subnet が削除されていることを確認します。

neutron net-list
$ neutron net-list
+--------------------------------------+-----------+---------------------------------------+
| id                                   | name      | subnets                               |
+--------------------------------------+-----------+---------------------------------------+
| 1f896e4f-b966-4af4-90f1-12e5f65cebcc | ext-net01 | 92ba088a-ac9f-4c7c-9094-3241cee3dcc3  |
| a80899a3-340a-4ffe-a368-ac39f1ff222b | demo-net  |                                       |
+--------------------------------------+-----------+---------------------------------------+

Step 5. ネットワーク削除

demo-subnet 削除が終わったら以下のコマンドを実行し、demo-net を削除します。

neutron net-delete <NETWORK_ID>
$ neutron net-delete a80899a3-340a-4ffe-a368-ac39f1ff222b
Deleted network: a80899a3-340a-4ffe-a368-ac39f1ff222b

Step 6. ネットワークリスト確認

最後に、以下のコマンドを実行し、demo-net が削除されたことを確認します。

neutron net-list
$ neutron net-list
+--------------------------------------+-----------+---------------------------------------+
| id                                   | name      | subnets                               |
+--------------------------------------+-----------+---------------------------------------+
| 1f896e4f-b966-4af4-90f1-12e5f65cebcc | ext-net01 | 92ba088a-ac9f-4c7c-9094-3241cee3dcc3  |
+--------------------------------------+-----------+---------------------------------------+

これで、ネットワーク削除は、完了です。 後は、tenant-net、tenant-subnet01 等、お好みに合わせてネットワークを作成してください。

以上、OpenStack : 仮想ルータ、及びネットワーク削除方法でした。