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 klasterekre is érvényesek. Az elsődleges különbség egy Azure Red Hat OpenShift-klaszter üzembe helyezése, majd a következő lépésekben a kubectl parancsok oc parancsokra történő cseréje.

A cikkben szereplő lépések segítségével megtanulod, hogyan telepíthetsz egy StatefulSet-et, és a DH2i DxOperátorral létrehozhatsz és konfigurálhatsz egy AG-t három replikával, AKS-en tárolva.

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
  • Háromreplika SQL Server elérhetőségi csoportot telepíteni YAML fájl használatával
  • Csatlakozás az SQL Serverhez

Prerequisites

  • 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(z) mssqlconfig.yaml nevű fájl használatával, a következő paraméterekkel hozod létre a configmap elemet.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mssql-config
    data:
      mssql.conf: |
        [EULA]
        accepteula = Y
    
        [sqlagent]
        enabled = true
    
  2. Hozd létre az objektumot a következő parancs futtatá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>"

Caution

A jelszónak az SQL Server alapértelmezett password szabályzatot kell 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ítsd a YAML fájlt, amely leírja, hogyan lehet AG-t beállítani a következő parancs használatával. Mentse a fájlt egy egyéni névvel, például DxOperator.yaml.

    curl -L https://dxoperator.dh2i.com/dxsqlag/files/v2.yaml -o DxOperator.yaml
    kubectl apply -f DxOperator.yaml
    
  2. Miután telepítetted az operátort, telepítheted az SQL Server konténereket, konfigurálhatod a rendelkezésre állási csoportot, definiálhatod a replikákat, és telepítheted és konfigurálhatod a DxEnterprise klasztert. Változtasd meg a következő mintatelepítési YAML fájlt, DxSqlAg.yaml, az igényeidnek megfelelően.

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

    kubectl apply -f DxSqlAg.yaml
    

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

  1. Frissítsd az availabilityGroupListenerPort értéket a DxSqlAg.yaml fájlodban:

    spec:
      sqlAgConfiguration:
        availabilityGroupListenerPort: 51433
    
  2. Alkalmazd a fájlt:

    kubectl apply -f DxSqlAg.yaml
    
  3. Alkalmazd a következő YAML-t, hogy hozzáadj egy terheléskiosztót a hallgatónak.

    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. Ellenőrizd, hogy a szolgáltatások és terheléselosztók futnak-e.

    kubectl get services
    

    A kimenet az alábbi példához hasonlóan néz ki:

    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. Ellenőrizd, hogy mindhárom SQL Server pod fut-e.

    kubectl get pods
    

    A kimenet az alábbi példához hasonlóan néz ki:

    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