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

  1. Instal dan siapkan SQL Server pada kedua simpul. Untuk petunjuk terperinci, lihat Menginstal SQL Server di Linux.

  2. Menunjuk satu simpul sebagai primer dan yang lain sebagai sekunder, untuk tujuan konfigurasi. Gunakan istilah-istilah ini untuk panduan berikut ini.

  3. 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.

  4. 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
    

    Koneksi 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 dengan sp_server_diagnostics, setupadmin, dan ALTER ANY LINKED SERVER untuk memperbarui nama instans FCI dengan nama sumber daya, dengan menjalankan sp_dropserver dan sp_addserver.

  5. 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.

  1. Periksa alamat IP untuk setiap simpul. Skrip berikut menunjukkan alamat IP simpul Anda saat ini.

    sudo ip addr show
    
  2. 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 dengan vi.

    sudo vi /etc/hosts
    

    Contoh berikut menunjukkan /etc/hosts dengan penambahan untuk dua simpul bernama sqlfcivm1 dan sqlfcivm2.

    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:

Menginstal dan mengonfigurasi Pacemaker pada setiap node kluster

  1. 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
    
  2. 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
  3. Instal paket Pacemaker pada setiap simpul.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. 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
    
  5. 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
    
  6. 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:

  1. Sumber daya penyimpanan
  2. Sumber daya jaringan
  3. 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.

  1. 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/datamenjadi )
    • <FileSystemType> akan menjadi EXT4 atau XFS, tergantung pada bagaimana hal-hal diformat dan apa yang didukung distribusi.

  1. 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
  2. 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.
  3. Jalankan perintah sudo pcs resource. FCI harus online.

  4. Koneksi ke FCI dengan SQL Server Management Directory atau sqlcmd menggunakan NAMA DNS/sumber daya FCI.

  5. Terbitkan pernyataan SELECT @@SERVERNAME. Ini harus mengembalikan nama FCI.

  6. Terbitkan pernyataan SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). Ini harus mengembalikan nama node tempat FCI berjalan.

  7. Gagalkan FCI secara manual ke simpul lain. Lihat instruksi di bawah Mengoperasikan instans kluster failover - SQL Server di Linux.

  8. 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