はじめに
前回まででZabbixサーバとしての機能の大半を構築しました。構成図で言うZabbixサービスのVIPを付与するために、Keepalivedを利用します。Pacemakerでも実装可能ですが、KeepalivedはPacemakerと比べて簡単に実装できるメリットがあります。ではDBはなんでPacemakerで冗長したのか?という疑問が出てきますが、Pacemakerで冗長するとレプリケーションがちゃんとできているかという情報まで取得できます。Keepalivedはあくまでも互いの疎通確認で死活を見るので、実際にZabbixサーバが主系かどうかまではKeepalivedでは見えていないです。
少し補足が長くなりましたが、実装していこうかと思います。
構成図

ホスト名:zabbix-ap01
IP:172.16.1.101
構成:AlmaLinux 9、Zabbix6.0
ホスト名:zabbix-ap02
IP:172.16.1.102
構成:AlmaLinux 9、Zabbix6.0
ホスト名:zabbix-db01
IP:172.16.1.104
構成:AlmaLinux 9、PostgreSQL 13
ホスト名:zabbix-db02
IP:172.16.1.105
構成:AlmaLinux 9、PostgreSQL 13
インストール
dnfコマンドでインストールできます。
# dnf install -y keepalived
設定
/etc/keepalived/keepalived.conf を編集します。
なお、confはzabbix-ap01、02で書く内容が変わることに注意してください。
! Configuration File for keepalived
global_defs {}
vrrp_track_process track_httpd {
process httpd
weight 10
}
vrrp_track_process track_php-fpm {
process php-fpm
weight 10
}
vrrp_track_process track_zabbix {
process /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
full_command
weight 10
}
vrrp_instance VI_100 {
interface ens192
state BACKUP
virtual_router_id 100
priority 100
virtual_ipaddress {
172.16.1.100
}
track_process {
track_httpd
track_php-fpm
track_zabbix
}
unicast_peer {
172.16.1.102
}
}
補足
おおよそパラメータを見れば意味が分かりそうですが、補足しておきます。
vrrp_track_process
Keepalivedで監視するプロセスを指定します。上記の例ではhttpd、php-fpm、zabbix-serverのプロセスを監視するための設定が記載されています。
vrrp_instance
VIPの設定を記載します。「state BACKUP」とすることで、先に起動した方を主系にすることができます。MASTERとした場合、起動順に関係なくVIPを遷移させることができます。
「virtual_ipaddress」でVIPのIPを指定し、「unicast_peer」で対向のIPを指定します。上記は172.16.1.102としているので、これはzabbix-ap01用の設定です。
ちなみに、「unicast_peer」がないと、マルチキャストを送信することで対向と疎通しようとするので、余計なトラフィックを抑えるために設定することをお勧めします。
構築については、以上となります。お疲れ様でした。
起動・停止については別途まとめることにします。
