• 検索結果がありません。

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

関連したドキュメント