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 návod vysvětluje, jak konfigurovat skupiny dostupnosti (AGs) pro SQL Server Always On s DH2i DxEnterprise for SQL Server linuxovými kontejnery nasazenými na Azure Kubernetes Service (AKS) Kubernetes cluster. 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 podporuje produkt DxEnterprise, který zahrnuje správu clusteru a kvóra.
Naučte se, jak nasadit StatefulSet a použít 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ů.
Pro vytvoření headless služby vytvořte YAML soubor s
headless_services.yamlná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 vytváří tři repliky DxEMSSQL, které používají nároky na trvalé svazky k ukládání svých dat. Každý pod v této statefulSet obsahuje dva kontejnery: kontejner SQL Serveru a kontejner DxEnterprise. Tyto kontejnery začínají samostatně v konfiguraci sidecar, ale DxEnterprise spravuje AG repliku v kontejneru SQL Server.
#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 AG, přidávání replik a testování failoveru najdete v sekci SQL Server Availability Groups 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 posluchač pomocí DxEnterprise podle volitelného kroku na konci dokumentace DH2i.
V Kubernetes můžete volitelně vytvořit statické IP adresy. Statická IP adresa zajišťuje, že pokud smažete a znovu vytvoříte službu posluchače, externí IP adresa přiřazená vaší službě se nezmění. Postupujte podle pokynů k vytvoření statické IP adresy ve službě Azure Kubernetes Service (AKS).
Po vytvoření IP adresy ji přiřaďte a vytvořte službu load balancer s následujícím vzorkem YAML.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: <static-IP-address> 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í AG povolte přesměrování spojení pro čtení/zápis ze sekundárního na primární. 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 [AGS1]
MODIFY REPLICA ON N'<name of the primary replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the secondary-0 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
GO
ALTER AVAILABILITY GROUP [AGS1]
MODIFY REPLICA ON N'<name of the secondary-1 replica>'
WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL));
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
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
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