Aracılığıyla paylaş


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 yordamlar Azure Red Hat OpenShift kümeleri için de geçerlidir; birincil ayrım, Azure Red Hat OpenShift kümesinin dağıtımı ve ardından aşağıdaki adımlarda kubectl komutları yerine, oc komutlarının kullanılmasıdır.

  • Microsoft veri taşıma, AG ve SQL Server bileşenlerini destekler. DH2i, küme ve çekirdek yönetimini içeren DxEnterprise ürününün desteklenmesinden sorumludur.

  • DxOperator, Kubernetes'in DxEnterprise kümelerinin dağıtımını otomatikleştirmek için özel kaynak tanımlarını kullanan bir yazılım uzantısıdır. Ardından DxEnterprise, Kubernetes'teki SQL Server AG iş yükleri için otomatik yük devretme oluşturmak, yapılandırmak, yönetmek ve sağlamak için tüm araçları sağlar. Ücretsiz bir DxEnterprise yazılım lisansına kaydolabilirsiniz. Daha fazla bilgi için bkz. DxOperator Hızlı Başlangıç Kılavuzu.

Bu makalede belirtilen adımları kullanarak bir StatefulSet'i dağıtmayı ve DH2i DxOperator kullanarak AKS'de barındırılan üç replikayla bir AG (Erişilebilirlik Grubu) oluşturup yapılandırmayı öğrenin.

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ını kullanarak 3 çoğaltmalı SQL AG'yi dağıtma
  • SQL Server'a bağlanma

Önkoşullar

  • 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 configMap adlı bir dosya kullanarak mssqlconfig.yaml öğesini oluşturursunuz.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mssql-config
    data:
      mssql.conf: |
        [EULA]
        accepteula = Y
    
        [sqlagent]
        enabled = true
    
  2. Aşağıdaki komutu yürüterek nesnesini 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>"

Dikkat

Parolanız,SQL Server varsayılan parola ilkesine uygun olmalıdır. 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'ı yüklemek için aşağıdaki örneği kullanarak DxOperator YAML dosyasını indirmeniz ve ardından YAML dosyasını uygulamanız gerekir.

  1. Aşağıdaki komutu kullanarak AG'nin nasıl ayarlandığını açıklayan YAML'yi dağıtın. Dosyayı gibi DxOperator.yamlözel bir adla kaydedin.

    curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml
    kubectl apply –f DxOperator.yaml
    
  2. İşleci yükledikten sonra SQL Server kapsayıcılarını dağıtabilir, kullanılabilirlik grubunu yapılandırabilir, çoğaltmaları tanımlayabilir, DxEnterprise kümesini dağıtabilir ve yapılandırabilirsiniz. Burada, gereksinimlerinize uyacak şekilde değiştirebileceğiniz adlı DxEnterpriseSqlAg.yamlörnek bir dağıtım YAML dosyası verilmiştir.

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

    kubectl apply -f DxEnterpriseSqlAg.yaml
    

Kullanılabilirlik grubu dinleyicisi oluşturma

Önceki adımda seçiciyi değerine metadata.name ayarlayarak yük dengeleyici eklemek için aşağıdaki YAML'yi uygulayın. Bu örnekte, bu 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

Dağıtım ve yük dengeleyici atamalarını doğrulayın.

kubectl get pods
kubectl get services

Aşağıdaki örneğe benzer bir çıktı görmeniz gerekir.

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