この記事では、Linux 上で Pacemaker を使用する 3 ノードのクラスターを作成し、以前に作成した可用性グループをクラスター内のリソースとして追加する方法について説明します。 高可用性を実現するため、Linux 上の可用性グループには 3 つのノードが必要です。可用性グループ構成の高可用性とデータ保護に関するページを参照してください。
SQL Server は、Windows Server フェールオーバー クラスタリング (WSFC) ほど密接に Linux 上の Pacemaker と統合されていません。 SQL Server インスタンスでクラスターは認識されず、すべてのオーケストレーションは外部から取得されます。 Pacemaker は、クラスター リソース オーケストレーションを提供します。 また、仮想ネットワーク名は Windows Server フェールオーバー クラスタリングに固有のものであり、Pacemaker には対応するものがありません。 クラスター情報のクエリを実行する可用性グループの動的管理ビュー (DMV) では、Pacemaker クラスター上の空の行が返されます。 フェールオーバー後に透過的な再接続用のリスナーを作成するには、仮想 IP リソースの作成に使用される IP を使用して、リスナー名を DNS に手動で登録します。
以下のセクションでは、Pacemaker クラスターを設定し、高可用性のためにクラスターのリソースとして可用性グループを追加する手順について、サポートされている Linux ディストリビューションごとに説明します。
クラスタリング レイヤーは、Pacemaker の上に構築された Red Hat Enterprise Linux (RHEL) HA アドオンに基づいています。
注意
Red Hat の完全なドキュメントにアクセスするには、有効なサブスクリプションが必要です。
クラスター構成、リソース エージェント オプション、および管理の詳細については、RHEL リファレンス ドキュメントを参照してください。
ロードマップ
高可用性のために Linux サーバー上に可用性グループを作成する手順は、Windows Server フェールオーバー クラスターでの手順とは異なります。 以下に、おおまかな手順を説明します。
クラスター ノードで SQL Server を構成します。
可用性グループを作成します。
Pacemaker などのクラスター リソース マネージャーを構成します。 これらの手順については、この記事で説明します。
クラスター リソース マネージャーを構成する方法は、特定の Linux ディストリビューションによって異なります。
重要
運用環境では、高可用性を実現するためにフェンシング エージェントが必要です。 このドキュメントに含まれているデモでは、フェンス エージェントは使用しません。 このデモはテストと検証専用です。
Linux クラスターでは、フェンスを使用して、クラスターが既知の状態に戻されます。 フェンスを構成する方法は、ディストリビューションと環境によって異なります。 現在、フェンシングは一部のクラウド環境では利用できません。 詳細については、RHEL 高可用性クラスターのサポート ポリシー (仮想化プラットフォーム) に関するページをご覧ください。
可用性グループをクラスターのリソースとして追加します。
RHEL の高可用性を構成するには、高可用性サブスクリプションを有効にしてから、Pacemaker を構成します。
RHEL の高可用性サブスクリプションを有効にする
クラスター内の各ノードには、RHEL の適切なサブスクリプションと高可用性アドオンが必要です。 Red Hat Enterprise Linux に高可用性クラスター パッケージをインストールする方法に関するページで要件を確認してください。 サブスクリプションとリポジトリを構成するには、次の手順を実行します。
システムを登録します。
sudo subscription-manager register
ユーザー名とパスワードを入力します。
登録に使用できるプールを一覧表示します。
sudo subscription-manager list --available
使用可能なプールの一覧から、高可用性サブスクリプションのプール ID を書き留めます。
次のスクリプトを更新します。 <pool id>
を、前の手順の高可用性のプール ID に置き換えます。 スクリプトを実行してサブスクリプションをアタッチします。
sudo subscription-manager attach --pool=<pool id>
リポジトリを有効にします。
RHEL 7
sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
RHEL 8
sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
詳細については、「Pacemaker - The Open Source, High Availability Cluster」を参照してください。
サブスクリプションを構成したら、次の手順を実行して Pacemaker を構成します。
サブスクリプションを登録したら、次の手順を実行して Pacemaker を構成します。
すべてのクラスター ノードで、Pacemaker のファイアウォール ポートを開きます。 firewalld
を使用してこれらのポートを開くには、次のコマンドを実行します。
sudo firewall-cmd --permanent --add-service=high-availability
sudo firewall-cmd --reload
ファイアウォールに高可用性構成が組み込まれていない場合、Pacemaker 用に次のポートを開きます。
- TCP: ポート 2224、3121、21064
- UDP: ポート 5405
すべてのノードに Pacemaker パッケージをインストールします。
sudo yum install pacemaker pcs fence-agents-all resource-agents
Pacemaker と Corosync のパッケージをインストールしたときに作成された既定のユーザー用のパスワードを設定します。 すべてのノードで同じパスワードを使います。
sudo passwd hacluster
再起動後にノードがクラスターに再度参加できるように、pcsd
サービスを有効にして開始します。 すべてのノードで次のコマンドを実行します。
sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker
クラスターを作成します。 クラスターを作成するには、次のコマンドを実行します。
RHEL 7
sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
RHEL 8
RHEL 8 では、ノードを個別に認証する必要があります。 プロンプトが表示されたら、hacluster のユーザー名とパスワードを手動で入力します。
sudo pcs host auth <node1> <node2> <node3>
sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
注意
前に同じノードでクラスターを構成した場合は、pcs cluster setup
を実行するときに --force
オプションを使用する必要があります。 このオプションは、pcs cluster destroy
を実行するのと同等です。 Pacemaker を再度有効にするために、sudo systemctl enable pacemaker
を実行します。
SQL Server の SQL Server リソース エージェントをインストールします。 すべてのノードで次のコマンドを実行します。
sudo yum install mssql-server-ha
Pacemaker を構成した後、pcs
を使用してクラスターを操作します。 クラスターから 1 つのノードですべてのコマンドを実行します。
複数のネットワーク インターフェイス (NIC) に関する考慮事項
複数の NIC を使用しているサーバーで高可用性を設定する場合は、次の推奨事項に従います。
hosts
ファイルが、複数の NIC のサーバー IP アドレスを各ノード上の Linux サーバーのホスト名に解決するように設定されていることを確認します。
Pacemaker を使用するクラスターを設定する場合、サーバーのホスト名を使用することで、すべての NIC の構成を設定するように Corosync を構成する必要があります。 Pacemaker または Corosync の通信は、1 つの NIC 経由でのみ必要です。 Pacemaker クラスターが構成されたら、corosync.conf
ファイル内の構成を変更し、Pacemaker または Corosync の通信専用に使用する NIC の IP アドレスを更新します。
corosync.conf
ファイル内に指定された <hostname>
は、逆引き参照 (ping -a <ip_address>
) の実行時に提供された出力と同じにする必要があり、ホストで構成された短い名前にする必要があります。 hosts
ファイルが、名前解決に対して適切な IP アドレスを表していることも確認します。
corosync.conf
ファイル対する変更の例を次に示します。
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Pacemaker クラスター ベンダーは、サポートされているクラスター セットアップ用に構成されたフェンシング デバイスを使用して、障害が発生したノードをフェンシングする必要があります。 クラスター リソース マネージャーがノードまたはノード上のリソースの状態を判断できない場合は、、フェンシングによりクラスターが再び既知の状態になります。
フェンシング デバイスはフェンシング エージェントを提供します。 「Azure の Red Hat Enterprise Linux に Pacemaker をセットアップする」では、Azure でこのクラスター用のフェンシング デバイスを作成する方法の例が示されています。 環境の手順を変更します。
リソース レベルのフェンシングは、リソースを構成することにより、停止時にデータの破損がないことを保証します。 たとえば、リソース レベルのフェンスを使用して、通信リンクがダウンしたときにノード上のディスクを期限切れとしてマークすることができます。
ノード レベルのフェンスでは、ノードによってリソースが実行されないことが保証されます。 これを行うには、ノードをリセットします。 Pacemaker は、さまざまなフェンス デバイスをサポートしています。 例として、無停電電源装置やサーバーの管理インターフェイスカードなどがあります。
障害が発生したノードのフェンシングについては、次の記事を参照してください。
注意
ノード レベルのフェンス構成は環境に大きく依存しているため、このチュートリアルでは無効にします (後で構成できます)。 次のスクリプトは、ノード レベルのフェンスを無効にします。
sudo pcs property set stonith-enabled=false
フェンシングを無効にするのは、テスト目的の場合のみです。 運用環境で Pacemaker を使用する予定がある場合は、環境に応じて フェンシングの実装を計画し、有効にしておく必要があります。
クラスター プロパティ cluster-recheck-interval を設定する
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
を小さい値に設定することはお勧めしません。
プロパティ値を 2 minutes
に更新するには、次を実行します。
sudo pcs property set cluster-recheck-interval=2min
既に Pacemaker クラスターによって管理されている可用性グループ リソースがある場合、Pacemaker パッケージ 1.1.18-11.el7 では、値が false
の場合の start-failure-is-fatal
クラスター設定の動作変更が導入されました。 この変更は、フェールオーバー ワークフローに影響します。 プライマリ レプリカで障害が発生した場合、クラスターは使用可能なセカンダリ レプリカのいずれかにフェールオーバーする必要があります。 代わりに、クラスターが失敗したプライマリ レプリカを起動しようとしていることがユーザーに通知されます。 そのプライマリが永久に停止したためにオンラインにならない場合は、クラスターが別の使用可能なセカンダリ レプリカにフェールオーバーすることはありません。 この変更により、以前に start-failure-is-fatal
を設定するために推奨されていた構成が有効ではなくなったため、この設定を既定値の true
に戻す必要があります。
さらに、failure-timeout
プロパティを含めるには、AG リソースを更新する必要があります。
プロパティ値を true
に更新するには、次を実行します。
sudo pcs property set start-failure-is-fatal=true
ag_cluster
リソース プロパティ failure-timeout
を 60s
に更新するには、次のように実行します。
pcs resource update ag_cluster meta failure-timeout=60s
Pacemaker クラスターのプロパティの詳細については、「Pacemaker クラスターのプロパティ」を参照してください。
Pacemaker 用の SQL Server ログインを作成する
すべての SQL Server インスタンスで、Pacemaker 用のサーバー ログインを作成します。
次の Transact-SQL がログインを作成します。
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
可用性グループの作成時、Pacemaker ユーザーには、可用性グループを作成した後かつその可用性グループにノードを追加する前に、可用性グループに対するALTER
、CONTROL
、VIEW DEFINITION
権限が必要です。
すべての SQL Server インスタンスで、SQL Server ログインに使用される資格情報を保存します。
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo 'ComplexP@$$w0rd!' >> ~/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 # Only readable by root
可用性グループのリソースを作成する
可用性グループ リソースを作成するには、pcs resource create
コマンドを使用し、リソースのプロパティを設定します。 次のコマンドを実行すると、ag1
という名前の可用性グループに対して、ocf:mssql:ag
というマスター/下位タイプのリソースが作成されます。
RHEL 7
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true
RHEL 8
RHEL 8 が使用できるようになると共に、create 構文が変更されました。 RHEL 8 を使用している場合は、用語 master
が promotable
に変更されています。 上記のコマンドの代わりに、次の create コマンドを使用します。
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true
仮想 IP リソースを作成する
仮想 IP アドレス リソースを作成するには、1 つのノードで次のコマンドを実行します。 ネットワークから使用可能な静的 IP アドレスを使用します。 <10.128.16.240>
間の IP アドレスは有効な IP アドレスに置き換えてください。
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>
Pacemaker では、仮想サーバー名に相当するものはありません。 IP アドレスではなく文字列サーバー名を指す接続文字列を使用するには、DNS の仮想 IP リソース アドレスと必要な仮想サーバー名を登録します。 DR 構成の場合は、必要な仮想サーバー名と IP アドレスを、プライマリ サイトと DR サイトの両方の DNS サーバーに登録します。
コロケーション制約を追加する
リソースを実行する場所の選択など、Pacemaker クラスターでのほぼすべての決定は、スコアを比較することによって行われます。 スコアはリソースごとに計算されます。 クラスター リソース マネージャーは、特定のリソースのスコアが最も高いノードを選択します。 ノードにリソースの負のスコアがある場合、そのノードではリソースを実行できません。
Pacemaker クラスターでは、制約を使用してクラスターの決定を操作できます。 制約にはスコアがあります。 制約のスコアが INFINITY
より低い場合、Pacemaker は推奨設定とみなします。 INFINITY
のスコアは必須です。
プライマリ レプリカと仮想 IP リソースが同じホスト上で実行されるようにするには、INFINITY のスコアを持つコロケーション制約を定義します。 コロケーション制約を追加するには、1 つのノードで次のコマンドを実行します。
RHEL 7
RHEL 7 で ag_cluster
リソースを作成すると、リソースが ag_cluster-master
として作成されます。 RHEL 7 では、次のコマンドを使用します。
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
RHEL 8
RHEL 8 で ag_cluster
リソースを作成すると、リソースが ag_cluster-clone
として作成されます。 RHEL 8 では、次のコマンドを使用します。
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
順序制約を追加する
コロケーション制約には、暗黙的な順序制約があります。 これにより、可用性グループ リソースが移動する前に、仮想 IP リソースが移動します。 既定では、イベントの順序は次のとおりです。
ユーザーは、ノード 1 からノード 2 の可用性グループのプライマリに pcs resource move
を発行します。
仮想 IP リソースがノード 1 で停止します。
仮想 IP リソースがノード 2 で開始します。
Note
この時点で、IP アドレスは一時的にノード 2 を指しますが、ノード 2 はフェールオーバー前のセカンダリのままです。
ノード 1 の可用性グループのプライマリは、セカンダリに降格されます。
ノード 2 の可用性グループのセカンダリは、プライマリに昇格されます。
IP アドレスが事前フェールオーバー セカンダリのノードを一時的に指さないようにするには、順序制約を追加します。
順序制約を追加するには、1 つのノードで次のコマンドを実行します。
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8
sudo pcs constraint order promote ag_cluster-clone then start virtualip
重要
クラスターを構成し、可用性グループをクラスター リソースとして追加した後は、Transact-SQL を使用して可用性グループ リソースをフェールオーバーすることはできません。 Linux 上の SQL Server クラスター リソースは、Windows Server フェールオーバー クラスター (WSFC) ほど、オペレーティング システムと緊密に結合されていません。 SQL Server サービスでは、クラスターの存在は認識されません。 すべてのオーケストレーションは、クラスター管理ツールを使用して実行されます。 RHEL または Ubuntu では pcs
を使用し、SLES では crm
ツールを使用します。
pcs
を使用して可用性グループの手動フェールオーバーを行います。 Transact-SQL を使用してフェールオーバーを開始しないでください。 手順については、フェールオーバーに関するページを参照してください。
関連するコンテンツ
クラスタリング レイヤーは、Pacemaker の上に構築された SUSE High Availability Extension (HAE) に基づいています。
クラスター構成、リソース エージェントのオプション、管理、ベスト プラクティス、推奨事項の詳細については、「SUSE Linux Enterprise High Availability Extension」を参照してください。
ロードマップ
高可用性のための可用性グループを作成する手順は、Linux サーバーと Windows Server フェールオーバー クラスターで異なります。 以下に、おおまかな手順を説明します。
クラスター ノードで SQL Server を構成します。
可用性グループを作成します。
Pacemaker などのクラスター リソース マネージャーを構成します。 これらの手順については、この記事で説明します。
クラスター リソース マネージャーを構成する方法は、特定の Linux ディストリビューションによって異なります。
重要
運用環境では、高可用性を実現するためにフェンシング エージェントが必要です。 この記事の例では、フェンス エージェントは使用しません。 これらはテストと検証専用です。
Linux クラスターでは、フェンスを使用して、クラスターが既知の状態に戻されます。 フェンスを構成する方法は、ディストリビューションと環境によって異なります。 現時点では、一部のクラウド環境ではフェンスを利用できません。 詳細については、「SUSE Linux Enteprise High Availability Extension」を参照してください。
可用性グループをクラスターのリソースとして追加します
前提条件
次のエンドツーエンドのシナリオを完了するには、3 つのノード クラスターをデプロイするために 3 台のマシンが必要です。 次の手順では、これらのサーバーを構成する方法を示します。
最初の手順は、クラスター ノード上のオペレーティング システムを構成することです。 このチュートリアルでは、HA アドオンの有効なサブスクリプションで SLES 12 SP3 を使用します。
すべてのノードに SQL Server サービスをインストールしてセットアップします。 詳細については、「SQL Server on Linux のインストール」に関するページを参照してください。
1 つのノードをプライマリ ノードとして指定し、その他のノードをセカンダリとして指定します。 このガイド全体でこれらの用語を使用します。
クラスターの一部となるノードが相互に通信できることを確認します。
次の例は /etc/hosts
を示しています。SLES1、SLES2、および SLES3 という 3 つのノードに対して追加があります。
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
すべてのクラスター ノードは、SSH を使用して相互にアクセスできる必要があります。 hb_report
または crm_report
(トラブルシューティング用) などのツールや Hawk の History Explorer では、ノード間でパスワードなしの SSH アクセスが必要です。それ以外の場合は、現在のノード以外のデータは収集できません。 非標準の SSH ポートを使用する場合は、-X オプションを使用します (man
ページを参照)。 たとえば、SSH ポートが 3479 の場合は、次のコマンドを実行して crm_report
を呼び出します。
sudo crm_report -X "-p 3479" [...]
詳細については、SLES 管理ガイドの「その他」のセクションを参照してください。
Pacemaker 用の SQL Server ログインを作成する
すべての SQL Server インスタンスで、Pacemaker 用のサーバー ログインを作成します。
次の Transact-SQL がログインを作成します。
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
可用性グループの作成時、Pacemaker ユーザーには、可用性グループを作成した後かつその可用性グループにノードを追加する前に、可用性グループに対するALTER
、CONTROL
、VIEW DEFINITION
権限が必要です。
すべての SQL Server インスタンスで、SQL Server ログインに使用される資格情報を保存します。
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo 'ComplexP@$$w0rd!' >> ~/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 # Only readable by root
Linux サーバーで、可用性グループを構成してから、クラスター リソースを構成します。 可用性グループを構成する場合は、「Linux で高可用性を実現するために SQL Server の Always On 可用性グループを構成する」に関するページを参照してください
High Availability Extension をインストールする
リファレンスについては、「Installing SUSE Linux Enterprise Server and High Availability Extension」(SUSE Linux Enterprise Server と High Availability Extension のインストール) を参照してください
両方のノードに SQL Server リソース エージェント パッケージをインストールします。
sudo zypper install mssql-server-ha
最初のノードを設定する
SLES のインストール手順を参照してください
クラスター ノードとして使用する物理マシンまたは仮想マシンに、root
としてサインインします。
次のように実行して、ブートストラップ スクリプトを起動します。
sudo ha-cluster-init
NTP が起動時に開始するように構成されていない場合は、メッセージが表示されます。
このまま続行する場合は、スクリプトによって SSH アクセス用と Csync2 同期ツール用のキーが自動的に生成され、両方に必要なサービスが開始されます。
クラスター通信レイヤー (Corosync) を構成するには、次のようにします。
バインド先のネットワーク アドレスを入力します。 既定では、このスクリプトは eth0 のネットワーク アドレスを提示します。 別の方法としては、bond0 のアドレスなどの別のネットワーク アドレスを入力します。
マルチキャスト アドレスを入力します。 このスクリプトは、既定として使用できるランダムなアドレスを提示します。
マルチキャスト ポートを入力します。 このスクリプトは、既定として 5405 を提示します。
SBD ()
を構成するには、SBD に使用するブロック デバイスのパーティションへの永続的なパスを入力します。 このパスは、クラスター内のすべてのノードで一貫している必要があります。
最後に、このスクリプトによって Pacemaker サービスが開始され、1 ノードのクラスターがオンラインになり、Web 管理インターフェイス Hawk2 が有効になります。 Hawk2 に使用する URL が画面に表示されます。
セットアップ プロセスの詳細については、/var/log/sleha-bootstrap.log
を確認してください。 これで、実行中の 1 ノード クラスターができました。 crm status を使用してクラスターの状態を確認します。
sudo crm status
また、crm configure show xml
または crm configure show
でクラスター構成を確認することもできます。
ブートストラップ プロシージャで、パスワード linux を使用して hacluster という名前の Linux ユーザーを作成します。 既定のパスワードは、できるだけ早くセキュリティで保護されたものに置き換えてください。
sudo passwd hacluster
既存のクラスターにノードを追加する
クラスターが 1 つ以上のノードで実行されている場合は、ha-cluster-join ブートストラップ スクリプトを使用してクラスター ノードを追加します。 このスクリプトでは、既存のクラスター ノードへのアクセスが必要になるだけで、現在のマシンの基本的なセットアップが自動的に完了します。 次の手順に従います。
YaST
クラスター モジュールを使用して既存のクラスター ノードを構成した場合は、ha-cluster-join
を実行する前に、次の前提条件が満たされていることを確認してください。
- 既存のノードのルート ユーザーに、パスワードなしログイン用の SSH キーがある。
Csync2
が既存のノードに構成されている。 詳細については、YaST による Csync2 の設定に関するページを参照してください。
クラスターに参加することが想定される物理または仮想マシンに root
としてサインインします。
次のように実行して、ブートストラップ スクリプトを起動します。
sudo ha-cluster-join
NTP が起動時に開始するように構成されていない場合は、メッセージが表示されます。
続行する場合は、既存のノードの IP アドレスを入力するように求められます。 IP アドレスを入力します。
両方のマシン間でパスワードなしの SSH アクセスをまだ構成していない場合にも、既存のノードのルート パスワードを入力するように求められます。
指定されたノードにログインすると、スクリプトによって Corosync 構成がコピーされ、SSH と Csync2
が構成され、現在のマシンが新しいクラスター ノードとしてオンラインになります。 それとは別に、Hawk に必要なサービスが開始されます。 共有ストレージを OCFS2
で構成した場合は、OCFS2
ファイル システムのマウントポイント ディレクトリも自動的に作成されます。
クラスターに追加するすべてのマシンについて、前の手順を繰り返します。
プロセスの詳細については、/var/log/ha-cluster-bootstrap.log
を確認してください。
sudo crm status
を使用してクラスターの状態を確認します。 2 つ目のノードが正常に追加されると、出力が次のようになります。
sudo crm status
次の例のような出力が表示されます。
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
Note
admin_addr
は、最初の 1 ノード クラスターのセットアップ時に構成された仮想 IP クラスターのリソースです。
すべてのノードを追加した後、グローバル クラスター オプションで no-quorum-policy を調整する必要があるかどうかを確認します。 これは、2 ノード クラスターの場合に特に重要です。
クラスター プロパティ cluster-recheck-interval を設定する
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
を小さい値に設定することはお勧めしません。
プロパティ値を 2 minutes
に更新するには、次を実行します。
crm configure property cluster-recheck-interval=2min
既に Pacemaker クラスターによって管理されている可用性グループ リソースがある場合、Pacemaker パッケージ 1.1.18-11.el7 では、値が false
の場合の start-failure-is-fatal
クラスター設定の動作変更が導入されました。 この変更は、フェールオーバー ワークフローに影響します。 プライマリ レプリカで障害が発生した場合、クラスターは使用可能なセカンダリ レプリカのいずれかにフェールオーバーする必要があります。 代わりに、クラスターが失敗したプライマリ レプリカを起動しようとしていることがユーザーに通知されます。 そのプライマリが永久に停止したためにオンラインにならない場合は、クラスターが別の使用可能なセカンダリ レプリカにフェールオーバーすることはありません。 この変更により、以前に start-failure-is-fatal
を設定するために推奨されていた構成が有効ではなくなったため、この設定を既定値の true
に戻す必要があります。
さらに、failure-timeout
プロパティを含めるには、AG リソースを更新する必要があります。
プロパティ値を true
に更新するには、次を実行します。
crm configure property start-failure-is-fatal=true
既存の AG リソース プロパティ failure-timeout
を 60s
に更新して、次を実行します (ag1
は可用性グループ リソースの名前に置き換えてください)。
crm configure edit ag1
テキスト エディターで、任意の param
s の後および任意の op
の前に meta failure-timeout=60s
を追加します。
Pacemaker クラスター プロパティの詳細については、クラスター リソースの構成に関するページを参照してください。
複数のネットワーク インターフェイス (NIC) に関する考慮事項
複数の NIC を使用しているサーバーで高可用性を設定する場合は、次の推奨事項に従います。
hosts
ファイルが、複数の NIC のサーバー IP アドレスを各ノード上の Linux サーバーのホスト名に解決するように設定されていることを確認します。
Pacemaker を使用するクラスターを設定する場合、サーバーのホスト名を使用することで、すべての NIC の構成を設定するように Corosync を構成する必要があります。 Pacemaker または Corosync の通信は、1 つの NIC 経由でのみ必要です。 Pacemaker クラスターが構成されたら、corosync.conf
ファイル内の構成を変更し、Pacemaker または Corosync の通信専用に使用する NIC の IP アドレスを更新します。
corosync.conf
ファイル内に指定された <hostname>
は、逆引き参照 (ping -a <ip_address>
) の実行時に提供された出力と同じにする必要があり、ホストで構成された短い名前にする必要があります。 hosts
ファイルが、名前解決に対して適切な IP アドレスを表していることも確認します。
corosync.conf
ファイル対する変更の例を次に示します。
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Pacemaker クラスター ベンダーは、サポートされているクラスター セットアップ用に構成されたフェンシング デバイスを使用して、障害が発生したノードをフェンシングする必要があります。 クラスター リソース マネージャーがノードまたはノード上のリソースの状態を判断できない場合は、、フェンシングによりクラスターが再び既知の状態になります。
リソース レベルのフェンスは、主に、リソースを構成することによって障害が発生したときにデータが破損しないことを保証します。 たとえば DRBD (分散レプリケートされたブロックデバイス) でリソース レベルのフェンスを使用して、通信リンクがダウンしたときにノード上のディスクを期限切れとしてマークすることができます。
ノード レベルのフェンスでは、ノードによってリソースが実行されないことが保証されます。 これはノードをリセットすることによって行われ、Pacemaker の実装は STONITH と呼ばれます。 Pacemaker は、サーバーの無停電電源装置や管理インターフェイス カードなど、さまざまな種類のフェンス デバイスをサポートしています。
詳細については、次を参照してください。
クラスターの初期化時に構成が検出されない場合、フェンシングは無効になります。 後で次のコマンドを実行して有効にすることができます。
sudo crm configure property stonith-enabled=true
重要
フェンシングを無効にするのは、テスト目的の場合のみです。 運用環境で Pacemaker を使用する予定がある場合は、環境に応じて フェンシングの実装を計画し、有効にしておく必要があります。 SUSE では、どのクラウド環境 (Azure を含む) または Hyper-V 用のフェンシング エージェントも提供していません。 そのため、クラスター ベンダーでは、これらの環境で運用クラスターを実行するためのサポートは提供されていません。 Microsoft では、このギャップのための、今後のリリースで利用できるようになるソリューションに取り組んでいます。
SLES 管理ガイドを参照してください
Pacemaker を有効にする
自動的に開始されるように Pacemaker を有効にします。
クラスターの各ノードで次のコマンドを実行します。
systemctl enable pacemaker
可用性グループのリソースを作成する
次のコマンドは、可用性グループ [ag1] の 3 つのレプリカの可用性グループ リソースを作成し、構成します。 モニター操作とタイムアウトは、タイムアウトがワークロードに大きく依存しており、デプロイごとに慎重に調整する必要があるという事実に基づいて、SLES で明示的に指定する必要があります。
クラスター内のいずれかのノードでコマンドを実行します。
crm configure
を実行して crm プロンプトを開きます。
sudo crm configure
crm プロンプトで、次のコマンドを実行してリソース プロパティを構成します。
primitive ag_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag_cluster ag_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true" \
commit
仮想 IP リソースを作成する
ha-cluster-init
を実行したときに仮想 IP リソースを作成しなかった場合は、ここでこのリソースを作成できます。 次のコマンドは、仮想 IP リソースを作成します。 <**0.0.0.0**>
をネットワークの使用可能なアドレスに置き換え、<**24**>
を CIDR サブネット マスクのビット数に置き換えます。 1 つのノードで実行します。
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<**0.0.0.0**> \
cidr_netmask=<**24**>
コロケーション制約を追加する
リソースを実行する場所の選択など、Pacemaker クラスターでのほぼすべての決定は、スコアを比較することによって行われます。 スコアはリソースごとに計算され、クラスター リソース マネージャーでは、特定のリソースのスコアが最も高いノードが選択されます。 (ノードにリソースの負のスコアがある場合、そのノードではリソースを実行できません。) 制約を使用してクラスターの決定を操作できます。 制約にはスコアがあります。 制約のスコアが INFINITY より低い場合、これは単なる推奨設定です。 INFINITY のスコアは、それが必要であることを意味します。 可用性グループと仮想 IP リソースのプライマリが同じホスト上で実行されるようにするため、INFINITY のスコアを持つコロケーション制約を定義します。
プライマリ ノードと同じノードで実行されるように仮想 IP のコロケーション制約を設定するには、1 つのノードで次のコマンドを実行します。
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
順序制約を追加する
コロケーション制約には、暗黙的な順序制約があります。 これにより、可用性グループ リソースが移動する前に、仮想 IP リソースが移動します。 既定では、イベントの順序は次のとおりです。
- ユーザーは、ノード 1 からノード 2 の可用性グループのプライマリに
resource migrate
を発行します。
- 仮想 IP リソースがノード 1 で停止します。
- 仮想 IP リソースがノード 2 で開始します。 この時点で、IP アドレスは一時的にノード 2 を指しますが、ノード 2 はフェールオーバー前のセカンダリのままです。
- ノード 1 の可用性グループ マスターは降格されます。
- ノード 2 の可用性グループは、マスターに昇格されます。
IP アドレスが事前フェールオーバー セカンダリのノードを一時的に指さないようにするには、順序制約を追加します。
順序制約を追加するには、1 つのノードで次のコマンドを実行します。
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
重要
クラスターを構成し、可用性グループをクラスター リソースとして追加した後は、Transact-SQL を使用して可用性グループ リソースをフェールオーバーすることはできません。 Linux 上の SQL Server クラスター リソースは、Windows Server フェールオーバー クラスター (WSFC) ほど、オペレーティング システムと緊密に結合されていません。 SQL Server サービスでは、クラスターの存在は認識されません。 すべてのオーケストレーションは、クラスター管理ツールを使用して実行されます。 SLES では crm
を使います。
crm
を使用して可用性グループの手動フェールオーバーを行います。 Transact-SQL を使用してフェールオーバーを開始しないでください。 詳細については、フェールオーバーに関するページを参照してください。
詳細については、次を参照してください。
関連するコンテンツ
ロードマップ
高可用性のために Linux サーバー上に可用性グループを作成する手順は、Windows Server フェールオーバー クラスターでの手順とは異なります。 以下に、おおまかな手順を説明します。
SQL Server on Linux のインストール ガイド。
Linux で高可用性を実現するために SQL Server の Always On 可用性グループを構成する
Pacemaker などのクラスター リソース マネージャーを構成します。 これらの手順については、この記事で説明します。
クラスター リソース マネージャーを構成する方法は、特定の Linux ディストリビューションによって異なります。
重要
運用環境では、高可用性を実現するためにフェンシング エージェントが必要です。 この記事の例では、フェンス エージェントは使用しません。 これらはテストと検証専用です。
Linux クラスターでは、フェンスを使用して、クラスターが既知の状態に戻されます。 フェンスを構成する方法は、ディストリビューションと環境によって異なります。 現時点では、一部のクラウド環境ではフェンスを利用できません。
フェンスは通常、オペレーティング システムで実装され、環境に依存します。 フェンスの取扱説明はオペレーティング システムのディストリビューターが提供するドキュメントにあります。
可用性グループをクラスターのリソースとして追加します。
すべてのノードで、ファイアウォールのポートを開きます。 Pacemaker 高可用性サービス、SQL Server インスタンス、および可用性グループ エンドポイント用にポートを開きます。 SQL Server が実行されているサーバーの既定の TCP ポートは 1433
です。
sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload
また、ファイアウォールを無効にすることもできますが、これは運用環境ではお勧めされません。
sudo ufw disable
Pacemaker パッケージをインストールします。 すべてのノードで、Ubuntu 20.04 に対して次のコマンドを実行します。 以前のバージョンへのインストールについて詳しくは、「Ubuntu HA - MS SQL Server on Azure (Ubuntu HA - Azure での MS SQL Server)」を参照してください。
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
Pacemaker と Corosync のパッケージをインストールしたときに作成された既定のユーザー用のパスワードを設定します。 すべてのノードで同じパスワードを使います。
sudo passwd hacluster
クラスターを作成する
クラスターを作成する前に、プライマリ サーバーで認証キーを作成し、それを AG に参加する他のサーバーにコピーする必要があります。
次のスクリプトを使って、プライマリ サーバーに認証キーを作成します。
sudo corosync-keygen
scp
を使って、生成されたキーを他のサーバーにコピーできます。
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
クラスターを作成するには、プライマリ サーバー上の /etc/corosync/corosync.conf
ファイルを編集します。
sudo vim /etc/corosync/corosync.conf
corosync.conf
ファイルは次の例のようになります。
totem {
version: 2
cluster_name: agclustername
transport: udpu
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: server-01
nodeid: 1
ring0_addr: 10.0.0.4
}
node {
name: server-02
nodeid: 2
ring0_addr: 10.0.0.5
}
node {
name: server-03
nodeid: 3
ring0_addr: 10.0.0.6
}
}
他のノード上の corosync.conf
ファイルを置き換えます。
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
pacemaker
と corosync
の各サービスを再起動します。
sudo systemctl restart pacemaker corosync
クラスターの状態を確認し、構成を確認します。
sudo crm status
複数のネットワーク インターフェイス (NIC) に関する考慮事項
複数の NIC を使用しているサーバーで高可用性を設定する場合は、次の推奨事項に従います。
hosts
ファイルが、複数の NIC のサーバー IP アドレスを各ノード上の Linux サーバーのホスト名に解決するように設定されていることを確認します。
Pacemaker を使用するクラスターを設定する場合、サーバーのホスト名を使用することで、すべての NIC の構成を設定するように Corosync を構成する必要があります。 Pacemaker または Corosync の通信は、1 つの NIC 経由でのみ必要です。 Pacemaker クラスターが構成されたら、corosync.conf
ファイル内の構成を変更し、Pacemaker または Corosync の通信専用に使用する NIC の IP アドレスを更新します。
corosync.conf
ファイル内に指定された <hostname>
は、逆引き参照 (ping -a <ip_address>
) の実行時に提供された出力と同じにする必要があり、ホストで構成された短い名前にする必要があります。 hosts
ファイルが、名前解決に対して適切な IP アドレスを表していることも確認します。
corosync.conf
ファイル対する変更の例を次に示します。
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Pacemaker クラスター ベンダーは、サポートされているクラスター セットアップ用に構成されたフェンシング デバイスを使用して、障害が発生したノードをフェンシングする必要があります。 クラスター リソース マネージャーがノードまたはノード上のリソースの状態を判断できない場合は、、フェンシングによりクラスターが再び既知の状態になります。
リソース レベルのフェンスにより、障害が発生した場合でもデータの破損が発生しないようにします。 たとえば DRBD (分散レプリケートされたブロックデバイス) でリソース レベルのフェンスを使用して、通信リンクがダウンしたときにノード上のディスクを期限切れとしてマークすることができます。
ノード レベルのフェンスでは、ノードによってリソースが実行されないことが保証されます。 これはノードをリセットすることによって行われ、Pacemaker の実装は STONITH と呼ばれます。 Pacemaker では、サーバーの無停電電源装置や管理インターフェイス カードなど、さまざまな種類のフェンス デバイスがサポートされています。
詳細については、「ゼロから始める Pacemaker クラスター」および「フェンスと STONITH」をご覧ください。
ノード レベルのフェンス構成は環境に大きく依存しているため、このチュートリアルでは無効にします (後で構成できます)。 プライマリ ノードで次のスクリプトを実行します。
sudo crm configure property stonith-enabled=false
この例では、フェンシングを無効にするのは、テスト目的の場合だけです。 運用環境で Pacemaker を使用する予定がある場合は、環境に応じて フェンシングの実装を計画し、有効にしておく必要があります。 特定のディストリビューションのフェンス エージェントに関する詳細は、オペレーティング システム ベンダーにお問い合わせください。
クラスター プロパティ cluster-recheck-interval を設定する
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
を小さい値に設定することはお勧めしません。
プロパティ値を 2 minutes
に更新するには、次を実行します。
sudo crm configure property cluster-recheck-interval=2min
既に Pacemaker クラスターによって管理されている可用性グループ リソースがある場合、Pacemaker パッケージ 1.1.18-11.el7 では、値が false
の場合の start-failure-is-fatal
クラスター設定の動作変更が導入されました。 この変更は、フェールオーバー ワークフローに影響します。 プライマリ レプリカで障害が発生した場合、クラスターは使用可能なセカンダリ レプリカのいずれかにフェールオーバーする必要があります。 代わりに、クラスターが失敗したプライマリ レプリカを起動しようとしていることがユーザーに通知されます。 そのプライマリが永久に停止したためにオンラインにならない場合は、クラスターが別の使用可能なセカンダリ レプリカにフェールオーバーすることはありません。 この変更により、以前に start-failure-is-fatal
を設定するために推奨されていた構成が有効ではなくなったため、この設定を既定値の true
に戻す必要があります。
さらに、failure-timeout
プロパティを含めるには、AG リソースを更新する必要があります。
プロパティ値を true
に更新するには、次を実行します。
sudo crm configure property start-failure-is-fatal=true
既存の AG リソース プロパティ failure-timeout
を 60s
に更新して、次を実行します (ag1
は可用性グループ リソースの名前に置き換えてください)。
sudo crm configure meta failure-timeout=60s
Pacemaker との統合のために SQL Server リソース エージェントをインストールする
すべてのノードで次のコマンドを実行します。
sudo apt-get install mssql-server-ha
Pacemaker 用の SQL Server ログインを作成する
すべての SQL Server インスタンスで、Pacemaker 用のサーバー ログインを作成します。
次の Transact-SQL がログインを作成します。
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
可用性グループの作成時、Pacemaker ユーザーには、可用性グループを作成した後かつその可用性グループにノードを追加する前に、可用性グループに対するALTER
、CONTROL
、VIEW DEFINITION
権限が必要です。
すべての SQL Server インスタンスで、SQL Server ログインに使用される資格情報を保存します。
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo 'ComplexP@$$w0rd!' >> ~/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 # Only readable by root
可用性グループのリソースを作成する
可用性グループ リソースを作成するには、sudo crm configure
コマンドを使ってリソースのプロパティを設定します。 次の例では、ag1
という名前の可用性グループに対して、ocf:mssql:ag
というプライマリ/レプリカ タイプのリソースを作成します。
~$ sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
仮想 IP リソースを作成する
仮想 IP アドレス リソースを作成するには、1 つのノードで次のコマンドを実行します。 ネットワークから使用可能な静的 IP アドレスを使用します。 スクリプトを実行する前に、< ... >
の間の値を有効な IP アドレスに置き換えます。
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
Pacemaker では、仮想サーバー名に相当するものはありません。 IP アドレスを使用せず、文字列のサーバー名を指す接続文字列を使用するには、IP リソース アドレスと必要な仮想サーバー名を DNS に登録します。 DR 構成の場合は、必要な仮想サーバー名と IP アドレスを、プライマリ サイトと DR サイトの両方の DNS サーバーに登録します。
コロケーション制約を追加する
リソースを実行する場所の選択など、Pacemaker クラスターでのほぼすべての決定は、スコアを比較することによって行われます。 スコアはリソースごとに計算され、クラスター リソース マネージャーでは、特定のリソースのスコアが最も高いノードが選択されます。 (ノードにリソースの負のスコアがある場合、そのノードではリソースを実行できません。)
制約を使用して、クラスターの決定を構成します。 制約にはスコアがあります。 制約のスコアが INFINITY より低い場合、これは単なる推奨設定です。 INFINITY のスコアは、それが必須であることを意味します。
プライマリ レプリカと仮想 IP リソースを同じホスト上に配置するには、INFINITY のスコアを持つコロケーション制約を定義します。 コロケーション制約を追加するには、1 つのノードで次のコマンドを実行します。
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
順序制約を追加する
コロケーション制約には、暗黙的な順序制約があります。 これにより、可用性グループ リソースが移動する前に、仮想 IP リソースが移動します。 既定では、イベントの順序は次のとおりです。
ユーザーは、node1
から node2
の可用性グループのプライマリに pcs resource move
を発行します。
仮想 IP リソースが node1
で停止します。
仮想 IP リソースが node2
で開始します。
この時点で、IP アドレスは一時的に node2
を指しますが、node2
はフェールオーバー前のセカンダリのままです。
node1
の可用性グループのプライマリは、セカンダリに降格されます。
node2
の可用性グループのセカンダリは、プライマリに昇格されます。
IP アドレスが事前フェールオーバー セカンダリのノードを一時的に指さないようにするには、順序制約を追加します。
順序制約を追加するには、1 つのノードで次のコマンドを実行します。
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
クラスターを構成し、可用性グループをクラスター リソースとして追加した後は、Transact-SQL を使用して可用性グループ リソースをフェールオーバーすることはできません。 Linux 上の SQL Server クラスター リソースは、Windows Server フェールオーバー クラスター (WSFC) ほど、オペレーティング システムと緊密に結合されていません。 SQL Server サービスでは、クラスターの存在は認識されません。 すべてのオーケストレーションは、クラスター管理ツールを使用して実行されます。
関連するコンテンツ