Zabbix 6.0 LTS HA構成構築手順

はじめに

Zabbix 6.0では新たにHA機能(以下 Zabbix HA)が組み込まれました。
https://www.zabbix.com/documentation/current/en/manual/concepts/server/ha

実際にZabbixサーバを構築する際、Zabbix HAをどのように設定すればよいのか、挙動はどうなるのか検証してみました。
今回は複数サーバに分かれたシステム構成にしています。以降のドキュメントでは、各コンポーネント単位に構築ができるように章立てを分割しました。
章の見出しの末尾に、どのサーバを対象とした作業なのかホスト名を付与しています。作業する際はご注意ください。

前提条件

以下の前提条件で検証しています。

  • ハードウェア: VirtualBox上の仮想マシン
  • OS: CentOS Stream 8
  • ミドルウェア(Zabbix):
    • Apache: 2.4.37 (OS同梱版)
    • PHP-FPM: 7.2.24 (OS同梱版)
    • MySQL: 8.0.26 (OS同梱版)
    • Zabbix Server: 6.0.2
    • Zabbix Agent 2: 6.0.2
  • 構築対象サーバはインターネットと疎通が取れること
  • 各手順はroot権限を持つユーザで実施

OSは、CentOS StreamインストールDVDのISOファイルから「最小限のインストール」を選択しインストールを行いました。
バージョン情報は以下の通りです。

# cat /etc/centos-release 
CentOS Stream release 8
# uname -r
4.18.0-365.el8.x86_64

設計方針

システム構成

サーバは以下3台を用意します。

ホスト名 役割 説明
zbx01   Zabbixサーバ(Active機) Zabbix Webフロントエンド(Apache / PHP-FPM)による監視画面、Zabbix Serverによる監視機能を提供する。
zbx02   Zabbixサーバ(Stanby機) Zabbix Webフロントエンド(Apache / PHP-FPM)による監視画面、Zabbix Serverによる監視機能を提供する。
db01   DBサーバ Zabbixの監視設定、監視データを保存する。

システム構成図は以下の通りです。

論理ネットワーク構成

全てのサーバは192.168.56.0/24のネットワークに所属します。
各サーバに割り当てるIPアドレスは以下の通りです。VIP(仮想IPアドレス)は、クライアント端末からZabbix Webフロントエンドにアクセスするときの入り口となるIPアドレスです。zbx01 / zbx02で共有し、Active状態のノードに割り当てられます。

ホスト名 IPアドレス
VIP 192.168.56.150
zbx01 192.168.56.151
zbx02 192.168.56.152
db01 192.168.56.153

今回の検証で使用するサーバのNICの名称は全てenp0s8となります。

冗長化方式

Zabbix Webフロントエンド

Zabbix Webフロントエンドの冗長化にはKeepalivedを使用します。VRRPプロトコルを使用し、ノード状態がMasterのActive機でVIPを保持します。Keepalivedのプロセストラッキング機能でhttpdphp-fpmのプロセスを監視します。
正常状態のイメージは通りです。

いずれかのプロセスがダウンしたりノード自体がダウンした場合、Active機のVRRPプライオリティ値を低下させることでStandby機をActive機に昇格させます。
異常状態のイメージは以下の通りです。

Zabbix Server

Zabbix Serverの冗長化にはZabbix HAを使用します。Active/Standby両ノードが5秒おきにDBへアクセス時刻を書き込みます。Active機のみ、監視データの収集や保存、通知を行うZabbix Serverの関連プロセスが起動します。Standby機では、HA Managerおよび親プロセスのZabbix Serverのみ起動します。
正常状態のイメージは以下の通りです。

HA Managerプロセスがダウンしたりノード自体がダウンした場合、Active機からのアクセス時刻書き込みが60秒(デフォルト値)以上経過したタイミングでStandby機がActive機に昇格します。
異常状態のイメージは以下の通りです。

データベース

今回はZabbix Webフロントエンド、Zabbix Serverの冗長化を行うことが目的のため、データベースの冗長化は行いません。データベースを冗長化する場合は、別途Pacemakerなどのクラスタリングソフトを導入してください。

MySQL【db01】

パッケージインストール

MySQLをインストールします。

# dnf install -y  mysql-server

サービス起動設定

DBの設定を行うため、MySQLの自動起動設定とサービスの起動を行います。

# systemctl enable --now mysqld.service
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.

初期設定

