Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu öğreticide, DH2i DxEnterprise kullanılarak Azure Kubernetes Service (AKS) Kubernetes kümesine dağıtılan SQL Server Linux tabanlı kapsayıcılar için SQL Server Always On kullanılabilirlik gruplarının (AG) nasıl yapılandırılacağı açıklanmaktadır. Yan araba yapılandırması (tercih edilen) veya kendi özel kapsayıcı görüntünüzü oluşturmayı seçebilirsiniz.
Uyarı
Microsoft veri taşıma, AG ve SQL Server bileşenlerini destekler. DH2i, küme ve çekirdek yönetimini içeren DxEnterprise ürününün desteklenmesinden sorumludur.
Bu makalede bahsedilen adımları kullanarak StatefulSet dağıtmayı ve AG oluşturmak ve yapılandırmak için DH2i DxEnterprise çözümünü kullanmayı öğrenin. Bu kılavuz aşağıdaki adımlardan oluşur.
- Başsız hizmet yapılandırması oluşturma
- Sepet kapsayıcısıyla aynı podda SQL Server ve DxEnterprise ile StatefulSet yapılandırması oluşturma
- İkincil çoğaltmaları ekleyerek SQL Server AG oluşturma ve yapılandırma
- AG'de bir veritabanı oluştur ve failover'u test et
Önkoşullar
Bu öğreticide üç çoğaltması olan bir AG örneği gösterilmektedir. Şunlara sahip olmanız gerekir:
- Azure Kubernetes Service (AKS) veya Kubernetes kümesi.
- AG özellikleri ve tünelleri etkinleştirilmiş geçerli bir DxEnterprise lisansı. Daha fazla bilgi için üretim dışı kullanım için geliştirici sürümüne veya üretim iş yükleri için DxEnterprise yazılımına bakın.
Başsız servis oluşturma
Kubernetes kümesinde, başsız hizmetler podlarınızın konak adlarını kullanarak birbirine bağlanmasını sağlar.
Başsız hizmeti oluşturmak için, aşağıdaki örnek içerikle
headless_services.yamladlı bir YAML dosyası oluşturun.#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: 14033Yapılandırmayı uygulamak için aşağıdaki komutu çalıştırın.
kubectl apply -f headless_services.yaml
StatefulSet'i oluşturun
Aşağıdaki örnek içeriğe sahip bir StatefulSet YAML dosyası oluşturun ve adını verin
dxemssql.yaml.Bu StatefulSet yapılandırması, verilerini depolamak için ısrarcı birim taleplerini kullanan üç DxEMSSQL kopyası oluşturur. Bu StatefulSet içindeki her pod iki kapsayıcıdan oluşur: SQL Server kapsayıcısı ve DxEnterprise kapsayıcısı. Bu kapsayıcılar bir "sepet" yapılandırmasında birbirinden ayrı olarak başlatılır, ancak DxEnterprise, SQL Server kapsayıcısında AG çoğaltmasını yönetir.
#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: 1GiSQL Server örneği için bir kimlik bilgisi oluşturun.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"Parolanız,SQL Server varsayılan
parola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın. StatefulSet yapılandırmasını uygulayın.
kubectl apply -f dxemssql.yamlPodların durumunu doğrulayın ve podun durumu
runningolduğunda bir sonraki adıma geçin.kubectl get pods kubectl describe pods
Kullanılabilirlik grubu oluşturma ve yük devretme testi
AG oluşturma ve yapılandırma, çoğaltma ekleme ve yük devretme testi hakkında ayrıntılı bilgi için Bkz. Kubernetes'te SQL Server Kullanılabilirlik Grupları.
Kullanılabilirlik grubu dinleyicisini yapılandırma adımları (isteğe bağlı)
Aşağıdaki adımlarla bir AG dinleyicisi de yapılandırabilirsiniz.
DH2i belgelerinin sonuna yakın isteğe bağlı adımda açıklandığı gibi DxEnterprise kullanarak AG dinleyicisini oluşturduğunuzdan emin olun.
Kubernetes'te isteğe bağlı olarak statik IP adresleri oluşturabilirsiniz. Statik IP adresi oluşturduğunuzda, dinleyici hizmeti silinir ve yeniden oluşturulursa dinleyici hizmetinize atanan dış IP adresinin değişmediğinden emin olursunuz. Azure Kubernetes Service'te (AKS) statik IP adresi oluşturma adımlarını izleyin.
Bir IP adresi oluşturduktan sonra, aşağıdaki YAML örneğinde gösterildiği gibi bu IP adresini atar ve yük dengeleyici hizmetini oluşturursunuz.
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
Okuma/yazma bağlantı yeniden yönlendirmesini yapılandırma adımları (isteğe bağlı)
AG'yi oluşturduktan sonra, şu adımları izleyerek ikincilden birincile okuma/yazma bağlantı yeniden yönlendirmesini etkinleştirebilirsiniz. Daha fazla bilgi için bkz: İkincil kopyadan birincil kopyaya okuma/yazma bağlantı yönlendirmesi (Always On Kullanılabilirlik Grupları).
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
İlgili içerik
- Azure Kubernetes Service'te DH2i DxOperator ile Kubernetes'te kullanılabilirlik gruplarını dağıtma
- Azure Kubernetes Service'te SQL Server kapsayıcılarını dağıtma
- StatefulSets ile Kubernetes'te SQL Server Linux kapsayıcıları dağıtma
- Eğitim: Linux kapsayıcılarında SQL Server ile Active Directory kimlik doğrulamasını yapılandırma