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

インストール

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

[root@compute1 ~]# yum --enablerepo=centos-openstack-rocky,epel -y install openstack-neutron-lbaas haproxy net-tools 
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
base                                                     | 3.6 kB     00:00     
centos-ceph-luminous                                     | 2.9 kB     00:00     
centos-openstack-rocky                                   | 2.9 kB     00:00     
centos-qemu-ev                                           | 2.9 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
(1/4): centos-qemu-ev/7/x86_64/primary_db                  |  51 kB   00:03     
(2/4): centos-ceph-luminous/7/x86_64/primary_db            | 118 kB   00:04     
(3/4): updates/7/x86_64/primary_db                         | 6.0 MB   00:24     
(4/4): centos-openstack-rocky/7/x86_64/primary_db          | 769 kB   00:32     
パッケージ net-tools-2.0-0.22.20131004git.el7.x86_64 はインストール済みか最新バージョンです
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ haproxy.x86_64 0:1.5.18-7.el7 を インストール
---> パッケージ 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
--> 依存性の処理をしています: openstack-neutron >= 1:13 のパッケージ: 1:openstack-neutron-lbaas-13.0.0-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ openstack-neutron.noarch 1:13.0.1-2.el7 を インストール
--> 依存性の処理をしています: dnsmasq-utils >= 2.76 のパッケージ: 1:openstack-neutron-13.0.1-2.el7.noarch
--> 依存性の処理をしています: keepalived のパッケージ: 1:openstack-neutron-13.0.1-2.el7.noarch
--> 依存性の処理をしています: dibbler-client のパッケージ: 1:openstack-neutron-13.0.1-2.el7.noarch
--> 依存性の処理をしています: conntrack-tools のパッケージ: 1:openstack-neutron-13.0.1-2.el7.noarch
---> パッケージ python-neutron-lbaas.noarch 1:13.0.0-1.el7 を インストール
--> 依存性の処理をしています: python2-barbicanclient >= 4.5.2 のパッケージ: 1:python-neutron-lbaas-13.0.0-1.el7.noarch
--> 依存性の処理をしています: python2-pyasn1-modules のパッケージ: 1:python-neutron-lbaas-13.0.0-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ conntrack-tools.x86_64 0:1.4.4-3.el7_3 を インストール
--> 依存性の処理をしています: libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.1)(64bit) のパッケージ: conntrack-tools-1.4.4-3.el7_3.x86_64
--> 依存性の処理をしています: libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.0)(64bit) のパッケージ: conntrack-tools-1.4.4-3.el7_3.x86_64
--> 依存性の処理をしています: libnetfilter_cthelper.so.0(LIBNETFILTER_CTHELPER_1.0)(64bit) のパッケージ: conntrack-tools-1.4.4-3.el7_3.x86_64
--> 依存性の処理をしています: libnetfilter_queue.so.1()(64bit) のパッケージ: conntrack-tools-1.4.4-3.el7_3.x86_64
--> 依存性の処理をしています: libnetfilter_cttimeout.so.1()(64bit) のパッケージ: conntrack-tools-1.4.4-3.el7_3.x86_64
--> 依存性の処理をしています: libnetfilter_cthelper.so.0()(64bit) のパッケージ: conntrack-tools-1.4.4-3.el7_3.x86_64
---> パッケージ dibbler-client.x86_64 0:1.0.1-0.RC1.2.el7 を インストール
---> パッケージ dnsmasq-utils.x86_64 0:2.76-5.el7 を インストール
---> パッケージ keepalived.x86_64 0:1.3.5-6.el7 を インストール
--> 依存性の処理をしています: libnetsnmpmibs.so.31()(64bit) のパッケージ: keepalived-1.3.5-6.el7.x86_64
--> 依存性の処理をしています: libnetsnmpagent.so.31()(64bit) のパッケージ: keepalived-1.3.5-6.el7.x86_64
--> 依存性の処理をしています: libnetsnmp.so.31()(64bit) のパッケージ: keepalived-1.3.5-6.el7.x86_64
---> パッケージ python2-barbicanclient.noarch 0:4.7.0-1.el7 を インストール
---> パッケージ python2-pyasn1-modules.noarch 0:0.1.9-7.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ libnetfilter_cthelper.x86_64 0:1.0.0-9.el7 を インストール
---> パッケージ libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7 を インストール
---> パッケージ libnetfilter_queue.x86_64 0:1.0.2-2.el7_2 を インストール
---> パッケージ net-snmp-agent-libs.x86_64 1:5.7.2-33.el7_5.2 を インストール
--> 依存性の処理をしています: libsensors.so.4()(64bit) のパッケージ: 1:net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_64
---> パッケージ net-snmp-libs.x86_64 1:5.7.2-33.el7_5.2 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                 アーキテクチャー
                                バージョン         リポジトリー            容量
