Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server na Linuxu
Tento kurz vysvětluje, jak nakonfigurovat skupiny dostupnosti AlwaysOn (AG) SQL Serveru pro kontejnery založené na SQL Serveru s Linuxem nasazené do clusteru Kubernetes Service (AKS) Azure Kubernetes pomocí DH2i DxEnterprise. Můžete si vybrat mezi konfigurací sidecar (upřednostňovanou) nebo vytvořit vlastní image kontejneru.
Note
Microsoft podporuje přesun dat, skupiny dostupnosti (AG) a komponenty SQL Serveru. DH2i zodpovídá za podporu produktu DxEnterprise, který zahrnuje správu clusteru a kvoru.
Pomocí kroků uvedených v tomto článku se dozvíte, jak nasadit StatefulSet a použít řešení DH2i DxEnterprise k vytvoření a konfiguraci AG. Tento kurz se skládá z následujících kroků.
- Vytvoření bezobslužné konfigurace služby
- Vytvořte konfiguraci StatefulSet s SQL Serverem a DxEnterprise ve stejném podu jako sidecar kontejner.
- Vytvořte a nakonfigurujte skupinu dostupnosti SQL Serveru a přidejte sekundární repliky.
- Vytvořte databázi ve skupině dostupnosti a otestujte převzetí služeb při selhání
Předpoklady
Tento tutoriál ukazuje příklad AG s třemi replikami. Potřebujete:
- Cluster Azure Kubernetes Service (AKS) nebo Kubernetes.
- Platná licence DxEnterprise s povolenými funkcemi AG a tunnelovými funkcemi. Další informace najdete v edici developer pro neprodukční využití nebo software DxEnterprise pro produkční úlohy.
Vytvořte bezobslužnou službu
V clusteru Kubernetes umožňují bezobslužné služby, aby se vaše pody připojily k sobě pomocí názvů hostitelů.
Pokud chcete vytvořit bezobslužnou službu, vytvořte soubor YAML s názvem
headless_services.yamls následujícím ukázkovým obsahem.#Headless services for local connections/resolution apiVersion: v1 kind: Service metadata: name: dxemssql-0 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-0 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033 --- apiVersion: v1 kind: Service metadata: name: dxemssql-1 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-1 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033 --- apiVersion: v1 kind: Service metadata: name: dxemssql-2 spec: clusterIP: None selector: statefulset.kubernetes.io/pod-name: dxemssql-2 ports: - name: dxl protocol: TCP port: 7979 - name: dxc-tcp protocol: TCP port: 7980 - name: dxc-udp protocol: UDP port: 7981 - name: sql protocol: TCP port: 1433 - name: listener protocol: TCP port: 14033Pomocí následujícího příkazu aplikujte konfiguraci.
kubectl apply -f headless_services.yaml
Vytvoření stavové sady
Vytvořte soubor YAML StatefulSet s následujícím ukázkovým obsahem a pojmenujte ho
dxemssql.yaml.Tato konfigurace StatefulSet vytvoří tři repliky DxEMSSQL, které k ukládání dat využívají trvalé požadavky na svazek. Každý pod v této statefulSet obsahuje dva kontejnery: kontejner SQL Serveru a kontejner DxEnterprise. Tyto kontejnery se spouští odděleně v konfiguraci sidecar, ale DxEnterprise spravuje AG repliku v kontejneru SQL Serveru.
#DxEnterprise + MSSQL StatefulSet apiVersion: apps/v1 kind: StatefulSet metadata: name: dxemssql spec: serviceName: "dxemssql" replicas: 3 selector: matchLabels: app: dxemssql template: metadata: labels: app: dxemssql spec: securityContext: fsGroup: 10001 containers: - name: sql image: mcr.microsoft.com/mssql/server:2022-latest env: - name: ACCEPT_EULA value: "Y" - name: MSSQL_ENABLE_HADR value: "1" - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: mssql mountPath: "/var/opt/mssql" - name: dxe image: docker.io/dh2i/dxe env: - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD volumeMounts: - name: dxe mountPath: "/etc/dh2i" volumeClaimTemplates: - metadata: name: dxe spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi - metadata: name: mssql spec: accessModes: - ReadWriteOnce resources: requests: storage: 1GiVytvořte přihlašovací údaje pro instanci SQL Serveru.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"Vaše heslo by mělo splňovat výchozí zásady hesla pro SQL Server. Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.
Použijte konfiguraci StatefulSet.
kubectl apply -f dxemssql.yamlOvěřte stav podů a přejděte k dalšímu kroku, jakmile se stav podu stane
running.kubectl get pods kubectl describe pods
Vytvoření skupiny dostupnosti a test selhání a přepnutí služby
Podrobnosti o vytváření a konfiguraci skupiny dostupnosti, přidávání replik a testování převzetí služeb při selhání najdete v části Skupiny dostupnosti SQL Serveru v Kubernetes.
Postup konfigurace posluchače skupiny dostupnosti (volitelné)
Pomocí následujícího postupu můžete také nakonfigurovat naslouchací proces AG (skupiny dostupnosti).
Ujistěte se, že jste vytvořili AG poslech pomocí DxEnterprise, jak je popsáno v optionalním kroku poblíž konce dokumentace DH2i.
V Kubernetes můžete volitelně vytvořit statické IP adresy. Při vytváření statické IP adresy se ujistěte, že pokud je služba naslouchacího procesu odstraněná a znovu vytvořena, externí IP adresa přiřazená vaší službě naslouchacího procesu se nezmění. Postupujte podle pokynů k vytvoření statické IP adresy ve službě Azure Kubernetes Service (AKS).
Po vytvoření IP adresy přiřadíte tuto IP adresu a vytvoříte službu nástroje pro vyrovnávání zatížení, jak je znázorněno v následující ukázce YAML.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: 52.140.117.62 selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Postup konfigurace přesměrování připojení pro čtení a zápis (volitelné)
Po vytvoření skupiny dostupnosti (AG) můžete povolit přesměrování připojení pro čtení/zápis ze sekundárního na primární server podle následujících kroků. Další informace najdete v tématu Přesměrování připojení pro čtení a zápis ze sekundární na primární repliku (skupiny dostupnosti Always On).
USE [master];
GO
ALTER AVAILABILITY
GROUP [ag_name] MODIFY REPLICA
ON N'<name of the primary replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP [AGS1] MODIFY REPLICA
ON N'<name of the secondary-0 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP [AGS1] MODIFY REPLICA
ON N'<name of the secondary-1 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP AGS1 MODIFY REPLICA
ON N'<name of the primary replica>'
WITH (PRIMARY_ROLE(READ_WRITE_ROUTING_URL = 'TCP://<External IP address of primary -0>:1433'));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP AGS1 MODIFY REPLICA
ON N'<name of the secondary-0 replica>'
WITH (PRIMARY_ROLE(READ_WRITE_ROUTING_URL = 'TCP://<External IP address of secondary -0>:1433'));
GO
USE [master];
GO
ALTER AVAILABILITY
GROUP AGS1 MODIFY REPLICA
ON N'<name of the secondary-1 replica>'
WITH (PRIMARY_ROLE(READ_WRITE_ROUTING_URL = 'TCP://<External IP address of secondary -1>:1433'));
GO
Související obsah
- Nasazení skupin dostupnosti v Kubernetes pomocí DH2i DxOperatoru ve službě Azure Kubernetes Service
- Rychlý start: Nasazení clusteru kontejnerů SQL Serveru v Azure nebo Red Hat OpenShiftu
- Nasazení kontejnerů SQL Serveru s Linuxem v Kubernetes s využitím StatefulSets
- Tutorial: Konfigurace ověřování služba Active Directory pomocí kontejnerů SQL Server on Linux