Zabbix 6.0 LTS HA構成構築手順
Contents
はじめに
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のプロセストラッキング機能でhttpd
とphp-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_zabbix
、httpd_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が監視しているhttpd
、php-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のインストールと構成