SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server on Linux の AlwaysOn 可用性グループで自動フェールオーバーが可能な構成

leave a comment

最近、クラスターレス可用性グループしか触っていなかったのですが、Azure で Netsted VM ができるようになり、検証環境のリソースが取れるようになったので、久しぶりに SQL Server on Linux の Pacemaker を使用した可用性グループを構築していたところ、いろいろと情報が追加されていたので軽くメモを。

重要なドキュメントしては High availability and data protection for availability group configurations が大幅に更新されていることでしょうか。

ドキュメントが公開された当初と比較すると、かなりの情報が追加されているように思えます。
読んでいて重要だと思ったポイントが、2 台構成の場合の次の記載でしょうか。

This configuration enables data protection. Like the other availability group configurations, it can enable read scale-out. The two synchronous replicas configuration does not provide automatic high availability.

2 台構成の場合、データの複製による保護は実施されるのですが、自動的な高可用性 (自動フェールオーバーによるサービスの継続) はサポートされていないようですね。
実際に試してみたのですが、2 台構成の場合は、自動フェールオーバーが動作せず、3 台構成の場合は、自動フェールオーバーにより、可用性が担保されるような動作となっていました。
(ドキュメント上は、2 台構成の場合でも自動フェールオーバーするが、required_synchronized_secondaries_to_commit の設定によってアクセスができないというように見受けられたのですが、RC2 ではプライマリの切り替えを自動的に実行することが私はできませんでした)
制限なしの自動フェールオーバーについては、3 台構成時に、required_synchronized_secondaries_to_commit = 1 の場合となっているので、Linux で冗長構成をとる場合にはこの辺を気をつけておかないと行けなさそうですね。
また、可用性グループのクラスターリソースを使用している場合、required_synchronized_secondaries_to_commit の変更については、SQL ではなく、pcs コマンド経由で実施する必要があることも記載が行われています。
SQL で変更してもクラスターリソース側の動作で定期的に変更されてしまうようです。

これについては Understand SQL Server resource agent for pacemaker に記載されています。
CLUSTER_TYPE = EXTERNAL の AlwaysOn 可用性グループは、ノードの正常性や、プライマリ / セカンダリのフェールオーバーは、クラスター側の動作で完全に管理がされており、SSMS からフェールオーバーを実行しようとしても、操作がグレーアウトされています。
image
「ALTER AVAILABILITY GROUP <可用性グループ名> FAILOVER」を実行しても、次のメッセージが表示され、フェールオーバーを実施することができないようになっています。

メッセージ 47104、レベル 16、状態 1、行 1
外部のクラスター タイプが含まれるため、可用性グループ ‘ag1’ に対してこの操作を実行できません。クラスター管理ツールを使用して操作を実行してください。

CTP の段階では、この辺の実装が製品版に近い形では実施されていなかったと思いますので、製品リリースに向けて情報をキャッチアップする必要がありそうですね。

Share

Written by Masayuki.Ozawa

8月 15th, 2017 at 11:41 pm

Leave a Reply