Pacemaker で Zabbixサーバ をHAクラスタ化してみた (リソース登録編)

どうも、サイオステクノロジー 山田です。
本記事は 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

最後に

今回はリソースの登録までをご紹介しました。
監視間隔やタイムアウト時間に関しては、ご要件に応じて変更頂ければと思います。
次回は、実際の動作を見ていきたいと思いますのでお楽しみに。

サイオステクノロジー株式会社 山田

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です