Sensor Gateway が停止すると、センサーは Carbon Black Cloud と通信できません。高可用性 (HA) を実現するには、Carbon Black は、アクティブ モードまたはパッシブ モードで少なくとも 2 台の Sensor Gateway サーバを設定することをお勧めします。その結果、1 つの Sensor Gateway が停止した場合でも、もう一方が要求に対応できます。

クラウド内の Sensor Gateway サーバの健全性を表示できますが、Carbon Black では、使用可能なツールを使用して社内の Sensor Gateway の健全性を監視することをお勧めします。これにより、Sensor Gateway サーバが健全な状態を維持し、アクティブとパッシブ両方の Sensor Gateway サーバが停止する状況を回避します。

Sensor Gateway をアクティブ モードまたはパッシブ モードで設定するには、次の手順を実行します。

注: Keepalived 設定を構成する場合は、次の点を考慮してください。
  • プライマリ サーバの優先順位の値が高くなっています。状態は関係ありません。状態が MASTER でも、優先順位が BACKUP 状態のルーターよりも低い場合、サーバは MASTER 状態を失います。
  • Virtual_router_id は、Sensor Gateway サーバ 1 と Sensor Gateway サーバ 2 で同じである必要があります。
  • デフォルトでは、1 つの vrrp_instance で最大 20 個の virtual_ipaddress をサポートします。アドレスを追加するには、インスタンスを追加する必要があります。

前提条件

ネットワークが設定されていることを確認します。以下のネットワーク シナリオの IP アドレスは、説明のためのものです。仮想 IP アドレスは最も重要です。この IP アドレスは、センサーの構成中に使用します。IP アドレスを DNS sensor-gateway.somecompany.com にマッピングし、センサーの構成中に FQDN を使用することもできます。
表 1. ネットワーク シナリオ
Sensor Gateway サーバ 1 192.168.10.111 (eth0)
Sensor Gateway サーバ 2 192.168.10.112 (eth0)
仮想 IP アドレス 192.168.10.121

