Dela via


Distribuera tillgänglighetsgrupper på Kubernetes med DH2i DxOperator i Azure Kubernetes Service

gäller för:SQL Server – Linux

I den här självstudien beskrivs hur du konfigurerar SQL Server AlwaysOn-tillgänglighetsgrupper (AGs) för SQL Server Linux-baserade containrar som distribuerats till ett AKS-kluster (Azure Kubernetes Service) med hjälp av DH2i DxOperator. Dessa procedurer gäller även för Azure Red Hat OpenShift-kluster. den primära skillnaden är distributionen av ett Azure Red Hat OpenShift-kluster, följt av att kubectl ersätta kommandon med oc i följande steg.

  • Microsoft har stöd för dataförflyttning, tillgänglighetsgrupp (AG), och SQL Server-komponenter. DH2i ansvarar för support av DxEnterprise-produkten, som omfattar kluster- och kvorumhantering.

  • DxOperator är ett programvarutillägg till Kubernetes som använder anpassade resursdefinitioner för att automatisera distributionen av DxEnterprise-kluster. DxEnterprise tillhandahåller sedan all instrumentation för att skapa, konfigurera, hantera och tillhandahålla automatisk redundans för SQL Server AG-arbetsbelastningar i Kubernetes. Du kan registrera dig för en kostnadsfri DxEnterprise-programvarulicens. Mer information finns i snabbstartsguiden för DxOperator.

Med hjälp av stegen i den här artikeln lär du dig hur du distribuerar en StatefulSet och använder DH2i DxOperator för att skapa och konfigurera en tillgänglighetsgrupp (AG) med tre repliker, hostade på AKS (Azure Kubernetes Service).

Den här självstudien består av följande steg:

  • Skapa ett configmap objekt i AKS-kluster med mssql-conf-inställningar
  • Installera DxOperator
  • Skapa ett hemligt objekt
  • Distribuera 3 replik-SQL AG med YAML-fil
  • Ansluta till SQL Server

Förutsättningar

  • Ett Azure Kubernetes Service-kluster (AKS) eller Kubernetes-kluster.

  • En giltig DxEnterprise-licens med AG-funktioner och tunnlar aktiverade. Mer information finns i developer edition för användning utan produktion eller DxEnterprise-programvara för produktionsarbetsbelastningar.

Skapa objektet configmap

  1. I AKS skapar du configmap objektet, som har mssql-conf-inställningar baserat på dina krav. I det här exemplet skapar configMapdu , med hjälp av en fil som heter mssqlconfig.yaml med följande parametrar.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mssql-config
    data:
      mssql.conf: |
        [EULA]
        accepteula = Y
    
        [sqlagent]
        enabled = true
    
  2. Skapa objektet genom att köra följande kommando.

    kubectl apply -f ./mssqlconfig.yaml
    

Skapa hemliga objekt

Skapa en hemlighet för att lagra sa lösenordet för SQL Server.

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

Försiktighet

Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

Skapa en hemlighet för att lagra licensnyckeln för DH2i. Besök DH2is webbplats för att få en utvecklarlicens. Ersätt XXXX-XXXX-XXXX-XXXX i följande exempel med din licensnyckel.

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

Installera DxOperator

Om du vill installera DxOperator måste du ladda ned YAML-filen DxOperator med hjälp av följande exempel och sedan tillämpa YAML-filen.

  1. Distribuera YAML som beskriver hur du konfigurerar en AG med hjälp av följande kommando. Spara filen med ett anpassat namn, till exempel DxOperator.yaml.

    curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml
    kubectl apply –f DxOperator.yaml
    
  2. När du har installerat operatorn kan du distribuera SQL Server-containrar, konfigurera tillgänglighetsgruppen, definiera repliker, distribuera och konfigurera DxEnterprise-klustret. Här är en YAML-exempeldistributionsfil med namnet DxEnterpriseSqlAg.yaml, som du kan ändra så att den passar dina behov.

    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. DxEnterpriseSqlAg.yaml Distribuera filen.

    kubectl apply -f DxEnterpriseSqlAg.yaml
    

Skapa en tillgänglighetsgrupplyssnare

Använd följande YAML för att lägga till en lastbalanserare genom att ställa in väljaren till värdet metadata.name som i föregående steg. I det här exemplet är det 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

Kontrollera tilldelningarna för distribution och lastbalanserare.

kubectl get pods
kubectl get services

Du bör se utdata som liknar följande exempel.

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