Azure Kubernetes Service 上の DH2i DxOperator を使用して Kubernetes に可用性グループをデプロイする
適用対象: SQL Server - Linux
このチュートリアルでは、DH2i DxOperator を使って、Azure Kubernetes Service (AKS) Kubernetes クラスターにデプロイされた SQL Server Linux ベースのコンテナーに SQL Server Always On 可用性グループ (AG) を構成する方法について説明します。 これらの手順は、Azure Red Hat OpenShift クラスターにも適用できます。 主な違いは、Azure Red Hat OpenShift クラスターのデプロイメントであり、その後、次の手順で kubectl
コマンドを oc
に置き換えます。
Note
データ移動、AG、SQL Server コンポーネントは、Microsoft によってサポートされています。 DxEnterprise 製品のサポートは、クラスターとクォーラムの管理も含めて、DH2i によって行われます。 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
オブジェクトを作成します。 この例では、mssqlconfig.yaml
というファイルを次のパラメータとともに使用して、configMap
を作成します。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="Password123"
DH2i のライセンス キーを格納するシークレットを作成します。 DH2i の Web サイト にアクセスして、開発者用ライセンスを取得します。 次の例では、XXXX-XXXX-XXXX-XXXX
をご自分の ライセンス キー に置き換えてください。
kubectl create secret generic dxe --from-literal=DX_PASSKEY="Password123" --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