手順

  1. 次のコマンドを実行して、各 Sensor Gateway サーバに Keepalived を構成するために必要なパッケージをインストールします。
    sudo apt-get update
    sudo apt-get install linux-headers-$(uname -r)
  2. 次のコマンドを実行して、両方の Sensor Gateway サーバに Keepalived をインストールします。
    sudo apt-get install keepalived

    Keepalived パッケージは、デフォルトの apt リポジトリで使用できます。

  3. Sensor Gateway サーバ 1 で Keepalived を設定します。
    1. Keepalived 構成ファイル /etc/keepalved/keepalved.conf をエディタで作成または開きます。
      vim /etc/keepalived/keepalived.conf
    2. 次の設定を追加します。ネットワークおよびシステム構成で、赤で強調表示されているすべての値を更新します。
      ! Configuration File for keepalived
      
      global_defs {
         notification_email {
           sysadmin@mydomain.com
           support@mydomain.com
         }
         notification_email_from sensor-gateway-1@mydomain.com
         smtp_server localhost
         smtp_connect_timeout 30
      }
      vrrp_script chk_sgw_service_status {
          script "/bin/sh /usr/local/bin/sgw-service-check.sh"
          interval 30
          fall 3
          rise 3
          timeout 2
          weight 5
      }
      vrrp_instance VI_1 {
          state MASTER
          interface eth0
          virtual_router_id 101
          priority 101
          advert_int 1
          authentication {
              auth_type PASS
              auth_pass 1111
          }
          virtual_ipaddress {
              192.168.10.121
          }
          track_script {
              chk_sgw_service_status
          }
      }
  4. Sensor Gateway サーバ 2 で Keepalived を設定します。
    1. Keepalived 構成ファイル /etc/keepalved/keepalved.conf をエディタで作成または開きます。
      vim /etc/keepalived/keepalived.conf
    2. 次の設定を追加します。ネットワークおよびシステム構成で、赤で強調表示されているすべての値を更新します。
      注: Sensor Gateway サーバ 1 の優先順位よりも低い値を設定します。たとえば、次の構成は、優先順位の値が 100 であることを示し、 Sensor Gateway サーバ 1 の優先順位は 101 です。
      ! Configuration File for keepalived
      
      global_defs {
         notification_email {
           sysadmin@mydomain.com
           support@mydomain.com
         }
         notification_email_from sensor-gateway2@mydomain.com
         smtp_server localhost
         smtp_connect_timeout 30
      }
      vrrp_script chk_sgw_service_status {
          script "/bin/sh /usr/local/bin/sgw-service-check.sh"
          interval 30
          fall 3
          rise 3
          timeout 2
          weight 5
      }
      
      vrrp_instance VI_1 {
          state BACKUP
          interface eth0
          virtual_router_id 101
          priority 100
          advert_int 1
          authentication {
              auth_type PASS
              auth_pass 1111
          }
          virtual_ipaddress {
              192.168.10.121
          }
          track_script {
              chk_sgw_service_status
          }
      
      }
  5. 両方の Sensor Gateway サーバで /usr/local/bin/sgw-service-check.sh を作成および編集します。
    #!/bin/sh 
    curl - s - k https://localhost/sgw/health_check >  /tmp/health_response.json
    RESPONSE = `jq '.ErrorCode' /tmp/health_response.json ` 
    if [$RESPONSE ='null']
    then 
      exit 0 
    else 
      exit 1 
    fi 
    
  6. Keepalived サービスを起動し、システム起動時に自動的に起動するように構成します。
    sudo service keepalived start
  7. インターフェイスで割り当てられた仮想 IP アドレスを確認します。
    ip addr show eth0

    デフォルトでは、仮想 IP アドレスがプライマリ サーバに割り当てられます。プライマリ サーバが停止すると、仮想 IP アドレスがセカンダリ サーバに自動的に割り当てられます。

    出力例:
    2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:b9:b0:de brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.111/24 brd 192.168.1.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet 192.168.10.121/32 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::11ab:eb3b:dbce:a119/64 scope link
           valid_lft forever preferred_lft forever
  8. IP フェイルオーバーを確認します。
    1. プライマリ サーバ(Sensor Gateway サーバ 1)をシャットダウンし、IP アドレスがセカンダリ サーバに自動的に割り当てられるかどうかを確認します。
      ip addr show eth0
    2. Sensor Gateway サーバ 1 を起動し、Sensor Gateway サーバ 2 を停止します。
      ip addr show eth0
      IP アドレスは自動的にプライマリ サーバに割り当てられます。
    3. ログ ファイルを確認して、IP フェイルオーバーの検証が機能していることを確認します。
      tail -f /var/log/syslog
      出力例:
      Feb  7 17:24:51 tecadmin Keepalived_healthcheckers[23177]: Registering Kernel netlink reflector
      Feb  7 17:24:51 tecadmin Keepalived_healthcheckers[23177]: Registering Kernel netlink command channel
      Feb  7 17:24:51 tecadmin Keepalived_healthcheckers[23177]: Opening file '/etc/keepalived/keepalived.conf'.
      Feb  7 17:24:51 tecadmin Keepalived_healthcheckers[23177]: Configuration is using : 11104 Bytes
      Feb  7 17:24:51 tecadmin Keepalived_healthcheckers[23177]: Using LinkWatch kernel netlink reflector...
      Feb  7 17:24:52 tecadmin Keepalived_vrrp[23178]: VRRP_Instance(VI_1) Transition to MASTER STATE
      Feb  7 17:24:53 tecadmin Keepalived_vrrp[23178]: VRRP_Instance(VI_1) Entering MASTER STATE
      Feb  7 17:24:53 tecadmin avahi-daemon[562]: Registering new address record for 192.168.10.121 on eth0.IPv4.
      
      Appliance storage space is fully occupied by logs from /var/log/auth.log