エージェントを用いた 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 ~]#