Bagikan melalui


Mengonfigurasi kluster Pacemaker untuk grup ketersediaan SQL Server

Berlaku untuk:SQL Server di Linux

Artikel ini menjelaskan cara membuat kluster tiga node di Linux menggunakan Pacemaker, dan menambahkan grup ketersediaan yang dibuat sebelumnya sebagai sumber daya di kluster. Untuk ketersediaan tinggi, grup ketersediaan di Linux memerlukan tiga simpul - lihat Ketersediaan tinggi dan perlindungan data untuk konfigurasi grup ketersediaan.

Catatan

Artikel ini berisi referensi ke istilah slave, istilah yang tidak lagi digunakan Microsoft. Ketika istilah tersebut dihapus dari perangkat lunak, kami menghapusnya dari artikel ini.

SQL Server tidak terintegrasi erat dengan Pacemaker di Linux seperti halnya dengan pengklusteran failover Windows Server (WSFC). Instans SQL Server tidak mengetahui kluster, dan semua orkestrasi berasal dari luar masuk. Pacemaker menyediakan orkestrasi sumber daya kluster. Selain itu, nama jaringan virtual khusus untuk pengklusteran failover Windows Server; tidak ada yang setara di Pacemaker. Tampilan manajemen dinamis grup ketersediaan (DMV) 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.

Anda masih dapat membuat pendengar untuk koneksi ulang transparan setelah failover, tetapi Anda harus mendaftarkan nama pendengar secara manual di server DNS dengan IP yang digunakan untuk membuat sumber daya IP virtual (seperti yang dijelaskan di bagian berikut).

Bagian berikut menelusuri langkah-langkah untuk menyiapkan kluster Pacemaker dan menambahkan grup ketersediaan sebagai sumber daya di kluster untuk ketersediaan tinggi, untuk setiap distribusi Linux yang didukung.

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.

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 di artikel ini.

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

    Penting

    Lingkungan produksi memerlukan agen pembatas untuk ketersediaan tinggi. Demonstrasi dalam dokumentasi ini tidak menggunakan agen anggar. Demonstrasi hanya untuk pengujian dan validasi. Kluster Linux menggunakan pengamanan untuk mengembalikan kluster ke status yang dikenal. Cara mengonfigurasi fencing 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 ini 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
    

    Catatan

    Untuk RHEL 10, perintah daftar adalah sebagai berikut:

    sudo subscription-manager repos --list
    

    Dari daftar kumpulan yang tersedia, catat 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
    

    RHEL 9

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

    RHEL 10

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

Untuk informasi selengkapnya, lihat Pacemaker - Kluster Ketersediaan Tinggi, Open Source.

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 klaster setelah restart, aktifkan dan mulai layanan pcsd 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 pada satu simpul:

    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
    

    RHEL 8 dan versi yang lebih baru

    Untuk RHEL 8 dan versi yang lebih baru, Anda perlu mengautentikasi simpul secara terpisah. Masukkan nama pengguna dan kata sandi hacluster secara manual 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.

Pertimbangan untuk beberapa antarmuka jaringan (NIC)

Saat menyiapkan ketersediaan tinggi dengan server yang memiliki beberapa NIC, ikuti saran berikut:

  • Pastikan file hosts dikonfigurasi agar alamat IP server dari beberapa antarmuka jaringan dipetakan ke nama host server Linux pada setiap simpul.

  • Saat menyiapkan klaster menggunakan Pacemaker, penggunaan nama host server seharusnya mengonfigurasi Corosync untuk mengatur semua NIC. Kami hanya ingin komunikasi Pacemaker/Corosync melalui satu NIC. Setelah kluster Pacemaker dikonfigurasi, ubah konfigurasi dalam corosync.conf file, dan perbarui alamat IP untuk NIC khusus yang ingin Anda gunakan untuk komunikasi Pacemaker/Corosync.

  • Yang <hostname> yang diberikan dalam file corosync.conf harus sama dengan output yang dihasilkan saat melakukan pencarian terbalik (ping -a <ip_address>), dan itu harus merupakan nama pendek yang dikonfigurasi pada host. Pastikan hosts file juga mewakili alamat IP yang tepat untuk resolusi nama.

Perubahan pada contoh file corosync.conf disorot di bawah ini:

  nodelist {
    node {
        ring0_addr: <ip_address_of_node1_NIC1>
        name: <hostname_of_node1>
        nodeid: 1
    }
    node {
        ring0_addr: <ip_address_of_node2_NIC1>
        name: <hostname_of_node2>
        nodeid: 2
    }
    node {
        ring0_addr: <ip_address_of_node3_NIC1>
        name: <hostname_of_node3>
        nodeid: 3
    }
  }

Mengonfigurasi perangkat pembatas

Vendor kluster Pacemaker memerlukan isolasi node yang gagal menggunakan perangkat fencing yang dikonfigurasi untuk penyiapan kluster yang didukung. Ketika pengelola sumber daya kluster tidak dapat menentukan status simpul atau sumber daya pada simpul, pengamanan otomatis membawa kluster ke keadaan yang diketahui.

Perangkat pagar menyediakan agen anggar. Menyiapkan Pacemaker di Red Hat Enterprise Linux di Azure memberikan contoh cara membuat perangkat pelindung untuk kluster ini di Azure. Ubah instruksi untuk lingkungan Anda.

