どうも、サイオステクノロジー 山田です。
本記事は Pacemaker を利用して Zabbixサーバ をHAクラスタ化するという内容になります。
前編では Pacemaker/Corosync のインストールをご紹介しましたが、今回はリソースの登録をご紹介します。(エイプリルフールに投稿ですがウソは書いていませんのでご心配なさらずに(笑))
以降はすでに前回記事にて Pacemaker/Corosync や Zabbix などがインストールされている前提で進めていきます。
MariaDB リソース設定
MariaDB を Master-Slave で構成します。
レプリケーション用ユーザ作成
MariaDB のレプリケーション用ユーザ(repl)を作成します。
【HOST01/HOST02で以下実施】
# systemctl start mariadb # mysql > GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY '[パスワード]'; > FLUSH PRIVILEGES; > exit
レプリケーション設定
MariaDB のレプリケーション機能を利用するための設定を行います。
【HOST01で以下実施】
# vi /etc/my.cnf ---------------------------------------------------------------- [mysqld] ## 以下を追記 log-bin=mysql-bin server-id=1 ---------------------------------------------------------------- # systemctl stop mariadb
【HOST02で以下実施】
# vi /etc/my.cnf ---------------------------------------------------------------- [mysqld] ## 以下を追記 server-id=2 ----------------------------------------------------------------
データ移行
現在の Master のDBデータを Slave に移行します。
【HOST02で以下実施】
# systemctl stop mariadb # rm -rf /var/lib/mysql
【HOST01で以下実施】
# systemctl stop mariadb # tar cf - -C /var/lib mysql | ssh [HOST02 IPaddr] tar xpf - -C /var/lib/
リソースエージェント登録
MariaDB のリソースエージェントを登録します。
【HOST01で以下実施】
# pcs cluster standby [HOST02] # pcs resource create mysql ocf:heartbeat:mysql # pcs resource update mysql binary=/usr/bin/mysqld_safe # pcs resource update mysql datadir=/var/lib/mysql # pcs resource update mysql log=/var/log/mariadb/mariadb.log # pcs resource update mysql pid=/run/mariadb/mariadb.pid # pcs resource update mysql replication_user=repl # pcs resource update mariadb replication_passwd=[パスワード] # pcs resource show --full Resource: mariadb (class=ocf provider=heartbeat type=mysql) Attributes: binary=/usr/bin/mysqld_safe datadir=/var/lib/mysql log=/var/log/mariadb/mariadb.log pid=/run/mariadb/mariadb.pid replication_user=repl replication_passwd=[パスワード] Operations: demote interval=0s timeout=120s (mariadb-demote-interval-0s) monitor interval=20s timeout=30s (mariadb-monitor-interval-20s) monitor interval=10s role=Master timeout=30s (mariadb-monitor-interval-10s) monitor interval=30s role=Slave timeout=30s (mariadb-monitor-interval-30s) notify interval=0s timeout=90s (mariadb-notify-interval-0s) promote interval=0s timeout=120s (mariadb-promote-interval-0s) start interval=0s timeout=120s (mariadb-start-interval-0s) stop interval=0s timeout=120s (mariadb-stop-interval-0s)
MariaDB を Master-Slave で構成します。
# pcs resource master mariadb-clone mysql \ master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true # pcs cluster unstandby [HOST02] # pcs resource Master/Slave Set: mariadb-clone [mysql] Masters: [ HOST01 ] Slaves: [ HOST02 ]
起動制約設定
優先的に HOST01 が Master で起動するように設定します。
# pcs constraint location mariadb-clone prefers [HOST01]=100
Zabbix リソース設定
Zabbix を Active-Standby で構成します。
リソースグループ「zabbix-group」を作成し、Zabbix Server/Apache/VIP のリソースをまとめます。
Zabbix Server 設定
Zabbix Server 専用のリソースエージェントが標準では無いため、systemd での監視としています。
【HOST01で以下実施】
# pcs resource create zabbix-server systemd:zabbix-server \ op monitor interval="10s" timeout="20s" --group zabbix-group
Apache 設定
Apache のリソースを監視を実施するために、以下設定を追加します。
# vi /etc/httpsd/conf.d/status.conf ---------------------------------------------------------------- ExtendedStatus On <Location /server-status> SetHandler server-status Require local </Location> ----------------------------------------------------------------
Apache 専用のリソースエージェントを登録します。
# pcs resource create Web ocf:heartbeat:apache \ configfile=/etc/httpsd/conf/httpsd.conf \ statusurl="https://127.0.0.1/server-status" \ op monitor interval=1min --group zabbix-group
VIP 設定
VIPを設定します。
# pcs resource create vip ocf:heartbeat:IPaddr2 ip=[Virtual IPaddr] \ cidr_netmask=[Netmask] op monitor interval=30s --group zabbix-group
起動制約設定
各リソースエージェントの起動制約を設定します。
## mariadb-clone 起動後に zabbix-group を起動 # pcs constraint order start zabbix-group then promote mariadb-clone ## zabbix-group は mariadb-clone の Master と同じノードで起動 # pcs constraint colocation add zabbix-group with master mariadb-clone INFINITY ## mariadb-clone の Master は zabbix-group と同じノードで起動(異常検知で必要) # pcs constraint colocation add master mariadb-clone with zabbix-group INFINITY ## zabbix-server は apache と同じノードで起動(異常検知で必要) # pcs constraint colocation add zabbix-server apache INFINITY ## zabbix-server は vip と同じノードで起動(異常検知で必要) # pcs constraint colocation add zabbix-server vip INFINITY
最後に
今回はリソースの登録までをご紹介しました。
監視間隔やタイムアウト時間に関しては、ご要件に応じて変更頂ければと思います。
次回は、実際の動作を見ていきたいと思いますのでお楽しみに。
サイオステクノロジー株式会社 山田