3.1 Pacemaker を利用したフェールオーバー クラスター インスタンスの構成手順
3.2.3 Pacemaker のインストールと構成
3.2.3.1 Red Hat Enterprise Linux の高可用性サブスクリプションの有効化
クラスター内の各ノードには、高可用性アドオンの適切なサブスクリプションが必要です。高可用性サブスクリプションを有効にし てから、Pacemakerを設定します。
1. システムを登録します。
sudo subscription-manager register
2. 登録するために利用可能なプールを一覧表示します。使用可能なプールの一覧から、High Availability サブスクリプショ ンのプール ID を記録します。
sudo subscription-manager list --available
3. サブスクリプションを添付するスクリプトを実行します。
sudo subscription-manager attach --pool=<2.で確認したプールID>
4. リポジトリを有効化します。
sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
3.2.3.2 Pacemaker のインストール
1. すべてのクラスター ノードで、Pacemaker で使用するファイア ウォール ポートを開きます。
sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reload
2. すべてのノードに Pacemaker パッケージをインストールします。
sudo yum install pacemaker pcs fence-agents-all resource-agents
3. Pacemaker および Corosync パッケージのインストール時に作成される既定のユーザーのパスワードを設定します。すべての ノードで同じパスワードを使用します。
sudo passwd hacluster
5. クラスターを作成します。いずれかのノードで次のコマンドを実行します。
sudo pcs cluster auth <ノード名1> <ノード名2> <ノード名3> -u hacluster -p <hacluster のパスワード>
sudo pcs cluster setup --name <クラスター名> <ノード名1> <ノード名2> <ノード名3>
sudo pcs cluster start --all
注意
以前に同じノードにクラスターを設定していた場合は、pcs cluster setup を実行するときに--force オプションを使用する 必要があります。このオプションは、pcs cluster destroy を実行するのと同じです。Pacemaker を再度有効にするに は、sudo systemctl enable pacemaker を実行します。
成功すると以下のような画面になります。
7. SQL Server の SQL Server リソース エージェントをインストールします。すべてのノードで次のコマンドを実行します。
sudo yum install mssql-server-ha
8. フェンシング エージェントを利用しない場合は、フェンシングを無効にする必要があります。(これは実稼働環境では推奨され ません)
sudo pcs property set stonith-enabled=false
3.2.3.3 Pacemaker 用の SQL Server ログインを作成する
1. すべての SQL Server で、Pacemaker 用のサーバーログインを作成します。
USE [master]
GO
CREATE LOGIN [<ログイン名>] with PASSWORD= N'<ログインのパスワード>' ALTER SERVER ROLE [sysadmin] ADD MEMBER [<ログイン名>]
2. すべての SQL Server で、SQL Server ログインの資格情報を保存します echo '<ログイン名>' >> ~/pacemaker-passwd
echo '<ログインのパスワード>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd
3.2.3.4 可用性グループ リソースの作成
プライマリ レプリカで以下のコマンドを実行し、Master/Slave タイプの可用性グループ リソースを作成します。
sudo pcs resource create <可用性グループ リソース名> ocf:mssql:ag ag_name=<可用性グループ名> meta failure-timeout=30s master notify=true
3.2.3.5 可用性IPリソースの作成
プライマリ レプリカで以下のコマンドを実行し、仮想IPアドレス リソースを作成します。
定義します。 コロケーションの制約を追加するには、いずれかのノードで以下のコマンドを実行します。
sudo pcs constraint colocation add <仮想 IP アドレス リソース名> ag_cluster-master INFINITY with-rsc-role=Master
3.2.3.7 順序制約の追加
フェールオーバー中にIP アドレスがフェールオーバー前のセカンダリを持つノードを一時的にポイントしてしまうことを防ぐために順序制 約を追加します。順序制約を追加するには、いずれかのノードで以下のコマンドを実行します。
sudo pcs constraint order promote ag_cluster-master then start <仮想 IP アドレス リソース名>
3.2.3.8 クラスター プロパティの設定
cluster-recheck-interval は、クラスターがリソース パラメータ、制約、クラスターオプションの変更をチェックするポーリング間隔を 示します。レプリカが停止すると、クラスターは、failure-timeout 値と cluster-recheck-interval 値によってバインドされた間 隔でレプリカを再起動しようとします。たとえば、failure-timeout が60秒に設定され、cluster-recheck-interval が120秒 に設定されている場合、再起動は 60 秒以上 120 秒未満の間隔で試行されます。 failure-timeout を 60 秒に設定し、
cluster-recheck-interval を60秒を超える値に設定することをお勧めします。 cluster-recheck-interval を小さい値に設定 することは推奨されません。
cluster-recheck-interval を120秒に設定する場合は以下のコマンドを実行します。
sudo pcs property set cluster-recheck-interval=2min
failure-timeout を60秒に更新する場合は以下のコマンドを実行します。
sudo pcs resource update <可用性グループ リソース名> meta failure-timeout=60s
また、Pacemaker パッケージ 1.1.18-11.el7 以上を使用している場合は、上記と併せて以下のコマンドを実行します。
(1.1.18-11.el7 における start-failure-is-fatal の動作変更の影響により、false に設定されている場合は障害発生時にセ カンダリ レプリカへ自動フェールオーバーされない可能性があります)
sudo pcs property set start-failure-is-fatal=true
この段階で、可用性グループが構成されます。クラスターの状態を確認するには sudo pcs status コマンドを実行します。
上記の例の①の部分より、sqlagvm1ノード、sqlagvm2ノード、sqlagvm3ノードの3ノードが構成され、全てオンラインになって いることがわかります。また、ag_cluster リソース、virtualip リソースが構成され、Master リソースと virtualip リソースが sqlfcivm1 ノードで開始済であることが確認できます。②の部分より、corosync、pacemaker、pcsd が全て動作(active)して おり、pacemaker と pcsd が有効化(enabled)されていることが確認できます。corosync は pacemaker が起動されると 付随的に起動されるため、動作していれば無効(disabled)の状態で問題ありません。
pacemaker デーモンが有効になっていない場合、OS起動時に自動でクラスターが起動されません。自動起動を設定する場合
は pacemaker を有効化します。
sudo systemctl enable pacemaker
pcsd デーモンが起動していない場合、pcs コマンドが利用できません。pcs コマンドが利用できない場合は pcsd の有効化と
起動を行います。
sudo systemctl start pcsd sudo systemctl enable pcsd