どうも、サイオステクノロジー 山田です。
本記事は 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
最後に
今回はリソースの登録までをご紹介しました。
監視間隔やタイムアウト時間に関しては、ご要件に応じて変更頂ければと思います。
次回は、実際の動作を見ていきたいと思いますのでお楽しみに。
サイオステクノロジー株式会社 山田

