Mengonfigurasi instans kluster failover - SQL Server di Linux (RHEL)
Berlaku untuk: SQL Server - Linux
Instans kluster failover disk bersama dua node SQL Server menyediakan redundansi tingkat server untuk ketersediaan tinggi. Dalam tutorial ini, Anda mempelajari cara membuat instans kluster failover dua node SQL Server di Linux. Langkah-langkah spesifik yang akan Anda selesaikan meliputi:
- Menyiapkan dan mengonfigurasi Linux
- Menginstal dan mengonfigurasi SQL Server
- Mengonfigurasi file host
- Mengonfigurasi penyimpanan bersama dan memindahkan file database
- Menginstal dan mengonfigurasi Pacemaker pada setiap node kluster
- Mengonfigurasi instans kluster failover
Artikel ini menjelaskan cara membuat instans kluster failover disk bersama (FCI) dua node untuk SQL Server. Artikel ini mencakup instruksi dan contoh skrip untuk Red Hat Enterprise Linux (RHEL). Distribusi Ubuntu mirip dengan RHEL sehingga contoh skrip biasanya juga akan berfungsi pada Ubuntu.
Untuk informasi konseptual, lihat Instans Kluster Failover SQL Server (FCI) di Linux.
Prasyarat
Untuk menyelesaikan skenario end-to-end berikut, Anda memerlukan dua komputer untuk menyebarkan kluster dua node dan server lain untuk penyimpanan. Langkah-langkah di bawah ini menguraikan bagaimana server ini akan dikonfigurasi.
Menyiapkan dan mengonfigurasi Linux
Langkah pertama adalah mengonfigurasi sistem operasi pada node kluster. Pada setiap simpul dalam kluster, konfigurasikan distribusi linux. Gunakan distribusi dan versi yang sama pada kedua simpul. Gunakan salah satu atau yang lain dari distribusi berikut:
- RHEL dengan langganan yang valid untuk add-on HA
Menginstal dan mengonfigurasi SQL Server
Instal dan siapkan SQL Server pada kedua simpul. Untuk petunjuk terperinci, lihat Menginstal 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 disebutmssql
. 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 lokalmssql
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-server
Sambungkan ke database SQL Server
master
dengan akun sa dan jalankan hal berikut:USE [master] GO CREATE LOGIN [<loginName>] with PASSWORD = N'<loginPassword>' ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>]
Atau, Anda dapat mengatur izin pada tingkat yang lebih terperinci. Login Pacemaker mengharuskan
VIEW SERVER STATE
untuk mengkueri status kesehatan dengansp_server_diagnostics
, setupadmin, dan ALTER ANY LINKED SERVER untuk memperbarui nama instans FCI dengan nama sumber daya, dengan menjalankansp_dropserver
dansp_addserver
.Pada simpul utama, hentikan dan nonaktifkan SQL Server.
Mengonfigurasi file host
Pada setiap node kluster, konfigurasikan file host. 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 show
Atur nama komputer pada setiap simpul. Beri nama unik untuk setiap node yang didasarkan pada 15 karakter atau kurang. Atur nama komputer dengan menambahkannya ke
/etc/hosts
. Skrip berikut memungkinkan Anda mengedit/etc/hosts
denganvi
.sudo vi /etc/hosts
Contoh berikut menunjukkan
/etc/hosts
dengan penambahan untuk dua simpul bernamasqlfcivm1
dansqlfcivm2
.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Mengonfigurasi penyimpanan dan memindahkan file database
Anda perlu menyediakan penyimpanan yang dapat diakses oleh kedua simpul. Anda dapat menggunakan iSCSI, NFS, atau SMB. Konfigurasikan penyimpanan, sajikan penyimpanan ke node kluster, lalu pindahkan file database ke penyimpanan baru. Artikel berikut menjelaskan langkah-langkah untuk setiap jenis penyimpanan:
- Mengonfigurasi instans kluster failover - iSCSI - SQL Server di Linux
- Mengonfigurasi instans kluster failover - NFS - SQL Server di Linux
- Mengonfigurasi instans kluster failover - SMB - SQL Server di Linux
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 sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwd
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 --reload
Jika 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-agents
Atur kata sandi untuk pengguna default yang dibuat saat menginstal paket Pacemaker dan Corosync. Gunakan kata sandi yang sama pada kedua simpul.
sudo passwd hacluster
Aktifkan dan mulai
pcsd
layanan dan 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 pacemaker
Instal agen sumber daya FCI untuk SQL Server. Jalankan perintah berikut di kedua node.
sudo yum install mssql-server-ha
Mengonfigurasi instans kluster failover
FCI akan dibuat dalam grup sumber daya. Ini sedikit lebih mudah karena grup sumber daya meringankan kebutuhan akan batasan. Namun, tambahkan sumber daya ke dalam grup sumber daya dalam urutan yang harus mereka mulai. Urutan yang harus mereka mulai adalah:
- Sumber daya penyimpanan
- Sumber daya jaringan
- Sumber daya aplikasi
Contoh ini membuat FCI dalam grup NewLinFCIGrp. Nama grup sumber daya harus unik dari sumber daya apa pun yang dibuat di Pacemaker.
Buat sumber daya disk. Anda tidak mendapatkan respons kembali jika tidak ada masalah. Cara membuat sumber daya disk tergantung pada jenis penyimpanan. Bagian berikut menunjukkan contoh untuk setiap jenis penyimpanan (iSCSI, NFS, dan SMB). Gunakan contoh yang berlaku untuk jenis penyimpanan untuk penyimpanan berkluster Anda.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
<iSCSIDIskResourceName>
adalah nama sumber daya yang terkait dengan disk iSCSI<VolumeGroupName>
adalah nama grup volume<LogicalVolumeName>
adalah nama volume logis yang dibuat<FolderToMountiSCSIDIsk>
adalah folder untuk memasang disk (untuk database sistem dan lokasi default, itu akan/var/opt/mssql/data
menjadi )<FileSystemType>
akan menjadi EXT4 atau XFS, tergantung pada bagaimana hal-hal diformat dan apa yang didukung distribusi.
Buat alamat IP yang akan digunakan oleh FCI. Anda tidak mendapatkan respons kembali jika tidak ada masalah.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
<IPResourceName>
adalah nama sumber daya yang terkait dengan alamat IP<IPAddress>
adalah alamat IP untuk FCI<NetworkCard>
adalah kartu jaringan yang terkait dengan subnet (yaitu, eth0)<NetMask>
adalah netmask subnet (yaitu, 24)<RGName>
adalah nama grup sumber daya
Buat sumber daya FCI. Anda tidak mendapatkan respons kembali jika tidak ada masalah.
sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
<FCIResourceName>
bukan hanya nama sumber daya, tetapi nama ramah yang terkait dengan FCI. Inilah yang digunakan pengguna dan aplikasi untuk terhubung.<RGName>
adalah nama grup sumber daya.
Jalankan perintah
sudo pcs resource
. FCI harus online.Sambungkan ke FCI dengan SSMS atau sqlcmd menggunakan DNS/nama sumber daya FCI.
Terbitkan pernyataan
SELECT @@SERVERNAME
. Ini harus mengembalikan nama FCI.Terbitkan pernyataan
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
. Ini harus mengembalikan nama node tempat FCI berjalan.Gagalkan FCI secara manual ke simpul lain. Lihat instruksi di bawah Mengoperasikan instans kluster failover - SQL Server di Linux.
Terakhir, gagalkan FCI kembali ke node asli dan hapus batasan kolokasi.
Ringkasan
Dalam tutorial ini, Anda menyelesaikan tugas-tugas berikut.
- Menyiapkan dan mengonfigurasi Linux
- Menginstal dan mengonfigurasi SQL Server
- Mengonfigurasi file host
- Mengonfigurasi penyimpanan bersama dan memindahkan file database
- Menginstal dan mengonfigurasi Pacemaker pada setiap node kluster
- Mengonfigurasi instans kluster failover