Mengonfigurasi Kluster RHEL untuk Grup Ketersediaan SQL Server

Berlaku untuk: SQL Server (semua versi yang didukung) - Linux

Dokumen ini menjelaskan cara membuat kluster grup ketersediaan tiga simpul untuk SQL Server di Red Hat Enterprise Linux. Untuk ketersediaan tinggi, grup ketersediaan di Linux memerlukan tiga simpul - lihat Ketersediaan tinggi dan perlindungan data untuk konfigurasi grup ketersediaan. Lapisan pengklusteran didasarkan pada add-on Red Hat Enterprise Linux (RHEL) HA yang dibangun di atas Pacemaker.

Catatan

Akses ke dokumentasi lengkap Red Hat memerlukan langganan yang valid.

Untuk informasi selengkapnya tentang konfigurasi kluster, opsi agen sumber daya, dan manajemen, kunjungi dokumentasi referensi RHEL.

Catatan

SQL Server tidak terintegrasi erat dengan Pacemaker di Linux seperti halnya dengan pengklusteran failover Windows Server. Instans SQL Server tidak mengetahui kluster. Pacemaker menyediakan orkestrasi sumber daya kluster. Selain itu, nama jaringan virtual khusus untuk pengklusteran failover Windows Server - tidak ada yang setara dalam Pacemaker. Tampilan manajemen dinamis (DMV) grup ketersediaan yang mengkueri informasi kluster mengembalikan baris kosong pada kluster Pacemaker. Untuk membuat pendengar untuk koneksi ulang transparan setelah failover, daftarkan nama pendengar secara manual di DNS dengan IP yang digunakan untuk membuat sumber daya IP virtual.

Bagian berikut menelusuri langkah-langkah untuk menyiapkan kluster Pacemaker dan menambahkan grup ketersediaan sebagai sumber daya di kluster untuk ketersediaan tinggi.

Peta Strategi

Langkah-langkah untuk membuat grup ketersediaan di server Linux untuk ketersediaan tinggi berbeda dari langkah-langkah pada kluster failover Windows Server. Daftar berikut ini menjelaskan langkah-langkah tingkat tinggi:

  1. Konfigurasikan SQL Server pada node kluster.

  2. Buat grup ketersediaan.

  3. Konfigurasikan manajer sumber daya kluster, seperti Pacemaker. Instruksi ini ada dalam dokumen ini.

    Cara untuk mengonfigurasi manajer sumber daya kluster tergantung pada distribusi Linux tertentu.

    Penting

    Lingkungan produksi memerlukan agen anggar, seperti STONITH untuk ketersediaan tinggi. Demonstrasi dalam dokumentasi ini tidak menggunakan agen anggar. Demonstrasi hanya untuk pengujian dan validasi.

    Kluster Linux menggunakan anggar untuk mengembalikan kluster ke status yang diketahui. Cara mengonfigurasi anggar tergantung pada distribusi dan lingkungan. Saat ini, anggar tidak tersedia di beberapa lingkungan cloud. Untuk informasi selengkapnya, lihat Kebijakan Dukungan untuk Kluster Ketersediaan Tinggi RHEL - Platform Virtualisasi.

  4. Tambahkan grup ketersediaan sebagai sumber daya di kluster.

Mengonfigurasi ketersediaan tinggi untuk RHEL

Untuk mengonfigurasi ketersediaan tinggi untuk RHEL, aktifkan langganan ketersediaan tinggi lalu konfigurasikan Pacemaker.

Mengaktifkan langganan ketersediaan tinggi untuk RHEL

Setiap simpul dalam kluster harus memiliki langganan yang sesuai untuk RHEL dan Add on Ketersediaan Tinggi. Tinjau persyaratan di Cara menginstal paket kluster Ketersediaan Tinggi di Red Hat Enterprise Linux. Ikuti langkah-langkah berikut untuk mengonfigurasi langganan dan repositori:

  1. Daftarkan sistem.

    sudo subscription-manager register
    

    Berikan nama pengguna dan kata sandi Anda.

  2. Cantumkan kumpulan yang tersedia untuk pendaftaran.

    sudo subscription-manager list --available
    

    Dari daftar kumpulan yang tersedia, perhatikan ID kumpulan untuk langganan ketersediaan tinggi.

  3. Perbarui skrip berikut. Ganti <pool id> dengan ID kumpulan untuk ketersediaan tinggi dari langkah sebelumnya. Jalankan skrip untuk melampirkan langganan.

    sudo subscription-manager attach --pool=<pool id>
    
  4. Aktifkan repositori.

    RHEL 7

    sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
    

    RHEL 8

    sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
    

