Megosztás a következőn keresztül:


Rendelkezésre állási csoportok üzembe helyezése a Kubernetesen a DH2i DxOperator használatával az Azure Kubernetes Service-ben

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez az oktatóanyag bemutatja, hogyan konfigurálhatja az SQL Server Always On rendelkezésre állási csoportjait (AG-ket) egy Azure Kubernetes Service-fürtön üzembe helyezett SQL Server Linux-alapú tárolókhoz a DH2i DxOperator használatával. Ezek az eljárások az Azure Red Hat OpenShift-fürtökre is érvényesek; az elsődleges különbség egy Azure Red Hat OpenShift-fürt üzembe helyezése, majd a kubectl parancsok oc-re történő cseréje az alábbi lépésekben.

  • A Microsoft támogatja az adatáthelyezést, az AG-t és az SQL Server-összetevőket. A DH2i felelős a DxEnterprise termék támogatásáért, amely magában foglalja a klaszter- és kvórumkezelést.

  • A DxOperator a Kubernetes szoftverkiterjesztése, amely egyéni erőforrásdefiníciókkal automatizálja a DxEnterprise-fürtök üzembe helyezését. A DxEnterprise ezután minden olyan eszközt biztosít, amellyel automatikus feladatátvételt hozhat létre, konfigurálhat, kezelhet és biztosíthat az SQL Server AG számítási feladataihoz a Kubernetesben. Regisztrálhat egy ingyenes DxEnterprise szoftverlicencet. További információt a DxOperator rövid útmutatójában talál.

A cikkben ismertetett lépésekkel megtudhatja, hogyan helyezhet üzembe StatefulSetet, és hogyan használhatja a DH2i DxOperatort egy AG létrehozására és konfigurálására három replikával az AKS-ben.

Ez az oktatóanyag a következő lépésekből áll:

  • Az AKS-fürtön egy configmap objektum létrehozása mssql-conf beállításokkal.
  • A DxOperator telepítése
  • Titkos objektumok létrehozása
  • 3 replika SQL AG üzembe helyezése YAML-fájllal
  • Csatlakozás az SQL Serverhez

Előfeltételek

  • Azure Kubernetes Service (AKS) vagy Kubernetes-fürt.

  • Érvényes DxEnterprise-licenc, amelyen engedélyezve van az AG-funkciók és az alagutak. További információ: fejlesztői kiadás tesztelési célokra, vagy DxEnterprise szoftver termelési munkaterheléshez.

Az configmap objektum létrehozása

  1. Az AKS-ben hozza létre az configmap objektumot, amely az mssql-conf beállításaival rendelkezik a követelmények alapján. Ebben a példában a configMap létrehozásához a mssqlconfig.yaml fájlt használja, a következő paraméterekkel.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mssql-config
    data:
      mssql.conf: |
        [EULA]
        accepteula = Y
    
        [sqlagent]
        enabled = true
    
  2. Hozza létre az objektumot a következő parancs végrehajtásával.

    kubectl apply -f ./mssqlconfig.yaml
    

Titkos objektumok létrehozása

Hozzon létre egy titkos kulcsot az SQL Server jelszavának sa tárolásához.

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

Figyelmeztetés

A jelszónak az SQL Server alapértelmezett jelszóházirendetkell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.

Hozzon létre egy titkos kulcsot a DH2i licenckulcsának tárolásához. Fejlesztői licenc beszerzéséhez látogasson el a DH2i webhelyére . Az alábbi példában cserélje le a XXXX-XXXX-XXXX-XXXX elemet a licenckulcsával.

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

A DxOperator telepítése

A DxOperator telepítéséhez töltse le a DxOperator YAML-fájlt az alábbi példával, majd alkalmazza a YAML-fájlt.

  1. Telepítse az AG beállítását leíró YAML-t az alábbi paranccsal. Mentse a fájlt egy egyéni névvel, például DxOperator.yaml.

    curl -L https://dxoperator.dh2i.com/dxesqlag/files/v1.yaml -o DxOperator.yaml
    kubectl apply –f DxOperator.yaml
    
  2. Az operátor telepítése után SQL Server-tárolókat helyezhet üzembe, konfigurálhatja a rendelkezésre állási csoportot, replikákat definiálhat, üzembe helyezheti és konfigurálhatja a DxEnterprise fürtöt. Íme egy minta üzembe helyezési YAML-fájl, amelynek a neve DxEnterpriseSqlAg.yamla követelményeknek megfelelően módosítható.

    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. Telepítse a DxEnterpriseSqlAg.yaml fájlt.

    kubectl apply -f DxEnterpriseSqlAg.yaml
    

Rendelkezésre állási csoport figyelőjének létrehozása

A terheléselosztó hozzáadásához alkalmazza a következő YAML-t úgy, hogy a választót az előző lépésben értékre állítja metadata.name . Ebben a példában ez 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

Ellenőrizze az üzembe helyezési és terheléselosztó-hozzárendeléseket.

kubectl get pods
kubectl get services

Az alábbi példához hasonló kimenetnek kell megjelennie.

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