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 eğitim, SQL Server Always On kullanılabilirlik gruplarının (AGs) DH2i DxEnterprise ile Azure Kubernetes Service (AKS) Kubernetes kümesine dağıtılmış SQL Server Linux tabanlı konteynerler için nasıl yapılandırılacağını açıklar. Yan araba yapılandırması (tercih edilen) veya kendi özel kapsayıcı görüntünüzü oluşturmayı seçebilirsiniz.
Note
Microsoft veri taşıma, AG ve SQL Server bileşenlerini destekler. DH2i, küme ve yeter yönetim içeren DxEnterprise ürününü destekler.
Bir StatefulSet nasıl kurulacağını ve DH2i DxEnterprise'ı kullanarak bir AG oluşturup yapılandırmayı öğ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
Prerequisites
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 çağrılan
headless_services.yamlbir 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 kalıcı hacim iddialarını kullanan üç DxEMSSQL replikası 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 konteynerler ayrı ayrı bir sidecar konfigürasyonunda başlar, ancak DxEnterprise, AG replikasını SQL Server konteynerinde 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 varsayılan SQL Server password ilkesini izlemelidir. 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, replikalar ekleme ve test failover hakkında detaylar için Kubernetes'te SQL Server Erişilebilirlik Grupları'na bakınız.
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 dokümantasyonunun sonundaki isteğe bağlı adımı takip ederek AG dinleyicisini DxEnterprise ile oluşturduğunuzdan emin olun.
Kubernetes'te isteğe bağlı olarak statik IP adresleri oluşturabilirsiniz. Statik bir IP adresi, dinleyici servisini silip yeniden oluşturursanız, dinleyici hizmetinize atanan harici IP adresinin değişmemesini sağlar. Azure Kubernetes Service'te (AKS) statik IP adresi oluşturma adımlarını izleyin.
Bir IP adresi oluşturduktan sonra, onu atanız ve aşağıdaki YAML örneğiyle yük dengeleyici hizmetini oluşturun.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: <static-IP-address> 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 oluşturduktan sonra, ikincil bağlantıdan birincil bağlantıya okuma/yazma bağlantısının yönlendirmesini etkinleştirin. 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 [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
İlgili içerik
- Azure Kubernetes Service'te DH2i DxOperator ile Kubernetes'te kullanılabilirlik gruplarını dağıtma
- Hızlı Başlangıç: Azure veya Red Hat OpenShift üzerinde SQL Server kapsayıcı kümesi 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