エージェントを用いた LBaaS v2 でも Octavia を用いた LBaaS v2 でも同じ neutron コマンドを使用します。
LBaaS v2 ロードバランサーの作成
ネットワークにロードバランサーを作成する。ここでは、lb01 といった名前でプライベートネットワーク Self network 1 にロードバランサーを作成します。
[root@controller ~]# neutron lbaas-loadbalancer-create --name lb01 "Self network 1"
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new loadbalancer:
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| admin_state_up | True |
| description | |
| id | b3229db5-49c5-494c-b46f-b8aa25435bc7 |
| listeners | |
| name | lb01 |
| operating_status | OFFLINE |
| pools | |
| provider | haproxy |
| provisioning_status | PENDING_CREATE |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| vip_address | 172.16.2.113 |
| vip_port_id | 4fc8931b-fc9f-417a-b8e9-0052a29014b6 |
| vip_subnet_id | 812d8088-e027-452b-b006-3124bbee81c2 |
+---------------------+--------------------------------------+
[root@controller ~]#
ロードバランサーの状態と IP アドレスを確認する。
[root@controller ~]# neutron lbaas-loadbalancer-show lb01
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| admin_state_up | True |
| description | |
| id | b3229db5-49c5-494c-b46f-b8aa25435bc7 |
| listeners | |
| name | lb01 |
| operating_status | ONLINE |
| pools | |
| provider | haproxy |
| provisioning_status | ACTIVE |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| vip_address | 172.16.2.113 |
| vip_port_id | 4fc8931b-fc9f-417a-b8e9-0052a29014b6 |
| vip_subnet_id | 812d8088-e027-452b-b006-3124bbee81c2 |
+---------------------+--------------------------------------+
[root@controller ~]#
作成したロードバランサーにトラフィックが到達できるように、セキュリティーグループ lbaas を新規で作成する。
[root@controller ~]# neutron security-group-create lbaas
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new security_group:
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at | 2018-11-08T13:37:56Z |
| description | |
| id | 227ebf9b-efdd-4cab-91d3-33f5aafcc6bf |
| name | lbaas |
| project_id | b9644b0689c4469baa45f9acb009d860 |
| revision_number | 1 |
| security_group_rules | {"remote_group_id": null, "direction": "egress", "protocol": null, "description": null, "tags": [], "ethertype": "IPv6", "remote_ip_prefix": null, "port_range_max": null, "updated_at": "2018-11-08T13:37:56Z", "security_group_id": "227ebf9b-efdd-4cab-91d3-33f5aafcc6bf", "port_range_min": null, "revision_number": 0, "tenant_id": "b9644b0689c4469baa45f9acb009d860", "created_at": "2018-11-08T13:37:56Z", "project_id": "b9644b0689c4469baa45f9acb009d860", "id": "e4b01041-90a7-40af-af64-766d87664f17"} |
| | {"remote_group_id": null, "direction": "egress", "protocol": null, "description": null, "tags": [], "ethertype": "IPv4", "remote_ip_prefix": null, "port_range_max": null, "updated_at": "2018-11-08T13:37:56Z", "security_group_id": "227ebf9b-efdd-4cab-91d3-33f5aafcc6bf", "port_range_min": null, "revision_number": 0, "tenant_id": "b9644b0689c4469baa45f9acb009d860", "created_at": "2018-11-08T13:37:56Z", "project_id": "b9644b0689c4469baa45f9acb009d860", "id": "fa959908-685a-40ff-9774-bf3994625110"} |
| tags | |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| updated_at | 2018-11-08T13:37:56Z |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@controller ~]#
作成したセキュリティーグループに、 TCP ポート 80 へのトラフィックを許可するルールを登録する。
[root@controller ~]# neutron security-group-rule-create \
--direction ingress \
--protocol tcp \
--port-range-min 80 \
--port-range-max 80 \
--remote-ip-prefix 0.0.0.0/0 \
lbaas
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new security_group_rule:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2018-11-08T13:38:55Z |
| description | |
| direction | ingress |
| ethertype | IPv4 |
| id | 95b72195-28d3-42ad-bc71-565892469884 |
| port_range_max | 80 |
| port_range_min | 80 |
| project_id | b9644b0689c4469baa45f9acb009d860 |
| protocol | tcp |
| remote_group_id | |
| remote_ip_prefix | 0.0.0.0/0 |
| revision_number | 0 |
| security_group_id | 227ebf9b-efdd-4cab-91d3-33f5aafcc6bf |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| updated_at | 2018-11-08T13:38:55Z |
+-------------------+--------------------------------------+
[root@controller ~]#
作成したセキュリティーグループに、 TCP ポート 443 へのトラフィックを許可するルールを登録する。
[root@controller ~]# neutron security-group-rule-create \
--direction ingress \
--protocol tcp \
--port-range-min 443 \
--port-range-max 443 \
--remote-ip-prefix 0.0.0.0/0 \
lbaas
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new security_group_rule:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2018-11-08T13:39:22Z |
| description | |
| direction | ingress |
| ethertype | IPv4 |
| id | 36a19a56-60e3-4405-a761-347206b97a4b |
| port_range_max | 443 |
| port_range_min | 443 |
| project_id | b9644b0689c4469baa45f9acb009d860 |
| protocol | tcp |
| remote_group_id | |
| remote_ip_prefix | 0.0.0.0/0 |
| revision_number | 0 |
| security_group_id | 227ebf9b-efdd-4cab-91d3-33f5aafcc6bf |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| updated_at | 2018-11-08T13:39:22Z |
+-------------------+--------------------------------------+
[root@controller ~]#
作成したセキュリティーグループに、 ICMP へのトラフィックを許可するルールを登録する。
[root@controller ~]# neutron security-group-rule-create \
--direction ingress \
--protocol icmp \
lbaas
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new security_group_rule:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2018-11-08T13:39:41Z |
| description | |
| direction | ingress |
| ethertype | IPv4 |
| id | bbd7e3d4-4d86-430f-8f34-25b0ef30d3a6 |
| port_range_max | |
| port_range_min | |
| project_id | b9644b0689c4469baa45f9acb009d860 |
| protocol | icmp |
| remote_group_id | |
| remote_ip_prefix | |
| revision_number | 0 |
| security_group_id | 227ebf9b-efdd-4cab-91d3-33f5aafcc6bf |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| updated_at | 2018-11-08T13:39:41Z |
+-------------------+--------------------------------------+
[root@controller ~]#
作成したセキュリティーグループをロードバランサーのポートに適用する。ロードバランサーのポートは neutron lbaas-loadbalancer-show コマンドで表示される vip_port_id の値を指定する。
[root@controller ~]# neutron port-update \
--security-group lbaas \
4fc8931b-fc9f-417a-b8e9-0052a29014b6
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Updated port: 4fc8931b-fc9f-417a-b8e9-0052a29014b6
[root@controller ~]#
HTTP リスナーの追加
ロードバランサーに、HTTP トラフィックに対するポート 80 のリスナーを追加する。
[root@controller ~]# neutron lbaas-listener-create \
--name lb01-http \
--loadbalancer lb01 \
--protocol HTTP \
--protocol-port 80
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new listener:
+---------------------------+------------------------------------------------+
| Field | Value |
+---------------------------+------------------------------------------------+
| admin_state_up | True |
| connection_limit | -1 |
| default_pool_id | |
| default_tls_container_ref | |
| description | |
| id | 953c5650-9b9d-49c6-b5ca-7e96cf6e9dec |
| loadbalancers | {"id": "b3229db5-49c5-494c-b46f-b8aa25435bc7"} |
| name | lb01-http |
| protocol | HTTP |
| protocol_port | 80 |
| sni_container_refs | |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
+---------------------------+------------------------------------------------+
[root@controller ~]#
ロードバランサーのプールを以下指定して作成する。
プール名:lb01-pool-http
負荷分散するアルゴリズム:ラウンドロビン(ROUND_ROBIN)
リスナー:lb01-http
プロトコル:HTTP
[root@controller ~]# neutron lbaas-pool-create \
--name lb01-pool-http \
--lb-algorithm ROUND_ROBIN \
--listener lb01-http \
--protocol HTTP
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new pool:
+---------------------+------------------------------------------------+
| Field | Value |
+---------------------+------------------------------------------------+
| admin_state_up | True |
| description | |
| healthmonitor_id | |
| id | 7b60955f-46fd-4c05-a055-1dba425182cd |
| lb_algorithm | ROUND_ROBIN |
| listeners | {"id": "953c5650-9b9d-49c6-b5ca-7e96cf6e9dec"} |
| loadbalancers | {"id": "b3229db5-49c5-494c-b46f-b8aa25435bc7"} |
| members | |
| name | lb01-pool-http |
| protocol | HTTP |
| session_persistence | |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
+---------------------+------------------------------------------------+
[root@controller ~]#
ロードバランサーのプール( lb01-pool-http )に参加させるメンバーを登録する。ここでは、プライベートネットワーク( Self network 1 )に接続された仮想マシン( 172.16.2.117 と 172.16.2.104 )2台をメンバーとして登録する。
1台目の仮想マシンを以下指定し、ロードバランサーのプールに登録する。
名前: lb01-http-member-1
サブネット: Self network 1
アドレス: 172.16.2.117
プロトコルポート: 80
リスナー:lb01-http
プロトコル:HTTP
[root@controller ~]# neutron lbaas-member-create \
--name lb01-http-member-1 \
--subnet "Self network 1" \
--address 172.16.2.117 \
--protocol-port 80 \
lb01-pool-http
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new member:
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| address | 172.16.2.117 |
| admin_state_up | True |
| id | 1daf0a12-a0f4-4093-8f34-0e033ff463ec |
| name | lb01-http-member-1 |
| protocol_port | 80 |
| subnet_id | 812d8088-e027-452b-b006-3124bbee81c2 |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| weight | 1 |
+----------------+--------------------------------------+
[root@controller ~]#
2台目の仮想マシンを以下指定し、ロードバランサーのプールに登録する。
名前: lb01-http-member-2
サブネット: Self network 1
アドレス: 172.16.2.104
プロトコルポート: 80
リスナー:lb01-http
プロトコル:HTTP
[root@controller ~]# neutron lbaas-member-create \
--name lb01-http-member-2 \
--subnet "Self network 1" \
--address 172.16.2.104 \
--protocol-port 80 \
lb01-pool-http
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new member:
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| address | 172.16.2.104 |
| admin_state_up | True |
| id | c35e085f-f231-4b21-8d55-4ed1563f49b3 |
| name | lb01-http-member-2 |
| protocol_port | 80 |
| subnet_id | 812d8088-e027-452b-b006-3124bbee81c2 |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| weight | 1 |
+----------------+--------------------------------------+
[root@controller ~]#
ヘルスモニターを追加し、反応のないサーバーをプールから削除できるように設定する。ここでは、ヘルスモニターは、 5 秒間隔で 2 回ヘルスチェックに失敗すると、そのサーバーをプールから削除し、サーバーが復活しヘルスチェックに再び応答し始めると、そのサーバーはプールにもう一度追加されるように設定する。
[root@controller ~]# neutron lbaas-healthmonitor-create \
--name lb01-http-monitor \
--delay 5 \
--max-retries 2 \
--timeout 10 \
--type HTTP \
--pool lb01-pool-http
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new healthmonitor:
+------------------+------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------+
| admin_state_up | True |
| delay | 5 |
| expected_codes | 200 |
| http_method | GET |
| id | 74034b3c-af69-45fa-87ff-0f4cdea0e6fc |
| max_retries | 2 |
| max_retries_down | 3 |
| name | lb01-http-monitor |
| pools | {"id": "7b60955f-46fd-4c05-a055-1dba425182cd"} |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| timeout | 10 |
| type | HTTP |
| url_path | / |
+------------------+------------------------------------------------+
[root@controller ~]#
Floating IP アドレスの割り当て
ロードバランサーに Floating IP アドレスを割り当て、外部からアクセスできるようにする。
この節の最初に紹介した neutron lbaas-loadbalancer-show コマンドを使って vip_port_id
を確認します。 vip_port_id
はロードバランサーに割り当てられたネットワークポートの ID です。 neutron floatingip-associate を使って未使用の Floating IP アドレスをロードバランサーに割り当てます。
まず、ロードバランサーの vip_port_id を確認する。
[root@controller ~]# neutron lbaas-loadbalancer-show lb01
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+---------------------+------------------------------------------------+
| Field | Value |
+---------------------+------------------------------------------------+
| admin_state_up | True |
| description | |
| id | b3229db5-49c5-494c-b46f-b8aa25435bc7 |
| listeners | {"id": "953c5650-9b9d-49c6-b5ca-7e96cf6e9dec"} |
| name | lb01 |
| operating_status | ONLINE |
| pools | {"id": "7b60955f-46fd-4c05-a055-1dba425182cd"} |
| provider | haproxy |
| provisioning_status | ACTIVE |
| tenant_id | b9644b0689c4469baa45f9acb009d860 |
| vip_address | 172.16.2.113 |
| vip_port_id | 4fc8931b-fc9f-417a-b8e9-0052a29014b6 |
| vip_subnet_id | 812d8088-e027-452b-b006-3124bbee81c2 |
+---------------------+------------------------------------------------+
[root@controller ~]#
次に、割り当て可能な floating ip を確認する。
[root@controller ~]# openstack floating ip list
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| ID | Floating IP Address | Fixed IP Address | Port | Floating Network | Project |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| 1b47379d-020c-43ed-a442-a953796b479b | 192.168.25.104 | None | None | a07ede34-eb96-470e-97a8-6dd6917ba18d | b9644b0689c4469baa45f9acb009d860 |
| d541d8c0-2214-4a4b-8f42-37625cbca81f | 192.168.25.116 | None | None | a07ede34-eb96-470e-97a8-6dd6917ba18d | b9644b0689c4469baa45f9acb009d860 |
| df971c01-99a0-49e0-a5c6-ed25c60be6e4 | 192.168.25.109 | None | None | a07ede34-eb96-470e-97a8-6dd6917ba18d | b9644b0689c4469baa45f9acb009d860 |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
[root@controller ~]#
ロードバランサーに 未使用の Floating IP アドレスを割り当てる。
[root@controller ~]# neutron floatingip-associate 1b47379d-020c-43ed-a442-a953796b479b 4fc8931b-fc9f-417a-b8e9-0052a29014b6
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Associated floating IP 1b47379d-020c-43ed-a442-a953796b479b
[root@controller ~]#
ロードバランサーの統計情報の取得
LBaaS v2 エージェントは、 6 秒毎に各ロードバランサーについて 4 種類の統計情報を収集します。ユーザーはこれらの統計情報を照会することができます。
ロードバランサーの統計情報を照会する。
[root@controller ~]# neutron lbaas-loadbalancer-stats lb01
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+--------------------+-------+
| Field | Value |
+--------------------+-------+
| active_connections | 0 |
| bytes_in | 0 |
| bytes_out | 0 |
| total_connections | 0 |
+--------------------+-------+
[root@controller ~]#