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


Rövid útmutató: SQL Server-tárolófürt üzembe helyezése az Azure-ban vagy a Red Hat OpenShiftben

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

Ez a rövid útmutató bemutatja, hogyan konfigurálhat magas rendelkezésre állású SQL Server-példányt egy állandó tárterülettel rendelkező tárolóban az Azure Kubernetes Service-ben (AKS) vagy a Red Hat OpenShiftben. Ha az SQL Server-példány meghibásodik, az orchestration rendszer automatikusan újra létrehozza azt egy új podban. A fürtszolgáltatás rugalmasságot is biztosít a csomóponthibák ellen.

Ez a gyorsindítás az alábbi parancssori eszközöket használja a fürt kezeléséhez.

Klaszter szolgáltatás Parancssori eszköz
Azure Kubernetes Service (AKS) kubectl (Kubernetes CLI)
Azure Red Hat OpenShift oc (OpenShift CLI)

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Fiók létrehozása ingyenes.

  • Egy Kubernetes-fürt. További információ a Kubernetes-fürtök kubectl-val való létrehozásáról és az AKS-hez való csatlakozásról: Azure Kubernetes Service-fürt üzembe helyezése.

    Megjegyzés

    A csomóponthibák elleni védelemhez egy Kubernetes-fürtnek több csomópontra van szüksége.

  • Azure parancssori felület (CLI). Tekintse meg Az Azure CLI telepítése a legújabb verzió telepítéséhez.

Sa-jelszó létrehozása

A rendszergazdai (sa) fiókot erős jelszóval kell védeni. 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.

  1. Hozzon létre egy sa jelszót a Kubernetes-fürtben. A Kubernetes bizalmas konfigurációs információkat, például titkos jelszavakat kezelhet.

  2. Ha egy mssql nevű titkos kulcsot szeretne létrehozni a Kubernetesben, amely a <password>MSSQL_SA_PASSWORD értéket tartalmazza, futtassa a következő parancsot. Cserélje le <password> összetett jelszóval.

    Fontos

    A SA_PASSWORD környezeti változó elavult. A MSSQL_SA_PASSWORD használható helyette.

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

Tároló létrehozása

