このセクションでは、コントローラーノードに Neutron LBaaS (Load-Balancer-as-a-Service) v2 による仮想ロードバランサーのインストールと設定方法について紹介する。

インストール

openstack-rocky の yum リポジトリ(CentOS-Openstack-rocky.repo)を使って、 LBaaS v2 に必要なパッケージをインストールする。

[root@controller ~]# yum --enablerepo=centos-openstack-rocky,epel -y install openstack-neutron-lbaas net-tools 
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
base                                                               | 3.6 kB  00:00:00     
centos-ceph-luminous                                               | 2.9 kB  00:00:00     
centos-openstack-rocky                                             | 2.9 kB  00:00:00     
centos-qemu-ev                                                     | 2.9 kB  00:00:00     
extras                                                             | 3.4 kB  00:00:00     
updates                                                            | 3.4 kB  00:00:00     
パッケージ net-tools-2.0-0.22.20131004git.el7.x86_64 はインストール済みか最新バージョンです
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ openstack-neutron-lbaas.noarch 1:13.0.0-1.el7 を インストール
--> 依存性の処理をしています: python-neutron-lbaas = 1:13.0.0-1.el7 のパッケージ: 1:openstack-neutron-lbaas-13.0.0-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-neutron-lbaas.noarch 1:13.0.0-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================
 Package                    アーキテクチャー
                                      バージョン          リポジトリー               容量
==========================================================================================
インストール中:
 openstack-neutron-lbaas    noarch    1:13.0.0-1.el7      centos-openstack-rocky     15 k
依存性関連でのインストールをします:
 python-neutron-lbaas       noarch    1:13.0.0-1.el7      centos-openstack-rocky    260 k

トランザクションの要約
==========================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 275 k
インストール容量: 1.2 M
Downloading packages:
(1/2): openstack-neutron-lbaas-13.0.0-1.el7.noarch.rpm             |  15 kB  00:00:04     
(2/2): python-neutron-lbaas-13.0.0-1.el7.noarch.rpm                | 260 kB  00:00:07     
------------------------------------------------------------------------------------------
合計                                                       39 kB/s | 275 kB  00:00:07     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:python-neutron-lbaas-13.0.0-1.el7.noarch                1/2 
  インストール中          : 1:openstack-neutron-lbaas-13.0.0-1.el7.noarch             2/2 
  検証中                  : 1:openstack-neutron-lbaas-13.0.0-1.el7.noarch             1/2 
  検証中                  : 1:python-neutron-lbaas-13.0.0-1.el7.noarch                2/2 

インストール:
  openstack-neutron-lbaas.noarch 1:13.0.0-1.el7                                           

依存性関連をインストールしました:
  python-neutron-lbaas.noarch 1:13.0.0-1.el7                                              

完了しました!
[root@controller ~]#

エージェントを用いた LBaaS v2 の設定

Neuton サービスの設定ファイル( /etc/neutron/neutron.conf )を編集し、以下設定する。

[root@controller ~]# vi /etc/neutron/neutron.conf 

LBaaS v2 サービスプラグインを service_plugins に追加する。既存の設定項目の後続に、カンマ区切りで指定する。

service_plugins = router
↓(追加)
service_plugins = router,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2

LBaaS 設定ファイル( /etc/neutron/neutron_lbaas.conf )を編集し、以下設定する。

[root@controller ~]# vi /etc/neutron/neutron_lbaas.conf 

[service_providers] セクション内の service_provider 設定ディレクティブにLBaaS v2サービスプロバイダを追加する。

[service_providers]
# ...
service_provider = LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default

LBaaS エージェント設定ファイル( /etc/neutron/lbaas_agent.ini )を編集し、以下設定する。

[root@controller ~]# vi /etc/neutron/lbaas_agent.ini 

[DEFAULT] セクションに、仮想インタフェースを管理するドライバを選択する。interface_driver には、Neutron サービスの仮想ネットワークで Open vSwitch を使用している場合には openvswitchを指定し、Linux bridgeを指定している場合には linuxbridge を指定する。