Pemagaran tingkat sumber daya memastikan bahwa tidak ada kerusakan data dalam pemadaman dengan mengonfigurasi sumber daya. Misalnya, Anda dapat menggunakan pembatasan level sumber daya untuk menandai disk pada node sebagai usang ketika koneksi komunikasi terputus.

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

Untuk informasi tentang mengisolasi node yang gagal, lihat artikel berikut ini:

Catatan

Karena konfigurasi pagar tingkat node sangat bergantung pada lingkungan Anda, nonaktifkan untuk tutorial ini (dapat dikonfigurasi nanti). Skrip berikut menonaktifkan pembatasan level simpul.

sudo pcs property set stonith-enabled=false

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

Atur properti kluster interval pemeriksaan ulang

cluster-recheck-interval menunjukkan interval polling di mana kluster memeriksa perubahan parameter sumber daya, batasan, atau opsi kluster lainnya. Jika replika mengalami kegagalan, kluster mencoba menghidupkan ulang replika dalam interval yang ditentukan oleh nilai failure-timeout dan nilai cluster-recheck-interval. Misalnya, jika failure-timeout diatur ke 60 detik dan cluster-recheck-interval diatur ke 120 detik, mulai ulang dicoba pada interval yang lebih besar dari 60 detik tetapi kurang dari 120 detik. Kami menyarankan agar Anda menyetel waktu habis kegagalan menjadi 60 detik dan cluster-recheck-interval ke nilai yang lebih besar dari 60 detik. Pengaturan cluster-recheck-interval ke nilai kecil tidak disarankan.

Untuk memperbarui nilai properti, jalankan: 2 minutes

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

Jika Anda sudah memiliki kelompok ketersediaan yang dikelola oleh klaster Pacemaker, paket Pacemaker 1.1.18-11.el7 memperkenalkan perubahan perilaku untuk pengaturan klaster saat nilainya adalah start-failure-is-fatal. Perubahan ini memengaruhi alur kerja failover. Jika replika utama mengalami pemadaman, kluster diharapkan akan beralih ke salah satu replika sekunder yang tersedia. Sebagai gantinya, pengguna melihat bahwa kluster terus mencoba memulai replika utama yang gagal. Jika primer tersebut tidak pernah online (karena pemadaman permanen), kluster tidak pernah beralih ke replika sekunder lain yang tersedia. Karena perubahan ini, konfigurasi yang disarankan sebelumnya untuk diatur start-failure-is-fatal tidak lagi valid, dan pengaturan perlu dikembalikan ke nilai defaultnya.true

Selain itu, sumber daya AG perlu diperbarui untuk menyertakan properti failure-timeout.

Untuk memperbarui nilai properti, jalankan: true

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

Untuk memperbarui properti sumber daya ag_clusterfailure-timeout ke 60s, jalankan:

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

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.

  1. Pada semua instans SQL Server, buat login server untuk Pacemaker.

    Transact-SQL berikut ini membuat login. Ganti <password> dengan kata sandi kompleks Anda sendiri.

    USE [master];
    GO
    
    CREATE LOGIN [pacemakerLogin]
        WITH PASSWORD = N'<password>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
    

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

  2. Pada semua instans SQL Server, simpan kredensial untuk login SQL Server.

    Ganti <password> dengan kata sandi kompleks Anda sendiri.

    echo 'pacemakerLogin' >> ~/pacemaker-passwd
    echo '<password>' >> ~/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. Jalankan perintah berikut pada satu simpul.

RHEL 7

Gunakan perintah berikut create :

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

RHEL 8 dan versi yang lebih baru

Gunakan perintah berikut create :

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 informasi lebih lanjut 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 nilai. Jika batasan memiliki skor yang lebih rendah dari INFINITY, Pacemaker menganggapnya sebagai rekomendasi. Skor INFINITY bersifat 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:

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

RHEL 9 dan versi yang lebih baru

Saat Anda membuat sumber daya ag_cluster di RHEL 9 serta versi-versi yang lebih baru, sumber daya tersebut dibuat sebagai ag_cluster-clone. Gunakan perintah berikut:

sudo pcs constraint colocation add virtualip with promoted ag_cluster-clone INFINITY with-rsc-role=Promoted

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. Pengguna mengeluarkan perintah pcs resource move 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

    Saat ini, alamat IP sementara menunjuk ke simpul 2, sedangkan simpul 2 masih merupakan sekunder sebelum failover.

  4. Grup ketersediaan utama pada node 1 diganti ke sekunder.

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

Untuk mencegah alamat IP menunjuk sementara ke simpul dengan sekunder sebelum failover, tambahkan kendala pengurutan.

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

RHEL 7

sudo pcs constraint order promote ag_cluster-master then start virtualip

RHEL 8 dan versi yang lebih baru

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 melakukan failover pada sumber daya grup ketersediaan. Sumber daya kluster SQL Server di Linux tidak digabungkan seketat dengan sistem operasi seperti yang ada di Windows Server Failover Cluster (WSFC). Layanan SQL Server tidak mengetahui keberadaan kluster. Semua orkestrasi dilakukan melalui alat manajemen kluster. Di RHEL atau Ubuntu gunakan pcs dan di SLES gunakan crm alat.

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