MySQLの初期設定を行います。
なお、MySQL 8.0ではパスワードポリシーの指定があります。Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:の箇所で、以下のポリシーを選択できます。

  • 0: 8文字以上
  • 1: 8文字以上、英数大文字、小文字、記号を全て含む
  • 2: 8文字以上、英数大文字、小文字、記号、辞書ファイルの指定文字列を全て含む

設定例中のDBユーザrootのパスワードは、パスワードポリシーを0(LOW)、パスワード文字列にrootpassを指定します。

# mysql_secure_installation
(略)
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y ←yを入力
(略)
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 ←0を入力
(略)
New password: ←DBユーザrootのパスワードを入力

Re-enter new password: ←再度DBユーザrootのパスワードを入力
(略)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y ←yを入力
Success.

All done! 

データベース作成

Zabbix用のデータベースとDBユーザを作成します。
設定例中の<パスワード>の箇所はZabbix Serverの設定ファイルに合わせて、DBユーザzabbixのパスワード文字列としてzabbixpassを指定します。
CREATE USERおよびGRANTで指定するDBユーザは、外部から接続できるように@の後ろは接続を許可するIPアドレスを指定します。%はワイルドカードを示しており、以下の例ではHAクラスタノードが属するネットワークからの接続を許可しています。

# mysql -u root -p
Enter password:  ←DBユーザrootのパスワードを入力
(略)
mysql> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER zabbix@'192.168.56.%' IDENTIFIED BY '<パスワード>';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL ON zabbix.* TO zabbix@'192.168.56.%';
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye

ファイアウォール設定

ファイアウォール設定を変更し、外部からのDB接続を許可します。

# firewall-cmd --add-service=mysql --zone=public --permanent
success
# firewall-cmd --reload
success

Zabbix Server【zbx01】【zbx02】

パッケージインストール

Zabbixのリリース状況によっては、新しいバージョンのパッケージが公開される可能性があります。以下の公式リポジトリで、zabbix-release-6.0-x.el8.noarch.rpmのバージョンを確認して、新しいバージョンが公開されている場合は、インストール対象パッケージのURLを適宜変更してください。
https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/

Zabbix 6.0の公式リポジトリをインストールします。

# dnf install -y https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm

Zabbix Serverの関連パッケージをインストールします。
今回はDBサーバを分離するので、mysql-serverはインストルーせずDBクライアントツールが含まれるmysqlを一緒にインストールします。

# dnf install -y zabbix-server-mysql zabbix-selinux-policy zabbix-sql-scripts mysql

設定ファイル変更

viなどのテキストエディタで、Zabbix Serverの設定ファイルを開きます。

# vi /etc/zabbix/zabbix_server.conf

設定変更内容は以下の通りです。DBサーバへの接続情報とHAクラスタ情報を設定します。

### DB関連の設定 ###
# DBホスト
# DBサーバのIPアドレスを指定する

# DBHost=localhost
↓
DBHost=192.168.56.153

# DBパスワード
# 項目のコメントアウトを外し、クオートやスペースを含めずに指定する
# 今回は、パスワード設定例としてzabbixpassを指定

# DBPassword=
↓
DBPassword=zabbixpass

### HAクラスタ関連の設定 ###
# ノード名
# HAクラスタ上の自ノード名を指定する(以下はActive機の例)

# HANodeName=
↓
HANodeName=zbx01

# ノードIPアドレス
# HAクラスタ上の自ノードIPアドレス・ポート番号を指定する(以下はActive機の例)
# HAクラスタ内のWebフロントエンドがノードに接続する際に参照される

# NodeAddress=localhost:10051
↓
NodeAddress=192.168.56.151:10051

DBスキーマと初期データの登録(Active機のみ実施)

Zabbix Serverインストール時に作成されたSQLファイルを使用して、DBサーバに対してZabbix用のDBスキーマと初期データをデータベースの登録を行います。サーバのスペックによっては、この処理は数十秒〜数分かかります。
この作業は一度だけ実施すればよいので、今回はActive機から実行します。

# zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h192.168.56.153 -uzabbix -p zabbix
Enter password:  ←DBユーザzabbixのパスワードを入力

SELinux設定

SELinuxが有効な場合、Zabbixに関するセキュリティポリシーを設定します。
まずは、Zabbixインストール時自動的に追加されるブール値の状態を確認します。

