Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Tutorial ini menjelaskan cara mengonfigurasi SQL Server Always On availability groups (AGs) dengan DH2i DxEnterprise untuk kontainer berbasis SQL Server Linux yang disebarkan ke klaster Kubernetes Azure Kubernetes Service (AKS). Anda dapat memilih konfigurasi sidecar (lebih disukai), atau membuat image kontainer kustom Anda sendiri.
Note
Microsoft mendukung komponen pergerakan data, AG, dan SQL Server. DH2i mendukung produk DxEnterprise, yang mencakup manajemen klaster dan kuorum.
Pelajari cara menerapkan StatefulSet dan gunakan DH2i DxEnterprise untuk membuat serta mengonfigurasi AG. Tutorial ini terdiri dari langkah-langkah berikut.
- Buat konfigurasi layanan headless
- Membuat konfigurasi StatefulSet dengan SQL Server dan DxEnterprise dalam pod yang sama dengan kontainer sidecar
- Membuat dan mengonfigurasi SQL Server AG, menambahkan replika sekunder
- Buat database di AG dan uji failover
Prasyarat
Tutorial ini menunjukkan contoh AG dengan tiga replika. Kamu butuh:
- Kluster Azure Kubernetes Service (AKS) atau kluster Kubernetes.
- Lisensi DxEnterprise yang valid dengan fitur AG serta tunnel yang diaktifkan. Untuk informasi selengkapnya, lihat edisi pengembang untuk penggunaan nonproduksi, atau perangkat lunak DxEnterprise untuk beban kerja produksi.
Buat layanan headless
Dalam kluster Kubernetes, layanan headless memungkinkan pod Anda terhubung satu sama lain menggunakan nama host.
Untuk membuat layanan headless, buat file YAML yang dipanggil
headless_services.yamldengan contoh konten berikut.#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: 14033Jalankan perintah berikut untuk menerapkan konfigurasi.
kubectl apply -f headless_services.yaml
Buat StatefulSet
Buat file YAML StatefulSet dengan konten sampel berikut, dan beri nama
dxemssql.yaml.Konfigurasi StatefulSet ini membuat tiga replika DxEMSSQL yang menggunakan klaim volume persisten untuk menyimpan data mereka. Setiap pod dalam StatefulSet ini terdiri dari dua kontainer: kontainer SQL Server dan kontainer DxEnterprise. Kontainer-kontainer ini dimulai secara terpisah dalam konfigurasi sidecar, tetapi DxEnterprise mengelola replika AG dalam kontainer 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: 1GiBuat kredensial untuk instans SQL Server.
kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="<password>"Kata sandi Anda harus mengikuti kebijakan password default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
Terapkan konfigurasi StatefulSet.
kubectl apply -f dxemssql.yamlVerifikasi status pod, dan lanjutkan ke langkah berikutnya ketika status pod menjadi
running.kubectl get pods kubectl describe pods
Membuat grup ketersediaan dan menguji failover
Untuk detail tentang pembuatan dan konfigurasi AG, menambah replika, dan menguji failover, lihat SQL Server Availability Groups di Kubernetes.
Langkah-langkah untuk mengonfigurasi listener grup ketersediaan (opsional)
Anda juga dapat mengonfigurasi pendengar AG, dengan langkah-langkah berikut.
Pastikan Anda membuat pendengar AG dengan DxEnterprise mengikuti langkah opsional di dekat akhir dokumentasi DH2i.
Di Kubernetes, Anda dapat secara opsional membuat alamat IP statis . Alamat IP statis memastikan bahwa jika Anda menghapus dan membuat ulang layanan listener, alamat IP eksternal yang diberikan ke layanan listener Anda tidak berubah. Ikuti langkah-langkah untuk membuat alamat IP statis di Azure Kubernetes Service (AKS).
Setelah Anda membuat alamat IP, tetapkan alamat tersebut dan buat layanan load balancer dengan contoh YAML berikut.
apiVersion: v1 kind: Service metadata: name: agslistener spec: type: LoadBalancer loadBalancerIP: <static-IP-address> selector: app: mssql ports: - protocol: TCP port: 44444 targetPort: 44444
Langkah-langkah untuk mengonfigurasi pengalihan koneksi baca/tulis (opsional)
Setelah Anda membuat AG, aktifkan pengalihan koneksi baca/tulis dari sekunder ke primer. Untuk informasi selengkapnya, lihat Pengalihan koneksi baca/tulis replika sekunder ke primer (Grup Ketersediaan AlwaysOn).
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
Konten terkait
- Menyebarkan grup ketersediaan di Kubernetes dengan DH2i DxOperator di Azure Kubernetes Service
- Quickstart: Menyebarkan kluster kontainer SQL Server pada Azure atau Red Hat OpenShift
- Menyebarkan kontainer SQL Server Linux di Kubernetes dengan StatefulSets
- Tutorial: Mengonfigurasi autentikasi Direktori Aktif dengan SQL Server pada kontainer Linux