================================================================================
インストール中:
 haproxy                 x86_64 1.5.18-7.el7       base                   834 k
 openstack-neutron-lbaas noarch 1:13.0.0-1.el7     centos-openstack-rocky  15 k
依存性関連でのインストールをします:
 conntrack-tools         x86_64 1.4.4-3.el7_3      base                   186 k
 dibbler-client          x86_64 1.0.1-0.RC1.2.el7  centos-openstack-rocky 409 k
 dnsmasq-utils           x86_64 2.76-5.el7         base                    30 k
 keepalived              x86_64 1.3.5-6.el7        base                   329 k
 libnetfilter_cthelper   x86_64 1.0.0-9.el7        base                    18 k
 libnetfilter_cttimeout  x86_64 1.0.0-6.el7        base                    18 k
 libnetfilter_queue      x86_64 1.0.2-2.el7_2      base                    23 k
 lm_sensors-libs         x86_64 3.4.0-4.20160601gitf9185e5.el7
                                                   base                    41 k
 net-snmp-agent-libs     x86_64 1:5.7.2-33.el7_5.2 updates                705 k
 net-snmp-libs           x86_64 1:5.7.2-33.el7_5.2 updates                749 k
 openstack-neutron       noarch 1:13.0.1-2.el7     centos-openstack-rocky  27 k
 python-neutron-lbaas    noarch 1:13.0.0-1.el7     centos-openstack-rocky 260 k
 python2-barbicanclient  noarch 4.7.0-1.el7        centos-openstack-rocky 119 k
 python2-pyasn1-modules  noarch 0.1.9-7.el7        base                    59 k

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

総ダウンロード容量: 3.7 M
インストール容量: 12 M
Downloading packages:
(1/16): dnsmasq-utils-2.76-5.el7.x86_64.rpm                |  30 kB   00:00     
(2/16): libnetfilter_cthelper-1.0.0-9.el7.x86_64.rpm       |  18 kB   00:00     
(3/16): libnetfilter_cttimeout-1.0.0-6.el7.x86_64.rpm      |  18 kB   00:00     
(4/16): keepalived-1.3.5-6.el7.x86_64.rpm                  | 329 kB   00:00     
(5/16): haproxy-1.5.18-7.el7.x86_64.rpm                    | 834 kB   00:00     
(6/16): lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86 |  41 kB   00:00     
(7/16): libnetfilter_queue-1.0.2-2.el7_2.x86_64.rpm        |  23 kB   00:00     
(8/16): conntrack-tools-1.4.4-3.el7_3.x86_64.rpm           | 186 kB   00:00     
(9/16): net-snmp-libs-5.7.2-33.el7_5.2.x86_64.rpm          | 749 kB   00:01     
(10/16): net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_64.rpm   | 705 kB   00:02     
(11/16): openstack-neutron-13.0.1-2.el7.noarch.rpm         |  27 kB   00:02     
(12/16): openstack-neutron-lbaas-13.0.0-1.el7.noarch.rpm   |  15 kB   00:01     
(13/16): python-neutron-lbaas-13.0.0-1.el7.noarch.rpm      | 260 kB   00:11     
(14/16): python2-pyasn1-modules-0.1.9-7.el7.noarch.rpm     |  59 kB   00:00     
(15/16): python2-barbicanclient-4.7.0-1.el7.noarch.rpm     | 119 kB   00:03     
(16/16): dibbler-client-1.0.1-0.RC1.2.el7.x86_64.rpm       | 409 kB   00:20     
--------------------------------------------------------------------------------
合計                                               189 kB/s | 3.7 MB  00:20     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : haproxy-1.5.18-7.el7.x86_64                    1/16 
  インストール中          : 1:net-snmp-libs-5.7.2-33.el7_5.2.x86_64        2/16 
  インストール中          : libnetfilter_cttimeout-1.0.0-6.el7.x86_64      3/16 
  インストール中          : libnetfilter_cthelper-1.0.0-9.el7.x86_64       4/16 
  インストール中          : dnsmasq-utils-2.76-5.el7.x86_64                5/16 
  インストール中          : libnetfilter_queue-1.0.2-2.el7_2.x86_64        6/16 
  インストール中          : conntrack-tools-1.4.4-3.el7_3.x86_64           7/16 
  インストール中          : dibbler-client-1.0.1-0.RC1.2.el7.x86_64        8/16 
  インストール中          : lm_sensors-libs-3.4.0-4.20160601gitf9185e5.    9/16 
  インストール中          : 1:net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_   10/16 
  インストール中          : keepalived-1.3.5-6.el7.x86_64                 11/16 
  インストール中          : 1:openstack-neutron-13.0.1-2.el7.noarch       12/16 
  インストール中          : python2-barbicanclient-4.7.0-1.el7.noarch     13/16 
  インストール中          : python2-pyasn1-modules-0.1.9-7.el7.noarch     14/16 
  インストール中          : 1:python-neutron-lbaas-13.0.0-1.el7.noarch    15/16 
  インストール中          : 1:openstack-neutron-lbaas-13.0.0-1.el7.noar   16/16 
  検証中                  : python2-pyasn1-modules-0.1.9-7.el7.noarch      1/16 
  検証中                  : 1:net-snmp-libs-5.7.2-33.el7_5.2.x86_64        2/16 
  検証中                  : python2-barbicanclient-4.7.0-1.el7.noarch      3/16 
  検証中                  : lm_sensors-libs-3.4.0-4.20160601gitf9185e5.    4/16 
  検証中                  : 1:openstack-neutron-13.0.1-2.el7.noarch        5/16 
  検証中                  : dibbler-client-1.0.1-0.RC1.2.el7.x86_64        6/16 
  検証中                  : libnetfilter_queue-1.0.2-2.el7_2.x86_64        7/16 
  検証中                  : dnsmasq-utils-2.76-5.el7.x86_64                8/16 
  検証中                  : 1:openstack-neutron-lbaas-13.0.0-1.el7.noar    9/16 
  検証中                  : haproxy-1.5.18-7.el7.x86_64                   10/16 
  検証中                  : keepalived-1.3.5-6.el7.x86_64                 11/16 
  検証中                  : libnetfilter_cthelper-1.0.0-9.el7.x86_64      12/16 
  検証中                  : 1:net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_   13/16 
  検証中                  : libnetfilter_cttimeout-1.0.0-6.el7.x86_64     14/16 
  検証中                  : conntrack-tools-1.4.4-3.el7_3.x86_64          15/16 
  検証中                  : 1:python-neutron-lbaas-13.0.0-1.el7.noarch    16/16 