# getsebool -a | grep zabbix
zabbix_can_network --> off
zabbix_run_sudo --> off

最低限の通信が行えるよう、zabbix_can_networkを有効化します。

# setsebool -P zabbix_can_network on

zabbix_run_sudoは、Zabbix Serverでsudoコマンドの発行要件がある場合に有効化します。

ファイアウォール設定

Firewalldを使用する場合、外部からの通信を許可します。許可対象の通信は以下の通りです。

  • 10051/tcp : Zabbix Agent → Serverのアクティブ監視通信
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
success
# firewall-cmd --reload
success

Zabbix WebUIのSSL化(https)や、SNMP Trapの受信(162/udp)など、Zabbixサーバに対する上記以外のインバウンド通信要件がある場合は、適宜Firewalldの設定を追加してください。

サービス起動設定

Zabbix Serverサービスの自動起動設定とサービスの起動を行います。

# systemctl enable --now zabbix-server.service
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.

Zabbix Webフロントエンド【zbx01】【zbx02】

パッケージインストール

Zabbix Webフロントエンドの関連パッケージをインストールします。

# dnf install -y zabbix-web-mysql zabbix-web-japanese zabbix-apache-conf

設定ファイル作成

通常、Zabbix Webフロントエンドはブラウザ上のWebUIから初期設定を行い、設定ファイルを生成します。
今回は複数台の設定を行うので、効率性を重視して直接設定ファイルを作成します。
viなどのテキストエディタで、Zabbix Webフロントエンドの設定ファイルを開きます。

# vi /etc/zabbix/web/zabbix.conf.php

設定内容は以下の通りです。WebUIから初期設定した場合に生成される内容から最低限出力されるパラメータを抜粋しています。
$DB['SERVER']にはDBサーバのIPアドレスを指定します。$DB['PASSWORD']には、DBユーザzabbixのパスワードを指定します。

<?php
# 接続先DB設定
$DB['TYPE']                             = 'MYSQL';
$DB['SERVER']                   = '192.168.56.153';
$DB['PORT']                             = '0';
$DB['DATABASE']                 = 'zabbix';
$DB['USER']                             = 'zabbix';
$DB['PASSWORD']                 = 'zabbixpass';

# DBスキーマ設定
$DB['SCHEMA']                   = '';

# DB TLS接続設定
$DB['ENCRYPTION']               = false;
$DB['KEY_FILE']                 = '';
$DB['CERT_FILE']                = '';
$DB['CA_FILE']                  = '';
$DB['VERIFY_HOST']              = false;
$DB['CIPHER_LIST']              = '';

# DB Vault設定
$DB['VAULT_URL']                = '';
$DB['VAULT_DB_PATH']    = '';
$DB['VAULT_TOKEN']              = '';

# 64bit数値で保存しているヒストリーデータのIEEE754互換有無
$DB['DOUBLE_IEEE754']   = true;

# Webフロントエンドの接続先Zabbix Server名
$ZBX_SERVER_NAME                = '';

# デフォルトの画像フォーマット
$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;

SELinux設定

SELinuxが有効な場合、Zabbix Webフロントエンドに関するセキュリティポリシーを設定します。
まずは、Zabbixインストール時自動的に追加されるブール値の状態を確認します。

# getsebool -a | grep httpd
httpd_can_connect_zabbix --> off
httpd_can_network_connect_db --> off

httpd_can_connect_zabbixhttpd_can_network_connect_dbを有効化します。

# setsebool -P httpd_can_connect_zabbix on
# setsebool -P httpd_can_network_connect_db on

ファイアウォール設定

Firewalldを使用する場合、外部からの通信を許可します。許可対象の通信は以下の通りです。

  • http : クライアント → Zabbix WebUIのHTTP通信
# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success

サービス起動設定

Zabbix Webフロントエンドに関連するサービスの自動起動設定とサービスの起動を行います。

# systemctl enable --now httpd.service php-fpm.service
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Zabbix Agent2【zbx01】【zbx02】

パッケージインストール

Zabbix Agent 2をインストールします。

# dnf install -y zabbix-agent2

設定ファイル変更

viなどのテキストエディタで、Zabbix Agent 2の設定ファイルを開きます。

# vi /etc/zabbix/zabbix_agent2.conf

設定変更内容は以下の通りです。HAクラスタ内の全てのノードと監視通信ができるように設定します。

