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 – Linux
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.
Poznámka:
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í
Požadavky
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 postupovat podle výchozích zásad hesel SQL Serveru . 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 Sekundární na přesměrování připojení ke čtení a zápisu primární repliky (skupiny dostupnosti AlwaysOn).
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
- Nasazení kontejnerů SQL Serveru ve službě Azure Kubernetes Service
- Nasazení kontejnerů SQL Serveru s Linuxem v Kubernetes s využitím StatefulSets
- Kurz : Konfigurace ověřování Active Directory s SQL Serverem v kontejnerech Linuxu