Kubernetes-fürtön lévő adatbázisokhoz tartós tárterületet kell használnia. Konfigurálhat állandó kötet és állandó kötet jogcím a Kubernetes-fürtben az alábbi lépésekkel:

  1. Hozzon létre egy jegyzékfájlt a tárolási osztály és az állandó kötet jogcímének meghatározásához. A jegyzék meghatározza a tárkiépítési szolgáltatót, a paramétereket és a visszaigénylési szabályzatot. A Kubernetes-fürt ezt a jegyzékfájlt használja az állandó tároló létrehozásához.

  2. Az alábbi YAML-példa egy tárolási osztályt és egy állandó kötet jogcímet határoz meg. A tárolási osztály biztosító azure-disk, mert ez a Kubernetes-fürt az Azure-ban található. A tárfiók típusa a következő Standard_LRS: . Az állandó kötet jogcím neve mssql-data. Az állandó mennyiségi jogcím metaadatai egy megjegyzést tartalmaznak, amely visszakapcsozza a tárosztályhoz.

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
         name: azure-disk
    provisioner: kubernetes.io/azure-disk
    parameters:
      storageaccounttype: Standard_LRS
      kind: Managed
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: mssql-data
      annotations:
        volume.beta.kubernetes.io/storage-class: azure-disk
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 8Gi
    

    Mentse a fájlt (például pvc.yaml).

  3. Hozza létre az állandó mennyiségi jogcímet a Kubernetesben, ahol <path to pvc.yaml file> a fájl mentési helye:

    kubectl apply -f <path to pvc.yaml file>
    

    Az állandó kötet automatikusan azure-tárfiókként jön létre, és az állandó kötet jogcíméhez van kötve.

    storageclass "azure-disk" created
    persistentvolumeclaim "mssql-data" created
    
  4. Ellenőrizze az állandó kötetre vonatkozó jogcímet, amelyben a <persistentVolumeClaim> az állandó kötet jogcímének neve:

    kubectl describe pvc <persistentVolumeClaim>
    

    Az előző lépésben az állandó mennyiségi jogcím neve mssql-data. Az állandó kötet jogcímével kapcsolatos metaadatok megtekintéséhez futtassa a következő parancsot:

    kubectl describe pvc mssql-data
    

    A visszaadott metaadatok egy úgynevezett Volumeértéket tartalmaznak. Ez az érték a blob nevére van térképezve.

    Name:          mssql-data
    Namespace:     default
    StorageClass:  azure-disk
    Status:        Bound
    Volume:        pvc-d169b88e-f26d-11e7-bc3e-0a58ac1f09a4
    Labels:        ‹none>
    Annotations:   kubectl.kubernetes.io/last-applied-configuration-{"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"volume.beta.   kubernetes.io/storage-class":"azure-disk"},"name":"mssq1-data...
                   pv.kubernetes.io/bind-completed-yes
                   pv.kubernetes.io/bound-by-controller=yes
                   volume.beta.kubernetes.io/storage-class=azure-disk
                   volume.beta.kubernetes.io/storage-provisioner=kubernetes.io/azure-disk
    Capacity:      8Gi
    Access Modes:  RWO
    Events:        <none>
    

    A térfogat értéke megegyezik a blob nevének egy részével az Azure portálon.

  5. Ellenőrizze az állandó kötetet.

    kubectl describe pv
    

    kubectl az állandó kötetre vonatkozó metaadatokat adja vissza, amely automatikusan létre lett hozva, és az állandó kötet jogcíméhez van kötve.

Hozza létre az üzembe helyezést

Az SQL Server-példányt üzemeltető tároló kubernetes-üzembehelyezési objektumként. Az üzembe helyezés létrehoz egy replikakészletet. A replikakészlet létrehozza a pod.

Létrehoz egy jegyzékfájlt a tároló leírásához az SQL Server mssql-server-linux Docker-rendszerkép alapján.

  • A jegyzék az mssql-server állandó kötet jogcímére és a mssql Kubernetes-fürtre már alkalmazott titkos kódra hivatkozik.
  • A jegyzék egy szolgáltatást is ír le. Ez a szolgáltatás egy terheléselosztó. A terheléselosztó garantálja, hogy az IP-cím megmarad az SQL Server-példány helyreállítása után.
  • A jegyzék ismerteti az erőforrás-kéréseket és korlátokat. Ezek a minimális rendszerkövetelményekenalapulnak.
  1. Hozzon létre egy jegyzékfájlt (egy YAML-fájlt) az üzembe helyezés leírásához. Az alábbi példa egy üzembe helyezést ír le, beleértve az SQL Server tárolólemezképén alapuló tárolót is.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mssql-deployment
    spec:
      replicas: 1
      selector:
         matchLabels:
           app: mssql
      template:
        metadata:
          labels:
            app: mssql
        spec:
          terminationGracePeriodSeconds: 30
          hostname: mssqlinst
          securityContext:
            fsGroup: 10001
          containers:
          - name: mssql
            image: mcr.microsoft.com/mssql/server:2022-latest
            resources:
              requests:
                memory: "2G"
                cpu: "2000m"
              limits:
                memory: "2G"
                cpu: "2000m"
            ports:
            - containerPort: 1433
            env:
            - name: MSSQL_PID
              value: "Developer"
            - name: ACCEPT_EULA
              value: "Y"
            - name: MSSQL_SA_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mssql
                  key: MSSQL_SA_PASSWORD
            volumeMounts:
            - name: mssqldb
              mountPath: /var/opt/mssql
          volumes:
          - name: mssqldb
            persistentVolumeClaim:
              claimName: mssql-data
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mssql-deployment
    spec:
      selector:
        app: mssql
      ports:
        - protocol: TCP
          port: 1433
          targetPort: 1433
      type: LoadBalancer
    

    Másolja az előző kódot egy új, névvel ellátott sqldeployment.yamlfájlba. Frissítse a következő értékeket:

    • MSSQL_PID value: "Developer": Beállítja a tárolót az SQL Server Developer Edition futtatására. A fejlesztői kiadás nincs éles adat használatára licencelve. Ha az üzembe helyezés éles használatra készült, állítsa be a megfelelő kiadást (Enterprise, Standardvagy Express). További információért lásd a(z) "Hogyan licenceljük a SQL Server-t"részt.

      Ha az SQL Server 2025 -höz (17.x) vagy egy újabb verzióhoz helyez üzembe tárolót, használja MSSQL_PID=DeveloperStandard a Standard Developer kiadáshoz és MSSQL_PID=Developer az Enterprise Developer kiadáshoz.

    • persistentVolumeClaim: Ehhez az értékhez egy bejegyzésre claimName: van szükség, amely megfelel az állandó kötet jogcíméhez használt névnek. Ez az oktatóanyag a(z) mssql-data-et használja.

    • name: MSSQL_SA_PASSWORD: Konfigurálja a tárolórendszerképet a jelen szakaszban meghatározott sa jelszó beállításához.

      valueFrom:
        secretKeyRef:
          name: mssql
          key: MSSQL_SA_PASSWORD
      

      Amikor a Kubernetes telepíti a tárolót, az a jelszó értékének lekéréséhez elnevezett mssql titkos kódra hivatkozik.

    • securityContext: Egy pod vagy tároló jogosultsági és hozzáférés-vezérlési beállításait határozza meg. Ebben az esetben a pod szintjén van megadva, így az összes tároló megfelel ennek a biztonsági környezetnek. A biztonsági környezetben a fsGroup a 10001értékkel határozzuk meg, amely a mssql csoport csoportazonosítója (GID). Ez az érték azt jelenti, hogy a tároló összes folyamata a kiegészítő GID-10001 (mssql) részét képezi. A kötet /var/opt/mssql és a kötetben létrehozott fájlok tulajdonosa a GID 10001 (a mssql csoport).

    Figyelmeztetés

    A LoadBalancer szolgáltatástípus használatával az SQL Server-példány távolról (az interneten keresztül) érhető el az 1433-es porton.

    Mentse a fájlt. Például: sqldeployment.yaml.

  2. Hozza létre az üzembe helyezést, ahol <path to sqldeployment.yaml file> a fájl mentési helye:

    kubectl apply -f <path to sqldeployment.yaml file>
    

    Az üzembe helyezés és a szolgáltatás elkészült. Az SQL Server-példány egy tárolóban található, és állandó tárolóhoz van csatlakoztatva.

    deployment "mssql-deployment" created
    service "mssql-deployment" created
    

    Az üzembe helyezés és a szolgáltatás elkészült. Az SQL Server-példány egy tárolóban található, és állandó tárolóhoz van csatlakoztatva.

    A pod állapotának megtekintéséhez írja be a következőt kubectl get pod:

    NAME                                READY    STATUS    RESTARTS   AGE
    mssql-deployment-3813464711-h312s   1/1      Running   0          17m
    

    A pod állapota Running. Ez az állapot azt jelzi, hogy a tároló készen áll. Az üzembe helyezés létrehozása után eltarthat néhány percig, amíg a pod látható lesz. A késés oka, hogy a fürt lekéri a mssql-server-linux képet a Microsoft Artifact Registryből. A rendszerkép első lekérése után a későbbi üzembe helyezések gyorsabbak lehetnek, ha az üzembe helyezés olyan csomóponton történik, amelyen már gyorsítótárazott a rendszerkép.

  3. Ellenőrizze, hogy futnak-e a szolgáltatások. Futtassa a következő parancsot:

    kubectl get services
    

    Ez a parancs a futó szolgáltatásokat, valamint a szolgáltatások belső és külső IP-címét adja vissza. Jegyezze fel a szolgáltatás külső IP-címét mssql-deployment . Ezzel az IP-címmel csatlakozhat az SQL Serverhez.

    NAME               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)          AGE
    kubernetes         ClusterIP      10.0.0.1      <none>          443/TCP          52m
    mssql-deployment   LoadBalancer   10.0.113.96   52.168.26.254   1433:30619/TCP   2m
    

    A Kubernetes-fürt objektumainak állapotával kapcsolatos további információkért futtassa a következő parancsot. Ne felejtse el az <MyResourceGroup> és <MyKubernetesClustername> helyére beírni az erőforráscsoportot és a Kubernetes-fürt nevét:

    az aks browse --resource-group <MyResourceGroup> --name <MyKubernetesClustername>
    
  4. Az alábbi parancs futtatásával azt is ellenőrizheti, hogy a tároló nem gyökérként fut-e, ahol <nameOfSqlPod> az SQL Server-pod neve:

    kubectl.exe exec <nameOfSqlPod> -it -- /bin/bash
    

    Ha a mssql-et futtatja, a felhasználónév whoami-ként látható. mssql nem root felhasználó.

    whoami
    