# 監視通信を許可するサーバIPアドレス
# 自ノードのループバックアドレスおよび自ノード以外のHAクラスタノードのIPアドレスをカンマ区切りで指定する(以下はActive機の例)

Server=127.0.0.1,192.168.56.152

# アクティブチェック監視データの送信先サーバIPアドレス
# 自ノードのループバックアドレスおよび自ノード以外のHAクラスタノードのIPアドレスをセミコロン区切りで指定する(以下はActive機の例)

ServerActive=127.0.0.1;192.168.56.152

# 自ホスト名
# OS上のホスト名ではなく、Zabbix監視設定上のホスト名なので注意(以下はActive機の例)

Hostname=Zabbix server
↓
Hostname=zbx01

ファイアウォールの設定

Firewalldを使用する場合、外部からの通信を許可します。許可対象の通信は以下の通りです。

  • 10050/tcp : Zabbix Server → Zabbix Agentのパッシブ監視通信
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
success
# firewall-cmd --reload
success

サービス起動設定

Zabbix Agent2サービスの自動起動設定とサービスの起動を行います。

# systemctl enable --now zabbix-agent2.service
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.

Keepalived【zbx01】【zbx02】

パッケージインストール

Keepalivedをインストールします。

# dnf install -y  keepalived

設定ファイル変更

Keepalivedのインストール時に設定サンプルファイルが作成されるので別名でコピーして退避します。
その後、viなどのテキストエディタで、Keepalivedの設定ファイルを開きます。

# cp /etc/keepalived/keepalived.conf{,.bak}
# vi /etc/keepalived/keepalived.conf

設定変更内容は以下の通りです。Active機とStandby機で異なる箇所はコメント箇所を参照してください。

global_defs {}

# httpdサービス起動状態の監視
vrrp_track_process track_httpd {
  process httpd
  weight 10 # 正常状態の場合priorityを10増や
}

# php-fpmサービス起動状態の監視
vrrp_track_process track_php-fpm {
  process php-fpm
  weight 10 # 正常状態の場合priorityを10増や
}

# Zabbix Webフロントエンド用仮想ルータ
vrrp_instance VI_100 {
  interface enp0s8 # VIPを使用するNIC
  state MASTER # Active機はMASTER, Standby機はBACKUP
  virtual_router_id 100 # 他のHAクラスタと重複しないVRID(全台共通)
  priority 100 # Active機は100, Standby機は95
  virtual_ipaddress {
    192.168.56.150 # HAクラスタで使用するVIP(全台共通)
  }
  track_process {
    track_httpd
    track_php-fpm
  }
}

SELinux設定

SELinuxが有効な場合、Keepalivedに関するセキュリティポリシーを設定します。
まずは、Keepalivedインストール時自動的に追加されるブール値の状態を確認します。

# getsebool -a | grep keep
keepalived_connect_any --> off

keepalived_connect_anyを有効化します。

# setsebool -P keepalived_connect_any on

ファイアウォールの設定

Firewalldを使用する場合、VRRP通信をリッチルールで許可します。

# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
success
# firewall-cmd --reload
success

サービス起動設定

Keepalivedサービスの自動起動設定とサービスの起動を行います。

# systemctl enable --now keepalived.service
Created symlink /etc/systemd/system/multi-user.target.wants/keepalived.service → /usr/lib/systemd/system/keepalived.service.

運用

VRRP状態確認

VRRPの状態確認は、VIPがどちらのサーバに割り当てられているかで確認します。
以下はActive機の例です。実IPとVIPの両方が割り当てられています。

# ip a show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:18:47:cf brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.151/24 brd 192.168.56.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet 192.168.56.150/32 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe18:47cf/64 scope link 
       valid_lft forever preferred_lft forever

以下はStandby機の例です。実IPのみ割り当てられています。

# ip a show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:78:b1:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.152/24 brd 192.168.56.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe78:b191/64 scope link 
       valid_lft forever preferred_lft forever

Zabbix Webフロントエンドフェイルオーバ

Zabbix Webフロントエンドをフェイルオーバさせるには、Keepalivedが監視しているhttpdphp-fpmいずれかのプロセスを停止します。

# systemctl stop httpd.service

以下は、VRRPグループ内のMasterノードがBackupノードに降格する際のログです。

