Azure Kubernetes Service'te DH2i DxOperator ile Kubernetes'te kullanılabilirlik gruplarını dağıtma

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu öğreticide, DH2i DxOperator kullanılarak Azure Kubernetes Service (AKS) kümesine dağıtılan SQL Server Linux tabanlı kapsayıcılar için SQL Server AlwaysOn kullanılabilirlik gruplarının (AG) nasıl yapılandırılacağı açıklanmaktadır. Bu prosedürler Azure Red Hat OpenShift kümeleri için de geçerlidir. Temel ayrım, Azure Red Hat OpenShift kümesinin dağıtılması ve ardından komutların aşağıdaki adımlarda yerine kubectloc koyulmasıdır.

Bu makaledeki adımları kullanarak StatefulSet nasıl dağıtılacağını ve DH2i DxOperator ile AKS'te barındırılan üç replika ile bir AG oluşturup yapılandırmayı öğreniyorsunuz.

Bu öğretici aşağıdaki adımlardan oluşur:

  • mssql-conf ayarlarıyla AKS kümesinde nesne configmap oluşturma
  • DxOperator'ı yükleme
  • Gizli nesneler oluşturma
  • YAML dosyası kullanarak üç replikalı SQL Server kullanılabilirlik grubu dağıtın
  • SQL Server’a bağlanma

Prerequisites

  • Azure Kubernetes Service (AKS) veya Kubernetes kümesi.

  • AG özellikleri ve tünelleri etkinleştirilmiş geçerli bir DxEnterprise lisansı. Daha fazla bilgi için üretim dışı kullanım için geliştirici sürümüne veya üretim iş yükleri için DxEnterprise yazılımına bakın.

configmap Nesneyi oluşturma

  1. AKS'de, gereksinimlerinize göre configmap ayarlarına sahip olan nesnesini oluşturun. Bu örnekte, aşağıdaki parametrelerle mssqlconfig.yaml adlı bir dosya kullanarak configmap oluşturursunuz.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mssql-config
    data:
      mssql.conf: |
        [EULA]
        accepteula = Y
    
        [sqlagent]
        enabled = true
    
  2. Nesneyi aşağıdaki komutu çalıştırarak oluşturun.

    kubectl apply -f ./mssqlconfig.yaml
    

Gizli nesneler oluşturma

SQL Server sa parolasını depolamak için bir gizli anahtar oluşturun.

kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"

Caution

Parolanız varsayılan SQL Server password ilkesini izlemelidir. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

DH2i'nin lisans anahtarını depolamak için bir gizli oluşturun. Geliştirici lisansı almak için DH2i'nin web sitesini ziyaret edin. Aşağıdaki örnekte XXXX-XXXX-XXXX-XXXX değerini lisans anahtarınızla değiştirin.

kubectl create secret generic dxe --from-literal=DX_PASSKEY="<password>" --from-literal=DX_LICENSE=XXXX-XXXX-XXXX-XXXX

DxOperator'ı yükleme

DxOperator'u kurmak için, aşağıdaki örneği kullanarak DxOperator YAML dosyasını indirin ve ardından YAML dosyasını uygulayın.

  1. AG kurulumunu açıklayan YAML dosyasını aşağıdaki komutu kullanarak dağıtın. Dosyayı gibi DxOperator.yamlözel bir adla kaydedin.

    curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml
    kubectl apply -f DxOperator.yaml
    
  2. Operatörü kurduktan sonra SQL Server konteynerlerini dağıtabilir, kullanılabilirlik grubunu yapılandırabilir, replikaları tanımlayabilir ve DxEnterprise kümesini dağıtıp yapılandırabilirsiniz. Aşağıdaki örnek dağıtım YAML dosyasını, DxSqlAg.yamlgereksinimlerinize uygun şekilde değiştirin.

    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" ]
    
  3. DxSqlAg.yaml dosyasını dağıtın.

    kubectl apply -f DxSqlAg.yaml
    

Kullanılabilirlik grubu dinleyicisi oluşturma

  1. Dosyanızdaki availabilityGroupListenerPort değeri DxSqlAg.yaml güncelleyin:

    spec:
      sqlAgConfiguration:
        availabilityGroupListenerPort: 51433
    
  2. Dosyayı uygulayın:

    kubectl apply -f DxSqlAg.yaml
    
  3. Dinleyici için bir yük dengeleyici eklemek için aşağıdaki YAML uygulanır.

    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
    
  4. Hizmetlerin ve yük dengeleyicilerin çalıştığını doğrulayın.

    kubectl get services
    

    Çıktı aşağıdaki örneğe benzer:

    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
    
  5. Üç SQL Server podunun hepsinin çalıştığını doğrulayın.

    kubectl get pods
    

    Çıktı aşağıdaki örneğe benzer:

    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