Csatlakozás az SQL Server-példányhoz

Az Azure-beli virtuális hálózaton kívülről is csatlakozhat egy alkalmazáshoz a szolgáltatás sa fiókjával és külső IP-címével. Használja az OpenShift-titkos kódként konfigurált jelszót.

Az alábbi alkalmazásokkal csatlakozhat az SQL Server-példányhoz.

Csatlakozás sqlcmd használatával

A sqlcmdvaló csatlakozáshoz futtassa a következő parancsot.

sqlcmd -S <External IP address> -U sa -P "<password>"

Cserélje le <External IP address> a mssql-deployment szolgáltatás IP-címére, és <password> az összetett jelszóra.

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.

Hiba és helyreállítás ellenőrzése

A hiba és a helyreállítás ellenőrzéséhez törölje a podot az alábbi lépésekkel:

  1. Sorolja fel az SQL Servert futtató podot.

    kubectl get pods
    

    Jegyezze fel az SQL Servert futtató pod nevét.

  2. Törölje a podot.

    kubectl delete pod mssql-deployment-0
    

    mssql-deployment-0 a pod nevének előző lépéséből visszaadott érték.

A Kubernetes automatikusan újra létrehozza a podot egy SQL Server-példány helyreállításához, és csatlakozik az állandó tárolóhoz. Az új pod üzembe helyezésének ellenőrzésére használható kubectl get pods . Az kubectl get services használatával ellenőrizze, hogy az új tároló IP-címe megegyezik-e.

Erőforrások tisztítása

Ha nem tervezi végigvenni az alábbi oktatóanyagokat, törölje a felesleges erőforrásokat. Az az group delete paranccsal távolítsa el az erőforráscsoportot, a tárolószolgáltatást és az összes kapcsolódó erőforrást. Cserélje le a <MyResourceGroup> a fürtöt tartalmazó erőforráscsoport nevére.

az group delete --name <MyResourceGroup> --yes --no-wait