Untuk informasi selengkapnya, lihat Pacemaker - Sumber Terbuka, Kluster Ketersediaan Tinggi.

Setelah Anda mengonfigurasi langganan, selesaikan langkah-langkah berikut untuk mengonfigurasi Pacemaker:

Mengonfigurasi Pacemaker

Setelah Anda mendaftarkan langganan, selesaikan langkah-langkah berikut untuk mengonfigurasi Pacemaker:

  1. Pada semua 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 firewall tidak memiliki konfigurasi ketersediaan tinggi bawaan, buka port berikut untuk Pacemaker.

    • TCP: Port 2224, 3121, 21064
    • UDP: Port 5405
  2. Instal paket Pacemaker pada semua simpul.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  3. Atur kata sandi untuk pengguna default yang dibuat saat menginstal paket Pacemaker dan Corosync. Gunakan kata sandi yang sama pada semua simpul.

    sudo passwd hacluster
    
  4. Untuk memungkinkan simpul bergabung kembali dengan kluster setelah reboot, aktifkan dan mulai pcsd layanan dan Pacemaker. Jalankan perintah berikut pada semua simpul.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  5. Buat Kluster. Untuk membuat kluster, jalankan perintah berikut:

    RHEL 7

    sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
    sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3>
    sudo pcs cluster start --all
    sudo pcs cluster enable --all
    

    RHEL8

    Untuk RHEL 8, Anda harus mengautentikasi simpul secara terpisah. Masukkan Nama Pengguna dan Kata Sandi secara manual untuk hacluster saat diminta.

    sudo pcs host auth <node1> <node2> <node3>
    sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
    sudo pcs cluster start --all
    sudo pcs cluster enable --all
    

    Catatan

    Jika sebelumnya Anda mengonfigurasi kluster pada simpul yang sama, Anda perlu menggunakan --force opsi saat menjalankan pcs cluster setup. Opsi ini setara dengan menjalankan pcs cluster destroy. Untuk mengaktifkan kembali Pacemaker, jalankan sudo systemctl enable pacemaker.

  6. Instal agen sumber daya SQL Server untuk SQL Server. Jalankan perintah berikut pada semua simpul.

    sudo yum install mssql-server-ha
    

Setelah Pacemaker dikonfigurasi, gunakan pcs untuk berinteraksi dengan kluster. Jalankan semua perintah pada satu simpul dari kluster.

Mengonfigurasi pagar (STONITH)

Vendor kluster Pacemaker mengharuskan STONITH diaktifkan dan perangkat pagar yang dikonfigurasi untuk penyiapan kluster yang didukung. STONITH adalah singkatan dari "tembak simpul lain di kepala." Ketika manajer sumber daya kluster tidak dapat menentukan status simpul atau sumber daya pada node, anggar membawa kluster ke status yang diketahui lagi.

Perangkat STONITH menyediakan agen anggar. 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.

Pemagaran tingkat sumber daya memastikan bahwa tidak ada kerusakan data jika terjadi pemadaman dengan mengonfigurasi sumber daya. Misalnya, Anda dapat menggunakan pagar tingkat sumber daya untuk menandai disk pada simpul sebagai kedaluarsa saat tautan komunikasi tidak berfungsi.

Anggar tingkat simpul memastikan bahwa simpul tidak menjalankan sumber daya apa pun. Ini dilakukan dengan mengatur ulang simpul. Pacemaker mendukung berbagai perangkat anggar. Contohnya termasuk catu daya yang tidak dapat diganggu atau kartu antarmuka manajemen untuk server.

Untuk informasi tentang STONITH, dan pagar, lihat artikel berikut ini:

Catatan

Karena konfigurasi anggar tingkat simpul sangat bergantung pada lingkungan Anda, nonaktifkan untuk tutorial ini (dapat dikonfigurasi nanti). Skrip berikut menonaktifkan anggar tingkat simpul:

sudo pcs property set stonith-enabled=false

