SQL Server コンテナーの高可用性

適用対象:Linux 上の SQL Server

Kubernetes でSQL Server インスタンスをネイティブに作成して管理します。

SQL Server を Kubernetes によって管理される docker コンテナーにデプロイします。 Kubernetes では、クラスター ノードで障害が発生した場合に、SQL Server インスタンスを持つコンテナーが自動的に回復する可能性があります。

SQL Server 2017 では、Kubernetes にデプロイできる Docker イメージが導入されています。 Kubernetes の永続ボリューム要求 (PVC) を使用して、イメージを構成できます。 Kubernetes は、コンテナー内のSQL Server プロセスを監視します。 プロセス、ポッド、コンテナー、またはノードで障害が発生した場合、Kubernetes は自動的に別のインスタンスをブートストラップし、ストレージに再接続します。

Kubernetes 上の SQL Server インスタンスを含むコンテナー

Kubernetes 1.6 以降では、"ストレージ クラス"、"永続ボリューム要求"、および "Azure ディスク ボリューム タイプ" がサポートされます。

この構成では、Kubernetes はコンテナー オーケストレーターの役割を果たします。

複数のノードにわたる永続ボリュームによってサポートされるレプリカ セット内の mssql-server コンテナーを実行するポッドにサービス経由で接続するアプリケーションを示す Kubernetes クラスター アーキテクチャの図。

上の図で、mssql-server は "ポッド" 内の SQL Server インスタンス (コンテナー) です。 レプリカ セットによって、ノード障害が発生した後でポッドが自動的に復旧されます。 アプリケーションがサービスに接続します。 このケースでは、サービスは、mssql-server の障害後も変化しない IP アドレスがホストされているロード バランサーを表します。

Kubernetes により、クラスター内のリソースが調整されます。 SQL Server インスタンス コンテナーをホストしているノードで障害が発生すると、SQL Server インスタンスを含む新しいコンテナーがブートストラップされ、同じ永続ストレージにアタッチされます。

SQL Server on Linux では、Kubernetes、OpenShift、DH2i 上のコンテナーがサポートされています。