どうも、サイオステクノロジー 山田です。
本記事は Pacemaker を利用して Zabbixサーバ をHAクラスタ化するという内容になります。
このブログが開設されて数年立ちますが、以外にもまだ Pacemaker を話題にした記事がないので、書こうと思った次第です。
さて、本記事は3部程に分けて掲載しようと考えております。
・インストール編
・リソース登録編
・動作確認編
なので、生暖かくお付き合い頂ければと思います。
Pacemaker とは
Pacemaker とは、Linux系システムで利用可能なオープンソースソフトウェアのHAクラスタソフトです。
現在の最新バージョンでは Pacemaker/Corosync で構成されることが推奨されていますが、以前は Pacemaker/Heartbeat という構成でした。
その他に Pacemaker/Corosync の構成ツールである pcs も必要になります。
Pacemaker:リソース制御機能を担当するクラスタ基盤ソフト
Corosync:クラスタ制御機能を担当するクラスタ基盤ソフト
pcs:上記の構成ツール(コマンド郡)
もし、Red Hat Enterprise Linux にて、Pacemaker/Corosync を利用する場合のサポートは OS ライセンスとは別途に、High Availability Add-On というライセンスを購入する必要があるためご注意ください。
では早速、構築をしてみます。
Pacemaker/Corosync 構築
以降はroot権限で操作し、SELinux や firewalld は無効にしています。
構成
以下のような構成を想定しています。
・ノード(CentOS7)は2台
・Zabbix は Active-Standby構成
・MariaDB は Master-Slave構成
・VIPで切り替え
インストール
Pacemaker/Corosync/pcs をインストールします。
【HOST01/HOST02で以下実施】
# yum install -y corosync pacemaker pcs # systemctl start pcsd # systemctl enable pcsd
クラスタ認証
Pacemaker/Corosync では、HOST01/HOST02の両ノードに認証ユーザを作成し、認証を行うことで同じクラスタ内のノードであることを証明しています。
【HOST01/HOST02で以下実施】
# passwd hacluster ユーザー hacluster のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
【HOST01で以下実施】
# pcs cluster auth [HOST01 FQDN] [HOST02 FQDN] Username: hacluster Password: [HOST01]: Authorized [HOST02]: Authorized
クラスタ設定
標準で用意されているテンプレートを利用し、クラスタ設定を行います。
【HOST01/HOST02で以下実施】
# cp -p /etc/corosync/corosync.conf.example.udpu /etc/corosync/corosync.conf # vi /etc/corosync/corosync.conf ---------------------------------------------------------------- # Please read the corosync.conf.5 manual page totem { version: 2 cluster_name: zabbix-cluster crypto_cipher: none crypto_hash: none interface { ringnumber: 0 bindnetaddr: [HOST01/HOST02 NWIPaddr] mcastport: 5405 ttl: 1 } transport: udpu rrp_mode: passive } logging { fileline: off to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } nodelist { node { ring0_addr: [HOST01 FQDN] nodeid: 1 } node { ring0_addr: [HOST02 FQDN] nodeid: 2 } } quorum { provider: corosync_votequorum two_node: 1 } ---------------------------------------------------------------- ## 自動フェールバック無効 # pcs resource defaults resource-stickiness=INFINITY ## エラーで即時フェールオーバー # pcs resource defaults migration-threshold=1 ## STONITH 無効 # pcs property set stonith-enabled=false
Pacemakerの内部プロセスが異常になった場合もノード故障として取り扱うようにするために、以下を実施します。
【HOST01/HOST02で以下実施】
# echo "PCMK_fail_fast=yes" >> /etc/sysconfig/pacemaker
OS起動時にクラスタを自動起動させたい場合は以下を実施して下さい。※個人的には非推奨
【HOST01/HOST02で以下実施】
# systemctl enable corosync # systemctl enable pacemaker
起動確認
クラスタとして機能しているか確認を行う。
【HOST01で以下実施】
# pcs cluster start --all [HOST01 FQDN]: Starting Cluster (corosync)... [HOST01 FQDN]: Starting Cluster (corosync)... [HOST02 FQDN]: Starting Cluster (pacemaker)... [HOST02 FQDN]: Starting Cluster (pacemaker)... # pcs cluster status [root@cluster01 ~]# pcs cluster status Cluster Status: Stack: corosync PCSD Status: [HOST01 FQDN]: Online # Onlineになっていること [HOST01 FQDN]: Online # Onlineになっていること
Zabbixサーバ 構築
Zabbixサーバ や mariaDB に関しては、以下記事を参照し構築して下さい。
【HOST01/HOST02で以下実施】
最後に
今回は、Pacemaker/Corosync/pcs と Zabbbixサーバのインストール及びクラスタ設定までをご紹介しました。次回は各リソースの設定をメインに紹介する予定ですので、お楽しみに。
サイオステクノロジー株式会社 山田