Menonaktifkan STONITH hanya untuk tujuan pengujian. Jika Anda berencana menggunakan Pacemaker di lingkungan produksi, Anda harus merencanakan implementasi STONITH tergantung pada lingkungan Anda dan tetap mengaktifkannya.

Mengatur cluster-recheck-interval properti kluster

cluster-recheck-interval menunjukkan interval polling di mana kluster memeriksa perubahan parameter sumber daya, batasan, atau opsi kluster lainnya. Jika replika turun, kluster mencoba memulai ulang replika pada interval yang terikat oleh failure-timeout nilai dan cluster-recheck-interval nilai . Misalnya, jika failure-timeout diatur ke 60 detik dan cluster-recheck-interval diatur ke 120 detik, hidupkan ulang dicoba pada interval yang lebih besar dari 60 detik tetapi kurang dari 120 detik. Kami menyarankan agar Anda mengatur batas waktu kegagalan menjadi 60 detik dan interval pemeriksaan ulang kluster ke nilai yang lebih besar dari 60 detik. Mengatur cluster-recheck-interval ke nilai kecil tidak disarankan.

Untuk memperbarui nilai properti yang 2 minutes akan dijalankan:

sudo pcs property set cluster-recheck-interval=2min

Penting

Semua distribusi yang menggunakan paket Pacemaker terbaru yang tersedia 1.1.18-11.el7 memperkenalkan perubahan perilaku untuk pengaturan kluster start-failure-is-fatal ketika nilainya salah. Perubahan ini memengaruhi alur kerja failover. Jika replika utama mengalami pemadaman, kluster diharapkan melakukan failover ke salah satu replika sekunder yang tersedia. Sebagai gantinya, pengguna akan melihat bahwa kluster terus mencoba memulai replika utama yang gagal. Jika primer tersebut tidak pernah online (karena pemadaman permanen), kluster tidak pernah gagal ke replika sekunder lain yang tersedia. Karena perubahan ini, konfigurasi yang sebelumnya direkomendasikan untuk mengatur start-failure-is-fatal tidak lagi valid dan pengaturan perlu dikembalikan ke nilai truedefaultnya. Selain itu, sumber daya AG perlu diperbarui untuk menyertakan failover-timeout properti .

Untuk memperbarui nilai properti yang true akan dijalankan:

sudo pcs property set start-failure-is-fatal=true

Untuk memperbarui properti failure-timeout sumber daya yang 60sag_cluster akan dijalankan:

pcs resource update ag_cluster meta failure-timeout=60s

Untuk informasi tentang properti kluster Pacemaker, lihat Properti Kluster Pacemaker.

Membuat data masuk SQL Server untuk Pacemaker

  1. Di semua SQL Server, buat login Server untuk Pacemaker. Transact-SQL berikut membuat login:

    USE [master]
    GO
    CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
    

    Pada saat pembuatan grup ketersediaan, pengguna pacemaker akan memerlukan izin ALTER, CONTROL, dan VIEW DEFINITION pada grup ketersediaan, setelah dibuat tetapi sebelum node ditambahkan ke dalamnya.

  2. Di semua SQL Server, simpan kredensial untuk login SQL Server.

    echo 'pacemakerLogin' >> ~/pacemaker-passwd
    echo 'ComplexP@$$w0rd!' >> ~/pacemaker-passwd
    sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
    

Membuat sumber daya grup ketersediaan

Untuk membuat sumber daya grup ketersediaan, gunakan pcs resource create perintah dan atur properti sumber daya. Perintah berikut membuat ocf:mssql:ag sumber daya jenis master/subordinat untuk grup ketersediaan dengan nama ag1.

RHEL 7

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true

RHEL 8

Dengan ketersediaan RHEL 8, sintaksis buat telah berubah. Jika Anda menggunakan RHEL 8, terminologi master telah berubah menjadi promotable. Gunakan perintah buat berikut alih-alih perintah di atas:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true

Catatan

Saat Anda membuat sumber daya, dan secara berkala setelahnya, agen sumber daya Pacemaker secara otomatis menetapkan nilai REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT pada grup ketersediaan berdasarkan konfigurasi grup ketersediaan. Misalnya, jika grup ketersediaan memiliki tiga replika sinkron, agen akan mengatur REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ke 1. Untuk detail dan opsi konfigurasi tambahan, lihat Ketersediaan tinggi dan perlindungan data untuk konfigurasi grup ketersediaan.