インストール:
  haproxy.x86_64 0:1.5.18-7.el7  openstack-neutron-lbaas.noarch 1:13.0.0-1.el7 

依存性関連をインストールしました:
  conntrack-tools.x86_64 0:1.4.4-3.el7_3                                        
  dibbler-client.x86_64 0:1.0.1-0.RC1.2.el7                                     
  dnsmasq-utils.x86_64 0:2.76-5.el7                                             
  keepalived.x86_64 0:1.3.5-6.el7                                               
  libnetfilter_cthelper.x86_64 0:1.0.0-9.el7                                    
  libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7                                   
  libnetfilter_queue.x86_64 0:1.0.2-2.el7_2                                     
  lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7                       
  net-snmp-agent-libs.x86_64 1:5.7.2-33.el7_5.2                                 
  net-snmp-libs.x86_64 1:5.7.2-33.el7_5.2                                       
  openstack-neutron.noarch 1:13.0.1-2.el7                                       
  python-neutron-lbaas.noarch 1:13.0.0-1.el7                                    
  python2-barbicanclient.noarch 0:4.7.0-1.el7                                   
  python2-pyasn1-modules.noarch 0:0.1.9-7.el7                                   

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

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

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

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

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

#service_plugins =
↓(変更)
service_plugins = router,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2

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

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

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

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

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

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

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

[DEFAULT]
#interface_driver = <None>
device_driver = neutron_lbaas.drivers.haproxy.namespace_driver.HaproxyNSDriver
interface_driver = linuxbridge

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

#user_group = nogroup
user_group = haproxy

インストールの最終作業

Neutron LBaaS v2 サービスの自動起動を有効化する。

■ 自動起動の有効化
[root@compute1 ~]# systemctl enable neutron-lbaasv2-agent 
Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-lbaasv2-agent.service to /usr/lib/systemd/system/neutron-lbaasv2-agent.service.
[root@compute1 ~]# 

■ 自動起動の状態確認
[root@compute1 ~]# systemctl is-enabled neutron-lbaasv2-agent 
enabled
[root@compute1 ~]# 

Neutron LBaaS v2 サービスを再起動する。

■ 再起動
[root@compute1 ~]# systemctl restart neutron-lbaasv2-agent 
[root@compute1 ~]# 

■ 起動状態の確認
[root@compute1 ~]# systemctl status neutron-lbaasv2-agent 
● neutron-lbaasv2-agent.service - OpenStack Neutron Load Balancing as a Service (API v2.x) Agent
   Loaded: loaded (/usr/lib/systemd/system/neutron-lbaasv2-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2018-11-03 23:27:38 JST; 5s ago
 Main PID: 2191 (neutron-lbaasv2)
    Tasks: 1
   CGroup: /system.slice/neutron-lbaasv2-agent.service
           └─2191 /usr/bin/python2 /usr/bin/neutron-lbaasv2-agent --config-fi...

11月 03 23:27:38 compute1 systemd[1]: Started OpenStack Neutron Load Balan...t.
11月 03 23:27:38 compute1 systemd[1]: Starting OpenStack Neutron Load Bala.....
Hint: Some lines were ellipsized, use -l to show in full.
[root@compute1 ~]#