適用対象: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 に置き換えます。
Microsoft では、データ移動、AG、SQL Server の各コンポーネントをサポートしています。 DH2i は、クラスターとクォーラム管理を含む DxEnterprise 製品のサポートを担当します。
DxOperator は、カスタム リソース定義を使用して DxEnterprise クラスターのデプロイを自動化する Kubernetes のソフトウェア拡張機能です。 DxEnterprise は、Kubernetes の SQL Server AG ワークロードの自動フェールオーバーを作成、構成、管理、および提供するためのすべてのインストルメンテーションを備えています。 無料の DxEnterprise ソフトウェア ライセンスに登録できます。 詳細については、 DxOperator クイック スタート ガイドを参照してください。
この記事に記載された手順を用いて、StatefulSet をデプロイし、DH2i DxOperator を使用して、AKS でホストされる 3 個のレプリカで AG を作成および構成する方法について説明します。
このチュートリアルは、次の手順で構成されます。
- mssql-conf 設定を使用して AKS クラスターに
configmapオブジェクトを作成する - DxOperator のインストール
- シークレットオブジェクトを作成する
- YAML ファイルを使用して 3 個のレプリカ SQL AG を配置する
- SQL Serverに接続する
前提条件
Azure Kubernetes Service (AKS) または Kubernetes クラスター。
AG 機能とトンネルが有効な DxEnterprise ライセンス。 詳細については、非運用環境での使用に関する 開発者向けエディション 、または運用ワークロード用 の DxEnterprise ソフトウェア を参照してください。
configmap オブジェクトを作成する
AKS で、要件に応じた mssql-conf 設定を持つ
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 ファイルをダウンロードし、その後 YAML ファイルを適用する必要があります。
次のコマンドを使用して、AG の設定方法を説明する YAML を配置します。
DxOperator.yamlなどのカスタム名でファイルを保存します。curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml kubectl apply -f DxOperator.yamlオペレーターをインストールしたら、SQL Server コンテナーのデプロイ、可用性グループの構成、レプリカの定義、DxEnterprise クラスターのデプロイと構成を行うことができます。 これは、
DxEnterpriseSqlAg.yamlというサンプル デプロイメント YAML ファイルです。これは、要件に合わせて変更できます。apiVersion: dh2i.com/v1 kind: DxEnterpriseSqlAg metadata: name: contoso-sql spec: synchronousReplicas: 3 asynchronousReplicas: 0 # ConfigurationOnlyReplicas are only allowed with availabilityGroupClusterType set to EXTERNAL configurationOnlyReplicas: 0 availabilityGroupName: AG1 # Listener port for the availability group (uncomment to apply) availabilityGroupListenerPort: 51433 # For a contained availability group, add the option CONTAINED availabilityGroupOptions: null # Valid options are EXTERNAL (automatic failover) and NONE (no automatic failover) availabilityGroupClusterType: EXTERNAL createLoadBalancers: true template: metadata: labels: label: example annotations: annotation: example spec: dxEnterpriseContainer: image: "docker.io/dh2i/dxe:latest" imagePullPolicy: Always acceptEula: true clusterSecret: dxe vhostName: VHOST1 joinExistingCluster: false # QoS - guaranteed (uncomment to apply) #resources: #limits: #memory: 1Gi #cpu: '1' # Configuration options for the required persistent volume claim for DxEnterprise volumeClaimConfiguration: storageClassName: null resources: requests: storage: 1Gi mssqlServerContainer: image: "mcr.microsoft.com/mssql/server:latest" imagePullPolicy: Always mssqlSecret: mssql acceptEula: true mssqlPID: Developer mssqlConfigMap: mssql-config # QoS - guaranteed (uncomment to apply) #resources: #limits: #memory: 2Gi #cpu: '2' # Configuration options for the required persistent volume claim for SQL Server volumeClaimConfiguration: storageClassName: null resources: requests: storage: 2Gi # Additional side-car containers, such as mssql-tools (uncomment to apply) #containers: #- name: mssql-tools #image: "mcr.microsoft.com/mssql-tools" #command: [ "/bin/sh" ] #args: [ "-c", "tail -f /dev/null" ]DxEnterpriseSqlAg.yamlファイルをデプロイします。kubectl apply -f DxEnterpriseSqlAg.yaml
可用性グループリスナーを作成する
前の手順でセレクターの値を metadata.name に設定することで、次の YAML を適用してロード バランサーを追加します。 この例の場合、contoso-sql です。
apiVersion: v1
kind: Service
metadata:
name: contoso-cluster-lb
spec:
type: LoadBalancer
selector:
dh2i.com/entity: contoso-sql
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 pods
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 87m
PS /home/aravind> 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 コンテナーをデプロイする