Membuat sumber daya IP virtual

Untuk membuat sumber daya alamat IP virtual, jalankan perintah berikut pada satu simpul. Gunakan alamat IP statis yang tersedia dari jaringan. Ganti alamat IP antara <10.128.16.240> dengan alamat IP yang valid.

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>

Tidak ada nama server virtual yang setara di Pacemaker. Untuk menggunakan string koneksi yang menunjuk ke nama server string, bukan alamat IP, daftarkan alamat sumber daya IP virtual dan nama server virtual yang diinginkan di DNS. Untuk konfigurasi DR, daftarkan nama server virtual dan alamat IP yang diinginkan dengan server DNS di situs utama dan DR.

Menambahkan batasan kolokasi

Hampir setiap keputusan dalam kluster Pacemaker, seperti memilih tempat sumber daya harus dijalankan, dilakukan dengan membandingkan skor. Skor dihitung per sumber daya. Manajer sumber daya kluster memilih simpul dengan skor tertinggi untuk sumber daya tertentu. Jika simpul memiliki skor negatif untuk sumber daya, sumber daya tidak dapat berjalan pada simpul tersebut.

Pada kluster pacemaker, Anda dapat memanipulasi keputusan kluster dengan batasan. Batasan memiliki skor. Jika batasan memiliki skor yang lebih rendah dari INFINITY, Pacemaker menganggapnya sebagai rekomendasi. Skor INFINITY adalah wajib.

Untuk memastikan bahwa replika utama dan sumber daya ip virtual berjalan pada host yang sama, tentukan batasan kolokasi dengan skor INFINITY. Untuk menambahkan batasan kolokasi, jalankan perintah berikut pada satu simpul.

RHEL 7

Saat Anda membuat ag_cluster sumber daya di RHEL 7, sumber daya akan dibuat sebagai ag_cluster-master. Gunakan perintah berikut untuk RHEL 7:

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master

RHEL 8

Saat Anda membuat ag_cluster sumber daya di RHEL 8, sumber daya akan dibuat sebagai ag_cluster-clone. Gunakan perintah berikut untuk RHEL 8:

sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master

Menambahkan batasan pemesanan

Batasan kolokasi memiliki batasan pengurutan implisit. Ini memindahkan sumber daya IP virtual sebelum memindahkan sumber daya grup ketersediaan. Secara default urutan peristiwa adalah:

  1. Masalah pcs resource move pengguna ke grup ketersediaan utama dari node1 ke node2.

  2. Sumber daya IP virtual berhenti pada simpul 1.

  3. Sumber daya IP virtual dimulai pada simpul 2.

    Catatan

    Pada titik ini, alamat IP untuk sementara menunjuk ke simpul 2 sementara simpul 2 masih merupakan sekunder pra-failover.

  4. Grup ketersediaan utama pada simpul 1 diturunkan ke sekunder.

  5. Grup ketersediaan sekunder pada simpul 2 dipromosikan ke primer.

Untuk mencegah alamat IP menunjuk sementara ke simpul dengan sekunder pra-failover, tambahkan batasan pemesanan.

Untuk menambahkan batasan pemesanan, jalankan perintah berikut pada satu simpul:

RHEL 7

sudo pcs constraint order promote ag_cluster-master then start virtualip

RHEL 8

sudo pcs constraint order promote ag_cluster-clone then start virtualip

Penting

Setelah mengonfigurasi kluster dan menambahkan grup ketersediaan sebagai sumber daya kluster, Anda tidak dapat menggunakan Transact-SQL untuk mengalihkan sumber daya grup ketersediaan. SQL Server sumber daya kluster di Linux tidak digabungkan seketat dengan sistem operasi seperti pada Kluster Failover Windows Server (WSFC). layanan SQL Server tidak menyadari keberadaan kluster. Semua orkestrasi dilakukan melalui alat manajemen kluster. Dalam RHEL atau Ubuntu gunakan pcs dan di SLES gunakan crm alat.

Failover grup ketersediaan secara manual dengan pcs. Jangan memulai failover dengan Transact-SQL. Untuk mengetahui petunjuknya, lihat Failover.

Langkah berikutnya

Mengoperasikan grup ketersediaan HA