# tail /var/log/messages | grep "Keepalived"
Apr  8 00:50:28 zbx01 Keepalived_vrrp[1351]: Quorum lost for tracked process track_httpd
Apr  8 00:50:28 zbx01 Keepalived_vrrp[1351]: (VI_100) Changing effective priority from 120 to 110
Apr  8 00:50:31 zbx01 Keepalived_vrrp[1351]: (VI_100) Master received advert from 192.168.56.152 with higher priority 115, ours 110
Apr  8 00:50:31 zbx01 Keepalived_vrrp[1351]: (VI_100) Entering BACKUP STATE
Apr  8 00:50:31 zbx01 Keepalived_vrrp[1351]: (VI_100) removing VIPs.

フェイルオーバが発生すると、システムログにKeepalivedのログが出力されます。
以下は、BackupノードがMasterノードに昇格する際のログです。

# less /var/log/messages
Apr  8 00:50:29 zbx02 Keepalived_vrrp[1349]: (VI_100) received lower priority (110) advert from 192.168.56.151 - discarding
Apr  8 00:50:29 zbx02 Keepalived_vrrp[1349]: (VI_100) received lower priority (110) advert from 192.168.56.151 - discarding
Apr  8 00:50:29 zbx02 Keepalived_vrrp[1349]: (VI_100) received lower priority (110) advert from 192.168.56.151 - discarding
Apr  8 00:50:30 zbx02 Keepalived_vrrp[1349]: (VI_100) received lower priority (110) advert from 192.168.56.151 - discarding
Apr  8 00:50:30 zbx02 Keepalived_vrrp[1349]: (VI_100) received lower priority (110) advert from 192.168.56.151 - discarding
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: (VI_100) Receive advertisement timeout
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: (VI_100) Entering MASTER STATE
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: (VI_100) setting VIPs.
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: (VI_100) Sending/queueing gratuitous ARPs on enp0s8 for 192.168.56.150
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: Sending gratuitous ARP on enp0s8 for 192.168.56.150
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: Sending gratuitous ARP on enp0s8 for 192.168.56.150
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: Sending gratuitous ARP on enp0s8 for 192.168.56.150
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: Sending gratuitous ARP on enp0s8 for 192.168.56.150
Apr  8 00:50:31 zbx02 Keepalived_vrrp[1349]: Sending gratuitous ARP on enp0s8 for 192.168.56.150

Zabbix HAクラスター状態確認

HAクラスター

Active機でzabbix_server -R ha_statusを実行すると、HAクラスタ内の各ノードの状態が確認できます。

# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:
   #  ID                        Name                      Address                        Status      Last Access
   1. cl1j40cqn0001l4da11uc65qe zbx01                     192.168.56.151:10051           active      4s
   2. cl1j41ag50001lvdbmf1u4svl zbx02                     192.168.56.152:10051           standby     2s

プロセス一覧

Active機のZabbix Serverに関連するプロセスは以下の通りです。