[root@controller ~]# vi /etc/neutron/lbaas_agent.ini 
[DEFAULT]
#interface_driver = <None>
device_driver = neutron_lbaas.drivers.haproxy.namespace_driver.HaproxyNSDriver
interface_driver = linuxbridge

[haproxy] セクションに、haproxy のユーザーグループを指定する。

[haproxy]
user_group = haproxy

Networking サービス( Neutron ) データベースを更新する。

[root@controller ~]# neutron-db-manage --subproject neutron-lbaas upgrade head
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
  neutron-lbaas に対して upgrade を実行中です...
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> start_neutron_lbaas, start neutron-lbaas chain
INFO  [alembic.runtime.migration] Running upgrade start_neutron_lbaas -> lbaasv2, lbaas version 2 api
INFO  [alembic.runtime.migration] Running upgrade lbaasv2 -> 4deef6d81931, add provisioning and operating statuses
INFO  [alembic.runtime.migration] Running upgrade 4deef6d81931 -> 4b6d8d5310b8, add_index_tenant_id
INFO  [alembic.runtime.migration] Running upgrade 4b6d8d5310b8 -> 364f9b6064f0, agentv2
INFO  [alembic.runtime.migration] Running upgrade 364f9b6064f0 -> lbaasv2_tls, lbaasv2 TLS
INFO  [alembic.runtime.migration] Running upgrade lbaasv2_tls -> 4ba00375f715, edge_driver
INFO  [alembic.runtime.migration] Running upgrade 4ba00375f715 -> kilo, kilo
INFO  [alembic.runtime.migration] Running upgrade kilo -> 3345facd0452, Initial Liberty no-op expand script.
INFO  [alembic.runtime.migration] Running upgrade 3345facd0452 -> 4a408dd491c2, Addition of Name column to lbaas_members and lbaas_healthmonitors table
INFO  [alembic.runtime.migration] Running upgrade 4a408dd491c2 -> 3426acbc12de, Add flavor id
INFO  [alembic.runtime.migration] Running upgrade 3426acbc12de -> 6aee0434f911, independent pools
INFO  [alembic.runtime.migration] Running upgrade 6aee0434f911 -> 3543deab1547, add_l7_tables
INFO  [alembic.runtime.migration] Running upgrade 3543deab1547 -> 62deca5010cd, Add tenant-id index for L7 tables
INFO  [alembic.runtime.migration] Running upgrade kilo -> 130ebfdef43, Initial Liberty no-op contract revision.
INFO  [alembic.runtime.migration] Running upgrade 130ebfdef43 -> 4b4dc6d5d843, rename tenant to project
INFO  [alembic.runtime.migration] Running upgrade 4b4dc6d5d843 -> e6417a8b114d, Drop v1 tables
INFO  [alembic.runtime.migration] Running upgrade 62deca5010cd -> 844352f9fe6f, Add healthmonitor max retries down
  OK
[root@controller ~]# 

インストールの最終作業

新しい構成を有効にするために、Neutron サービスを再起動する。

■ 再起動
[root@controller ~]# systemctl restart neutron-server
[root@controller ~]# 

■ 起動状態確認
[root@controller ~]# systemctl status neutron-server
● neutron-server.service - OpenStack Neutron Server
   Loaded: loaded (/usr/lib/systemd/system/neutron-server.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-11-04 02:58:06 JST; 5s ago
 Main PID: 7636 (neutron-server)
   CGroup: /system.slice/neutron-server.service
           ├─7636 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neu...
           ├─7649 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neu...
           ├─7650 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neu...
           ├─7651 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neu...
           ├─7652 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neu...
           └─7653 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neu...

11月 04 02:58:04 controller systemd[1]: Starting OpenStack Neutron Server...
11月 04 02:58:06 controller systemd[1]: Started OpenStack Neutron Server.
[root@controller ~]#