Zabbix 6.0の概要紹介を不定期に連載しております。
前回の記事はこちらです。
今回はZabbix 6.0のインストールを弊社の検証用サーバを用いて行ってみることにします。
インストールのついでに、Zabbix 6.0の新機能である、Zabbix内蔵のHAクラスタ構成機能も試してみます。
HAとはHigh Availabilityという熟語の頭文字を取ったもので、日本語では「高可用性」と訳されます。
可用性とはあるシステムが継続して稼働できる能力の事を指します。システムが無停止で安定稼働している時間が長ければ長いほど、そのシステムは可用性が高い(=高可用性)ということになります。
HAクラスタはシステムの可用性を高める技術の一種です。ZabbixにおけるHAクラスタとは、複数台のZabbixサーバを相互接続し、システムの冗長化を図る技術を指します。障害などである1台のZabbixサーバが完全に沈黙してしまったとしても、他に生き残っているZabbixサーバが引き続き監視を行うことで、システム全体としては無停止で稼働し続けている状態を保つことが出来ます。
Zabbixの監視設定や取得してきた監視データはZabbix DBというデータベース上に格納されます。
今回は2台のZabbixサーバが1つのDBを共有する構成をとるためDB部分は別サーバに分離して構築しています。
dnf install mysql-server
インストールされるバージョンに注意
Zabbix6.0ではサポートするデータベースソフトのバージョン指定が厳しくなっています。
OSの標準リポジトリで公開されているソフトのバージョンはZabbixのサポート範囲外の場合があります。サポート外の場合は各データベースソフトの開発元が提供するリポジトリからのダウンロードを行いましょう。
詳しくは第1回の記事をご参照下さい。
#以下を追記して保存(既存行は残す)
innodb_file_per_table
character_set_server=UTF8MB4
collation_server=utf8mb4_bin
skip-character-set-client-handshake
performance_schema=0
systemctl enable --now mysqld.service
mysql_secure_installation
以下、質問に沿って回答
Would you like to setup VALIDATE PASSWORD component? <= MySQLユーザのパスワードポリシーを設けるか(8文字以上のパスワードを強制するなど。利用するかは任意)
New password: <= (MySQL上の)rootユーザのパスワードを入力
Re-enter new password: <= 同上
Remove anonymous users? <= anonymous ユーザを削除するか。不要なのでYes。
Disallow root login remotely? <= 自サーバ外からのrootログインを許可するか。通常はNo。
Remove test database and access to it? <= "test"データベースを削除するか。不要なのでYes。
Reload privilege tables now? <= 上記権限の変更を今すぐ反映するか。通常はYes。
mysql -uroot -p
Enter password: <= 先程設定したrootパスワードを入力
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@'10.34.0.0/255.255.255.0' IDENTIFIED BY 'zabbixdb'; <= ZabbixDBへのアクセスを許可するソースIP(=ZabbixサーバがいるIPレンジ)を指定 環境に合わせて変更してください IDENTIFIED BY句に続くパスワード(zabbixdb)も必要に応じて変更してください
GRANT all privileges ON zabbix.* TO zabbix@'10.34.0.0/255.255.255.0';
exit
今回はZabbixサーバを2台構築しますが、特に注意書きが無い限り2台のサーバでは同一のコマンドを実行します。
クラウドサービスや仮想環境上で構築する場合は1台目のサーバを途中まで構築しておいて、2台目は1台目をクローンする形で作るのがスマートかもしれません。
dnf install https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
下記を実行すると依存関係でhttpdが一緒にインストールされますが、ZabbixではWebサーバとしてNginxを利用することも可能です。
Nginxを使う場合はzabbix-apache-confの代わりにzabbix-nginx-confをインストールしてください。
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy mysql
dnf install zabbix-agent2
下記は Zabbixサーバの どちらか1台だけで実行してください。
コマンドはZabbixサーバで実行しますが、スキーマはDBサーバ上のDBに作成されます。
(mysqlコマンドの-hオプションでスキーマを流し込む先のサーバを指定しています。)
cd /usr/share/doc/zabbix-sql-scripts/mysql
zcat server.sql.gz | mysql -uzabbix -p zabbix -h
Enter password: <= "zabbix"ユーザのパスワードを入力
# 以下の記述を探し必要な個所を変更
DBHost=
DBName=zabbix
DBUser=zabbix
DBPassword=
HANodeName=
NodeAddress=:10051
Server=,
ServerActive=; <= 通常サーバ同士はコロンで区切りますが、HAクラスタを組んでいる場合はセミコロンで区切ります。
Hostname=<自分自身のホスト名> <= OS設定上のHostnameとは異なる名前を定義可能ですが、ZabbixのWebUI上でホスト登録を行う際、ここで記述したHostnameと同じ名前で登録を行う必要があります。
zabbix-serverサービス起動後は/var/log/zabbix/zabbix_server.logを参照し、起動エラーが出力されていないのを確認した後に後続のサービスを起動することを推奨します。
systemctl enable --now zabbix-server
systemctl enable --now zabbix-agent2
systemctl enable --now httpd
systemctl enable --now php-fpm
systemctl stop zabbix-server
記事の冒頭で、2台のZabbixサーバが1つのDBを共有する、と述べました。
勘の良い方はお気づきの事と思いますが、この構成ではDBサーバがSPOF(単一障害点)になってしまっています。
商用目的でクラスタ構成のZabbixサーバを構築する場合は、別途DBの冗長化についても併せてご検討頂くか、あるいはクラウド上のマネージドデータベースのような、初めから冗長構成としてサービス提供されているデータベースをご利用頂くのも良いかもしれません。
また上記に関連するところではありますが、ZabbixのHAクラスタには各Zabbixサーバのローカルディスク同士を同期させる機能はありません。ACT-ACT構成にしたい、DBサーバを別建てしたくないなどの希望がある場合は従来のPacemaker+Corosyncなどのサードパーティ製品を使った冗長化が選択肢となります。
今回構築したZabbixサーバを使って、Zabbix6.0の新機能を引き続きご紹介する予定です。
内容は目下検討中です。。。
リンクアット・ジャパンは2014年よりZabbix認定パートナーとして、様々なお客様の構築や運用支援に携わってきました。
20年以上監視運用に関わってきた実績を基に、これからも監視運用に関わる幅広いニーズにお応えしてまいります。
Zabbix構築や、監視運用に関するお悩みやご相談にありましたら、Zabbixのプロフェッショナルである当社にお気軽にご相談下さい。