適用対象:Linux 上の SQL Server
このチュートリアルでは、DH2i DxOperator を使用して、Azure Kubernetes Service (AKS) クラスターにデプロイされた SQL Server Linux ベースのコンテナー用に SQL Server Always On 可用性グループ (AG) を構成する方法について説明します。 これらの手順はAzure Red Hat OpenShiftクラスターにも適用されます。 主な違いは、Azure Red Hat OpenShiftクラスターを展開し、その後のステップでkubectlコマンドをocに置き換える点です。
この記事の手順を用いて、StatefulSetの展開方法を学び、DH2i DxOperatorを使って3つのレプリカを持つAGを作成・設定し、AKS上でホストします。
このチュートリアルは、次の手順で構成されます。
- mssql-conf 設定を使用して AKS クラスターに
configmapオブジェクトを作成する - DxOperator のインストール
- シークレット オブジェクトを作成する
- YAMLファイルを使って3レプリカのSQL Server可用性グループを展開します
- SQL Serverに接続する
前提条件
Azure Kubernetes Service (AKS) または Kubernetes クラスター。
AG 機能とトンネルが有効な DxEnterprise ライセンス。 詳細については、非運用環境での使用に関する 開発者向けエディション 、または運用ワークロード用 の DxEnterprise ソフトウェア を参照してください。
configmap オブジェクトを作成する
AKS で、要件に応じた
configmap設定を持つ オブジェクトを作成します。 この例では、以下のパラメータを持つconfigmapというファイルを使ってmssqlconfig.yamlを作成します。apiVersion: v1 kind: ConfigMap metadata: name: mssql-config data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = true次のコマンドを実行してオブジェクトを作成します。
kubectl apply -f ./mssqlconfig.yaml
シークレット オブジェクトを作成する
SQL Server の sa パスワードを格納するシークレットを作成します。
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"
Caution
パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 パスワードには最大 128 文字まで使用できます。 可能な限り長く複雑なパスワードを使用してください。
DH2i のライセンス キーを格納するシークレットを作成します。
DH2i の Web サイト にアクセスして、開発者用ライセンスを取得します。 次の例では、XXXX-XXXX-XXXX-XXXX をご自分の ライセンス キー に置き換えてください。
kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX
DxOperator のインストール
DxOperatorをインストールするには、以下の例を使ってDxOperatorのYAMLファイルをダウンロードし、そのファイルを適用してください。
AGの設定方法を説明するYAMLファイルを次のコマンドでデプロイします。
DxOperator.yamlなどのカスタム名でファイルを保存します。curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlオペレーターをインストールした後、SQL Serverコンテナの展開、可用性グループの設定、レプリカの定義、DxEnterpriseクラスターの展開・設定が可能です。 以下のサンプルデプロイメント
DxSqlAg.yamlYAMLファイルをご要望に合わせて変更してください。apiVersion: dh2i.com/v1 kind: DxSqlAg metadata: name: contoso-sql spec: sqlAgConfiguration: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Adds auto-generated load balancers to serviceTemplates for easy cluster access # For more customization, use the serviceTemplates section below #createLoadBalancers: true # Listener port for the availability group (uncomment to apply) #availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED #availabilityGroupOptions: CONTAINED # Disables automatic availability mode switching when scaling down #disableModeSwitching: true statefulSetSpec: podspec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 # Configuration options for the required persistent volume claim for DxEnterprise #volumeClaimConfiguration: # Set custom storage class for DxE PVC #storageClassName: example-class mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:2025-latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer # Set a non-default SQL Server port. DxOperator will auto-detect # the port from other sources too, such as mssqlConfigMap mssqlTcpPort: 51444 # The MSSQL configMap (mssql.conf file) mssqlConfigMap: mssql-config # Configuration options for the required persistent volume claim for SQL Server #volumeClaimConfiguration: # resources: # requests: # storage: 2Gi # Additional pod containers, such as mssql-tools #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]DxSqlAg.yamlファイルをデプロイします。kubectl apply -f DxSqlAg.yaml
可用性グループリスナーを作成する
availabilityGroupListenerPortファイルのDxSqlAg.yaml値を更新してください:spec: sqlAgConfiguration: availabilityGroupListenerPort: 51433ファイルを適用します。
kubectl apply -f DxSqlAg.yaml以下のYAMLを適用してリスナー用のロードバランサーを追加します。
apiVersion: v1 kind: Service metadata: name: contoso-cluster-lb spec: type: LoadBalancer selector: dh2i.com/entity-name: contoso-sql # This label points to whichever pod is the active Vhost member dh2i.com/active-vhost-vhost1: "true" ports: - name: sql protocol: TCP port: 1433 targetPort: 51444 - name: listener protocol: TCP port: 51433 targetPort: 51433 - name: dxe protocol: TCP port: 7979 targetPort: 7979サービスやロードバランサーが稼働しているか確認してください。
kubectl get services出力は次の例のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE contoso-cluster-lb LoadBalancer 10.1.0.21 172.212.20.29 1433:30484/TCP,14033:30694/TCP,7979:30385/TCP 3m18s contoso-sql-0 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m contoso-sql-0-lb LoadBalancer 10.1.0.210 4.255.19.171 7979:32374/TCP,1433:32444/TCP 79m contoso-sql-1 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m contoso-sql-1-lb LoadBalancer 10.1.0.158 4.255.19.201 7979:30152/TCP,1433:30868/TCP 79m contoso-sql-2 ClusterIP None <none> 7979/TCP,7980/TCP,7981/UDP,5022/TCP,1433/TCP 79m contoso-sql-2-lb LoadBalancer 10.1.0.159 4.255.19.218 7979:30566/TCP,1433:31463/TCP 79m kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 87m3つのSQL Serverポッドすべてが稼働しているか確認してください。
kubectl get pods出力は次の例のようになります。
NAME READY STATUS RESTARTS AGE contoso-sql-0 2/2 Running 0 74m contoso-sql-1 2/2 Running 0 74m contoso-sql-2 2/2 Running 0 74m
関連するコンテンツ
- Rancher を使用して AZURE Kubernetes Service に DH2i DxOperator を使用して SQL Server コンテナーと可用性グループをデプロイする
- Kubernetes で DH2i DxEnterprise を使用して可用性グループをデプロイする
クイックスタート: Azure または Red Hat OpenShift で SQL Server コンテナー クラスターをデプロイする方法 - StatefulSets を使用して Kubernetes に SQL Server Linux コンテナーをデプロイする