zabbix       899       1  0  4月07 ?      00:00:02 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix      1728     899  0  4月07 ?      00:00:05 /usr/sbin/zabbix_server: ha manager
zabbix      3663     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: service manager #1 [processed 0 events, updated 0 event tags, deleted 0 problems, synced 0 service updates, idle 5.007607 sec during 5.008343 sec]
zabbix      3664     899  0  4月07 ?      00:00:06 /usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.170228 sec, idle 60 sec]
zabbix      3665     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.015324 sec during 5.015485 sec]
zabbix      3666     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: alerter #1 started
zabbix      3667     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: alerter #2 started
zabbix      3668     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: alerter #3 started
zabbix      3669     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: preprocessing manager #1 [queued 0, processed 7 values, idle 5.004322 sec during 5.004429 sec]
zabbix      3670     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: preprocessing worker #1 started
zabbix      3671     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: preprocessing worker #2 started
zabbix      3672     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: preprocessing worker #3 started
zabbix      3673     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: lld manager #1 [processed 0 LLD rules, idle 5.962630sec during 5.962764 sec]
zabbix      3674     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: lld worker #1 [processed 1 LLD rules, idle 60.057571 sec during 60.095281 sec]
zabbix      3675     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: lld worker #2 [processed 1 LLD rules, idle 60.056438 sec during 60.091874 sec]
zabbix      3676     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: housekeeper [deleted 0 hist/trends, 0 items/triggers, 0 events, 0 sessions, 0 alarms, 0 audit items, 0 records in 0.040938 sec, idle for 1 hour(s)]
zabbix      3677     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: timer #1 [updated 0 hosts, suppressed 0 events in 0.002127 sec, idle 59 sec]
zabbix      3678     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.001541 sec, idle 5 sec]
zabbix      3679     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.001164 sec, idle 60 sec]
zabbix      3680     899  0  4月07 ?      00:00:01 /usr/sbin/zabbix_server: history syncer #1 [processed 2 values, 1 triggers in 0.005191 sec, idle 1 sec]
zabbix      3681     899  0  4月07 ?      00:00:01 /usr/sbin/zabbix_server: history syncer #2 [processed 0 values, 0 triggers in 0.000035 sec, idle 1 sec]
zabbix      3682     899  0  4月07 ?      00:00:01 /usr/sbin/zabbix_server: history syncer #3 [processed 0 values, 0 triggers in 0.000083 sec, idle 1 sec]
zabbix      3683     899  0  4月07 ?      00:00:01 /usr/sbin/zabbix_server: history syncer #4 [processed 0 values, 0 triggers in 0.000015 sec, idle 1 sec]
zabbix      3684     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.002299 sec, idle 3 sec]
zabbix      3685     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000062 sec, idle 5 sec]
zabbix      3686     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000071 sec, idle 1 sec]
zabbix      3687     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000724 sec, idle 5 sec]
zabbix      3688     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000012 sec, idle 5 sec]
zabbix      3689     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000010 sec, idle 5 sec]
zabbix      3690     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000045 sec, idle 5 sec]
zabbix      3691     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000011 sec, idle 5 sec]
zabbix      3692     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000011 sec, idle 5 sec]
zabbix      3693     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000436 sec, idle 5 sec]
zabbix      3694     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix      3695     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.035354 sec, waiting for connection]
zabbix      3696     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix      3697     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix      3698     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix      3699     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000044 sec, idle 5 sec]
zabbix      3700     899  0  4月07 ?      00:00:01 /usr/sbin/zabbix_server: alert syncer [queued 0 alerts(s), flushed 0 result(s) in 0.003126 sec, idle 1 sec]
zabbix      3701     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: history poller #1 [got 0 values in 0.000008 sec, idle 1 sec]
zabbix      3702     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: history poller #2 [got 0 values in 0.000010 sec, idle 1 sec]
zabbix      3703     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: history poller #3 [got 2 values in 0.000124 sec, idle 1 sec]
zabbix      3704     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: history poller #4 [got 0 values in 0.000040 sec, idle 1 sec]
zabbix      3705     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: history poller #5 [got 0 values in 0.000008 sec, idle 1 sec]
zabbix      3706     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: availability manager #1 [queued 0, processed 0 values, idle 5.010340 sec during 5.010671 sec]
zabbix      3707     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: trigger housekeeper [deleted 0 problems records in 0.001341 sec, idle for 60 second(s)]
zabbix      3708     899  0  4月07 ?      00:00:00 /usr/sbin/zabbix_server: odbc poller #1 [got 0 values in 0.000038 sec, idle 5 sec]

Standby機のZabbix Serverに関連するプロセスは以下の通りです。

# ps -ef | grep "zabbix_server"
zabbix      2154       1  0 01:22 ?        00:00:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix      2156    2154  0 01:22 ?        00:00:00 /usr/sbin/zabbix_server: ha manager

WebUI

VIPのIPアドレスを使用して、Webブラウザでhttp://192.168.56.150/zabbixを開きます。
WebUIのダッシュボードからは、「レポート」→「システム情報」→「HAクラスター」の項目から状態を確認できます。

初期状態では、監視設定上にZabbixサーバ用のホストが作成されます。標準テンプレートのZabbix server healthが設定されるので、HAクラスタの参加状態が確認できます。

Zabbix Serverフェイルオーバ

Zabbix Serverをフェイルオーバさせるには、Active機のzabbix-serverサービスを停止します。

# systemctl stop zabbix-server.service

zabbix-serverサービス停止後60秒待ち、フェイルオーバが発生すると昇格したActive機に以下のログが出力されます。

  899:20220407:234545.336 "zbx02" node switched to "active" mode

WebUI上では以下のトリガーが出力されます。

なお、自動フェイルバックは行えないので、切り戻しする場合はフェイルオーバ後のActive機で再度同様の手順を行う必要があります。

参考情報

1 High availability cluster
Zabbixサーバーの HAクラスタ構成
8.5 Keepalivedのインストールと構成

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です