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
Panduan ini menyediakan instruksi untuk membuat kluster failover disk bersama dua node untuk SQL Server di Red Hat Enterprise Linux. Lapisan pengklusteran didasarkan pada add-on Red Hat Enterprise Linux (RHEL) HA yang dibangun di atas Pacemaker. Instans SQL Server aktif pada satu simpul atau simpul lainnya.
Catatan
Akses ke add-on dan dokumentasi Red Hat HA memerlukan langganan.
Seperti yang ditunjukkan oleh diagram berikut, penyimpanan disajikan ke dua server. Komponen pengklusteran - Corosync dan Pacemaker - mengoordinasikan komunikasi dan manajemen sumber daya. Salah satu server memiliki koneksi aktif ke sumber daya penyimpanan dan SQL Server. Ketika Pacemaker mendeteksi kegagalan, komponen pengklusteran bertanggung jawab untuk memindahkan sumber daya ke simpul lain.
Untuk informasi selengkapnya tentang konfigurasi kluster, opsi agen sumber daya, dan manajemen, kunjungi dokumentasi referensi RHEL.
Pada titik ini, integrasi SQL Server dengan Pacemaker tidak digabungkan seperti WSFC di Windows. Dari dalam SQL Server, tidak ada pengetahuan tentang keberadaan kluster, semua orkestrasi berada di luar dan layanan dikendalikan sebagai instans mandiri oleh Pacemaker. Juga misalnya, kluster dmvs sys.dm_os_cluster_nodes dan sys.dm_os_cluster_properties tidak akan ada rekaman.
Untuk menggunakan string koneksi yang menunjuk ke nama server string dan tidak menggunakan IP, mereka harus mendaftar di server DNS mereka IP yang digunakan untuk membuat sumber daya IP virtual (seperti yang dijelaskan di bagian berikut) dengan nama server yang dipilih.
Bagian berikut menelusuri langkah-langkah untuk menyiapkan solusi kluster failover.
Prasyarat
Untuk menyelesaikan skenario end-to-end berikut, Anda memerlukan dua komputer untuk menyebarkan kluster dua node dan server lain untuk mengonfigurasi server NFS. Langkah-langkah berikut menguraikan bagaimana server ini akan dikonfigurasi.
Menyiapkan dan mengonfigurasi sistem operasi pada setiap node kluster
Langkah pertama adalah mengonfigurasi sistem operasi pada node kluster. Untuk panduan langkah demi langkah ini, gunakan RHEL dengan langganan yang valid untuk add-on HA.
Menginstal dan mengonfigurasi SQL Server pada setiap node kluster
Instal dan siapkan SQL Server pada kedua simpul. Untuk petunjuk terperinci, lihat Panduan penginstalan untuk SQL Server di Linux.
Menunjuk satu simpul sebagai primer dan yang lain sebagai sekunder, untuk tujuan konfigurasi. Gunakan istilah-istilah ini untuk panduan berikut ini.
Pada simpul sekunder, hentikan dan nonaktifkan SQL Server.
Contoh berikut menghentikan dan menonaktifkan SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Catatan
Pada waktu penyiapan, Kunci Master Server dihasilkan untuk instans SQL Server dan ditempatkan di /var/opt/mssql/secrets/machine-key. Di Linux, SQL Server selalu berjalan sebagai akun lokal yang disebut mssql. Karena ini adalah akun lokal, identitasnya tidak dibagikan di seluruh simpul. Oleh karena itu, Anda perlu menyalin kunci enkripsi dari simpul utama ke setiap simpul sekunder sehingga setiap akun lokal mssql dapat mengaksesnya untuk mendekripsi Kunci Master Server.
Pada simpul utama, buat login SQL Server untuk Pacemaker dan berikan izin masuk untuk menjalankan
sp_server_diagnostics. Pacemaker menggunakan akun ini untuk memverifikasi simpul mana yang menjalankan SQL Server.sudo systemctl start mssql-serverSambungkan ke database SQL Server
masterdengansaakun dan jalankan hal berikut:USE [master]; GO CREATE LOGIN [<loginName>] WITH PASSWORD = N'<password>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];Perhatian
Kata sandi Anda harus mengikuti kebijakan kata sandi 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.
Atau, Anda dapat mengatur izin pada tingkat yang lebih terperinci. Login Pacemaker memerlukan pengkuerian status kesehatan dengan
VIEW SERVER STATE,sp_server_diagnostics, dansetupadminserta pembaruan nama instans FCI dengan nama sumber daya dengan menjalankanALTER ANY LINKED SERVERdansp_dropserver.Pada simpul utama, hentikan dan nonaktifkan SQL Server.
Konfigurasikan file host untuk setiap node kluster. File host harus menyertakan alamat IP dan nama setiap node kluster.
Periksa alamat IP untuk setiap simpul. Skrip berikut menunjukkan alamat IP simpul Anda saat ini.
sudo ip addr showAtur nama komputer pada setiap simpul. Berikan setiap node nama unik yang terdiri dari 15 karakter atau kurang. Atur nama komputer dengan menambahkannya ke
/etc/hosts. Skrip berikut memungkinkan Anda mengedit/etc/hostsdenganvi.sudo vi /etc/hostsContoh berikut menunjukkan
/etc/hostsdengan penambahan untuk dua simpul bernamasqlfcivm1dansqlfcivm2.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Di bagian berikutnya, Anda akan mengonfigurasi penyimpanan bersama dan memindahkan file database Anda ke penyimpanan tersebut.
Mengonfigurasi penyimpanan bersama dan memindahkan file database
Ada berbagai solusi untuk menyediakan penyimpanan bersama. Panduan langkah demi langkah ini menunjukkan cara mengonfigurasi penyimpanan bersama dengan NFS. Sebaiknya ikuti praktik terbaik dan gunakan Kerberos untuk mengamankan NFS. Misalnya, lihat RHEL7: Gunakan Kerberos untuk mengontrol akses ke berbagi jaringan NFS.
Peringatan
Jika Anda tidak mengamankan NFS, maka siapa pun yang dapat mengakses jaringan Anda dan memalsukan alamat IP simpul SQL akan dapat mengakses file data Anda. Seperti biasa, pastikan Anda membuat model ancaman untuk sistem Anda sebelum menggunakannya dalam produksi. Opsi penyimpanan lainnya adalah menggunakan fileshare SMB.
Mengonfigurasi penyimpanan bersama dengan NFS
Penting
Menghosting file database di server NFS dengan versi <4 tidak didukung dalam rilis ini. Ini termasuk menggunakan NFS untuk pengklusteran failover disk bersama serta database pada instans non-kluster. Kami sedang berupaya mengaktifkan versi server NFS lainnya dalam rilis mendatang.
Di Server NFS, lakukan langkah-langkah berikut:
Menginstal
nfs-utilssudo yum -y install nfs-utilsAktifkan dan mulai
rpcbindsudo systemctl enable rpcbind && sudo systemctl start rpcbindAktifkan dan mulai
nfs-serversudo systemctl enable nfs-server && sudo systemctl start nfs-serverEdit
/etc/exportsuntuk mengekspor direktori yang ingin Anda bagikan. Anda memerlukan satu baris untuk setiap saham yang Anda inginkan. Contohnya:/mnt/nfs 10.8.8.0/24(rw,sync,no_subtree_check,no_root_squash)Ekspor saham
sudo exportfs -ravVerifikasi bahwa jalur dibagikan/diekspor, jalankan dari server NFS
sudo showmount -eMenambahkan pengecualian di SELinux
sudo setsebool -P nfs_export_all_rw 1Buka firewall pada server.
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reload
Mengonfigurasi semua node kluster untuk menyambungkan ke penyimpanan bersama NFS
Lakukan langkah-langkah berikut pada semua node kluster.
Menginstal
nfs-utilssudo yum -y install nfs-utilsMembuka firewall pada klien dan server NFS
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadVerifikasi bahwa Anda dapat melihat berbagi NFS di komputer klien
sudo showmount -e <IP OF NFS SERVER>Ulangi langkah-langkah ini pada semua node kluster.
Untuk informasi selengkapnya tentang menggunakan NFS, lihat sumber daya berikut ini:
- Server NFS dan firewalld | Stack Exchange
- Memasang Volume NFS | Panduan Administrator Jaringan Linux
- Konfigurasi server NFS | Portal Pelanggan Red Hat
Memasang direktori file database untuk menunjuk ke penyimpanan bersama
Hanya pada simpul utama, simpan file database ke lokasi sementara. Skrip berikut, membuat direktori sementara baru, menyalin file database ke direktori baru, dan menghapus file database lama. Saat SQL Server berjalan sebagai pengguna
mssqllokal, Anda perlu memastikan bahwa setelah transfer data ke folder berbagi yang terpasang, pengguna lokal memiliki akses baca-tulis ke folder berbagi tersebut.sudo su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exitPada semua simpul kluster, edit
/etc/fstabfile untuk menyertakan perintah pemasangan.<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrSkrip berikut menunjukkan contoh pengeditan.
10.8.8.0:/mnt/nfs /var/opt/mssql/data nfs timeo=14,intr
Catatan
Jika menggunakan sumber daya Sistem File (FS) seperti yang direkomendasikan di sini, tidak perlu mempertahankan perintah pemasangan di /etc/fstab. Pacemaker akan mengurus pemasangan folder ketika memulai sumber daya berkluster FS. Dengan bantuan pagar, akan dipastikan bahwa FS tidak pernah dipasang dua kali.
Jalankan perintah
mount -aagar sistem memperbarui jalur yang ter-mount.Salin file database dan file log yang Anda simpan ke
/var/opt/mssql/tmpke berbagi/var/opt/mssql/datayang baru dipasang. Langkah ini hanya perlu dilakukan pada simpul utama. Pastikan Anda memberikan izin baca tulis kepadamssqlpengguna lokal.sudo chown mssql /var/opt/mssql/data sudo chgrp mssql /var/opt/mssql/data sudo su mssql cp /var/opt/mssql/tmp/* /var/opt/mssql/data/ rm /var/opt/mssql/tmp/* exitValidasi bahwa SQL Server berhasil dimulai dengan jalur file baru. Lakukan ini pada setiap node. Pada titik ini hanya satu simpul yang harus menjalankan SQL Server pada satu waktu. Keduanya tidak dapat berjalan pada saat yang sama karena keduanya akan mencoba mengakses file data secara bersamaan (untuk menghindari memulai SQL Server secara tidak sengaja pada kedua node, gunakan sumber daya kluster sistem file dengan memastikan berbagi tidak di-mount dua kali oleh node yang berbeda). Perintah berikut memulai SQL Server, memeriksa status, lalu menghentikan SQL Server.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
Pada titik ini, kedua instans SQL Server dikonfigurasi untuk dijalankan dengan file database pada penyimpanan bersama. Langkah selanjutnya adalah mengonfigurasi SQL Server untuk Pacemaker.
Menginstal dan mengonfigurasi Pacemaker pada setiap node kluster
Pada kedua node kluster, buat file untuk menyimpan nama pengguna dan kata sandi SQL Server untuk login Pacemaker. Perintah berikut membuat dan mengisi file ini:
sudo touch /var/opt/mssql/secrets/passwd echo '<loginName>' | sudo tee -a /var/opt/mssql/secrets/passwd echo '<password>' | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdPerhatian
Kata sandi Anda harus mengikuti kebijakan kata sandi 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.
Pada kedua node kluster, buka port firewall Pacemaker. Untuk membuka port ini dengan
firewalld, jalankan perintah berikut:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadJika Anda menggunakan firewall lain yang tidak memiliki konfigurasi ketersediaan tinggi bawaan, port berikut perlu dibuka agar Pacemaker dapat berkomunikasi dengan simpul lain dalam kluster:
- TCP: Port 2224, 3121, 21064
- UDP: Port 5405
Instal paket Pacemaker pada setiap simpul.
sudo yum install pacemaker pcs fence-agents-all resource-agentsAtur kata sandi untuk pengguna default yang dibuat saat menginstal paket Pacemaker dan Corosync. Gunakan kata sandi yang sama pada kedua simpul.
sudo passwd haclusterAktifkan dan mulai layanan
pcsddan Pacemaker. Ini akan memungkinkan simpul untuk bergabung kembali dengan kluster setelah reboot. Jalankan perintah berikut pada kedua simpul.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerInstal agen sumber daya FCI untuk SQL Server. Jalankan perintah berikut di kedua node.
sudo yum install mssql-server-ha
Mengonfigurasi agen anggar
Perangkat STONITH menyediakan agen pemutus. Menyiapkan Pacemaker di Red Hat Enterprise Linux di Azure memberikan contoh cara membuat perangkat STONITH untuk kluster ini di Azure. Ubah instruksi untuk lingkungan Anda.
Membuat kluster
Pada salah satu simpul, buat kluster.
sudo pcs cluster auth <nodeName1 nodeName2 ...> -u hacluster sudo pcs cluster setup --name <clusterName> <nodeName1 nodeName2 ...> sudo pcs cluster start --allKonfigurasikan sumber daya kluster untuk SQL Server, Sistem File, dan sumber daya IP virtual dan dorong konfigurasi ke kluster. Anda memerlukan informasi berikut:
- Nama Sumber Daya SQL Server: Nama untuk sumber daya SQL Server terkelompok.
- Nama Sumber Daya IP Terapung: Nama untuk sumber daya alamat IP virtual.
- Alamat IP: Alamat IP yang digunakan klien untuk menyambungkan ke instans terkluster SQL Server.
- Nama Sumber Daya Sistem File: Nama untuk sumber daya Sistem File.
- device: Jalur berbagi NFS
- perangkat: Jalur lokal yang terpasang pada berbagi tersebut
-
fstype: Jenis berbagi file (yaitu,
nfs)
Perbarui nilai dari skrip berikut untuk lingkungan Anda. Jalankan pada satu simpul untuk mengonfigurasi dan memulai layanan berkluster.
sudo pcs cluster cib cfg sudo pcs -f cfg resource create <sqlServerResourceName> ocf:mssql:fci sudo pcs -f cfg resource create <floatingIPResourceName> ocf:heartbeat:IPaddr2 ip=<ip Address> sudo pcs -f cfg resource create <fileShareResourceName> Filesystem device=<networkPath> directory=<localPath> fstype=<fileShareType> sudo pcs -f cfg constraint colocation add <virtualIPResourceName> <sqlResourceName> sudo pcs -f cfg constraint colocation add <fileShareResourceName> <sqlResourceName> sudo pcs cluster cib-push cfgMisalnya, skrip berikut membuat sumber daya berkluster SQL Server bernama
mssqlha, dan sumber daya IP mengambang dengan alamat10.0.0.99IP . Ini juga membuat sumber daya Filesystem dan menambahkan batasan sehingga semua sumber daya dikolokasikan pada node yang sama dengan sumber daya SQL.sudo pcs cluster cib cfg sudo pcs -f cfg resource create mssqlha ocf:mssql:fci sudo pcs -f cfg resource create virtualip ocf:heartbeat:IPaddr2 ip=10.0.0.99 sudo pcs -f cfg resource create fs Filesystem device="10.8.8.0:/mnt/nfs" directory="/var/opt/mssql/data" fstype="nfs" sudo pcs -f cfg constraint colocation add virtualip mssqlha sudo pcs -f cfg constraint colocation add fs mssqlha sudo pcs cluster cib-push cfgSetelah konfigurasi dikirim, SQL Server akan dimulai pada satu node.
Verifikasi bahwa SQL Server dimulai.
sudo pcs statusContoh berikut menunjukkan hasil ketika Pacemaker telah berhasil memulai instans terkluster SQL Server.
fs (ocf::heartbeat:Filesystem): Started sqlfcivm1 virtualip (ocf::heartbeat:IPaddr2): Started sqlfcivm1 mssqlha (ocf::mssql:fci): Started sqlfcivm1 PCSD Status: sqlfcivm1: Online sqlfcivm2: Online Daemon Status: corosync: active/disabled pacemaker: active/enabled pcsd: active/enabled