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.
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.
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:
Konfigurasikan SQL Server pada node kluster.
Buat grup ketersediaan.
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 anggar 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.
Tambahkan grup ketersediaan sebagai sumber daya di kluster.
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:
Daftarkan sistem.
sudo subscription-manager register
Berikan nama pengguna dan kata sandi Anda.
Cantumkan kumpulan yang tersedia untuk pendaftaran.
sudo subscription-manager list --available
Dari daftar kumpulan yang tersedia, perhatikan ID kumpulan untuk langganan ketersediaan tinggi.
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>
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 - Kluster Open Source, Ketersediaan Tinggi.
Setelah Anda mengonfigurasi langganan, selesaikan langkah-langkah berikut untuk mengonfigurasi Pacemaker:
Setelah Anda mendaftarkan langganan, selesaikan langkah-langkah berikut untuk mengonfigurasi Pacemaker:
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
Instal paket Pacemaker pada semua 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 semua simpul.
sudo passwd hacluster
Untuk memungkinkan simpul bergabung kembali dengan kluster setelah menghidupkan ulang, 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
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
RHEL 8
Untuk RHEL 8, Anda perlu mengautentikasi simpul secara terpisah. Masukkan secara manual di Nama Pengguna dan Kata Sandi 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
.
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 hosts
file disiapkan sehingga alamat IP server untuk beberapa NIC diselesaikan ke nama host server Linux pada setiap simpul.
Saat menyiapkan kluster menggunakan Pacemaker, menggunakan nama host server harus mengonfigurasi Corosync untuk mengatur konfigurasi untuk 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>
diberikan dalam corosync.conf
file harus sama dengan output yang diberikan saat melakukan pencarian terbalik (ping -a <ip_address>
), dan harus menjadi nama pendek yang dikonfigurasi pada host. Pastikan hosts
file juga mewakili alamat IP yang tepat untuk resolusi nama.
Perubahan pada corosync.conf
contoh file 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
}
}
Vendor kluster Pacemaker memerlukan pemagaran node yang gagal, menggunakan perangkat anggar yang dikonfigurasi untuk penyiapan kluster yang didukung. Ketika manajer sumber daya kluster tidak dapat menentukan status simpul atau sumber daya pada node, anggar membawa kluster ke status yang diketahui lagi.
Perangkat pagar menyediakan agen anggar. Menyiapkan Pacemaker di Red Hat Enterprise Linux di Azure memberikan contoh cara membuat perangkat pagar 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 anggar tingkat sumber daya untuk menandai disk pada node sebagai kedaluarsa saat tautan komunikasi tidak berfungsi.
Anggar tingkat node memastikan bahwa node tidak menjalankan 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 anggar 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 anggar tingkat 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 interval cluster-recheck-property 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 menghidupkan 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, mulai ulang dicoba pada interval yang lebih besar dari 60 detik tetapi kurang dari 120 detik. Kami menyarankan agar Anda mengatur 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 yang akan 2 minutes
dijalankan:
sudo pcs property set cluster-recheck-interval=2min
Jika Anda sudah memiliki sumber daya grup ketersediaan yang dikelola oleh kluster Pacemaker, paket Pacemaker 1.1.18-11.el7 memperkenalkan perubahan perilaku untuk start-failure-is-fatal
pengaturan kluster saat nilainya adalah false
. Perubahan ini memengaruhi alur kerja failover. Jika replika utama mengalami pemadaman, kluster diperkirakan akan gagal 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 gagal 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 failure-timeout
properti .
Untuk memperbarui nilai properti yang akan true
dijalankan:
sudo pcs property set start-failure-is-fatal=true
Untuk memperbarui ag_cluster
properti failure-timeout
sumber daya 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
Pada semua instans 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 memerlukan ALTER
izin , , CONTROL
dan VIEW DEFINITION
pada grup ketersediaan, setelah dibuat tetapi sebelum node ditambahkan ke dalamnya.
Pada semua instans 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 diatur 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
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 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:
Masalah pcs resource move
pengguna ke grup ketersediaan utama dari node1 ke node2.
Sumber daya IP virtual berhenti pada simpul 1.
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.
Grup ketersediaan utama pada simpul 1 diturunkan ke sekunder.
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 pengurutan, 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 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 pcs
. Jangan memulai failover dengan Transact-SQL. Untuk petunjuknya, lihat Failover.
Konten terkait
Lapisan pengklusteran didasarkan pada SUSE High Availability Extension (HAE) yang dibangun di atas Pacemaker.
Untuk informasi selengkapnya tentang konfigurasi kluster, opsi agen sumber daya, manajemen, praktik terbaik, dan rekomendasi, lihat Ekstensi Ketersediaan Tinggi SUSE Linux Enterprise.
Peta Strategi
Prosedur untuk membuat grup ketersediaan untuk ketersediaan tinggi berbeda antara server Linux dan kluster failover Windows Server. Daftar berikut ini menjelaskan langkah-langkah tingkat tinggi:
Konfigurasikan SQL Server pada node kluster.
Buat grup ketersediaan.
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 anggar untuk ketersediaan tinggi. Contoh dalam artikel ini tidak menggunakan agen anggar. Mereka 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 Ekstensi Ketersediaan Tinggi SUSE Linux Enterprise.
Menambahkan grup ketersediaan sebagai sumber daya di kluster
Prasyarat
Untuk menyelesaikan skenario end-to-end berikut, Anda memerlukan tiga komputer untuk menyebarkan kluster tiga node. Langkah-langkah berikut menguraikan cara mengonfigurasi server ini.
Langkah pertama adalah mengonfigurasi sistem operasi pada node kluster. Untuk panduan ini, gunakan SLES 12 SP3 dengan langganan yang valid untuk add-on HA.
Instal dan siapkan layanan SQL Server pada semua simpul. Untuk petunjuk terperinci, lihat Panduan penginstalan untuk SQL Server di Linux.
Menunjuk satu simpul sebagai node utama dan lainnya sebagai sekunder. Gunakan istilah-istilah ini di seluruh panduan ini.
Pastikan simpul yang akan menjadi bagian dari kluster dapat berkomunikasi satu sama lain.
Contoh berikut menunjukkan /etc/hosts
dengan penambahan untuk tiga simpul bernama SLES1, SLES2, dan SLES3.
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
Semua node kluster harus dapat mengakses satu sama lain melalui SSH. Alat seperti hb_report
atau crm_report
(untuk pemecahan masalah) dan Hawk's History Explorer memerlukan akses SSH tanpa kata sandi antara simpul, jika tidak, mereka hanya dapat mengumpulkan data dari simpul saat ini. Jika Anda menggunakan port SSH non-standar, gunakan opsi -X (lihat man
halaman). Misalnya, jika port SSH Anda adalah 3479, panggil crm_report
dengan:
sudo crm_report -X "-p 3479" [...]
Untuk informasi selengkapnya, lihat bagian Panduan Administrasi SLES - Lain-lain.
Membuat data masuk SQL Server untuk Pacemaker
Pada semua instans 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 memerlukan ALTER
izin , , CONTROL
dan VIEW DEFINITION
pada grup ketersediaan, setelah dibuat tetapi sebelum node ditambahkan ke dalamnya.
Pada semua instans 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
Di server Linux, konfigurasikan grup ketersediaan lalu konfigurasikan sumber daya kluster. Untuk mengonfigurasi grup ketersediaan, lihat Mengonfigurasi Grup Ketersediaan AlwaysOn SQL Server untuk ketersediaan tinggi di Linux
Menginstal ekstensi Ketersediaan Tinggi
Untuk referensi, lihat Menginstal SUSE Linux Enterprise Server dan Ekstensi Ketersediaan Tinggi.
Instal paket agen sumber daya SQL Server pada kedua simpul.
sudo zypper install mssql-server-ha
Menyiapkan simpul pertama
Lihat instruksi penginstalan SLES.
Masuk ke root
komputer fisik atau virtual yang ingin Anda gunakan sebagai node kluster.
Mulai skrip bootstrap dengan mengeksekusi:
sudo ha-cluster-init
Jika NTP belum dikonfigurasi untuk memulai pada waktu boot, pesan akan muncul.
Jika Anda tetap memutuskan untuk melanjutkan, skrip secara otomatis menghasilkan kunci untuk akses SSH dan alat sinkronisasi Csync2, dan memulai layanan yang diperlukan untuk keduanya.
Untuk mengonfigurasi lapisan komunikasi kluster (Corosync):
Masukkan alamat jaringan yang akan diikat. Secara default, skrip mengusulkan alamat jaringan eth0. Atau, masukkan alamat jaringan yang berbeda, misalnya alamat bond0.
Masukkan alamat multicast. Skrip mengusulkan alamat acak yang dapat Anda gunakan sebagai default.
Masukkan port multicast. Skrip mengusulkan 5405 sebagai default.
Untuk mengonfigurasi SBD ()
, masukkan jalur persisten ke partisi perangkat blok yang ingin Anda gunakan untuk SBD. Jalur harus konsisten di semua simpul dalam kluster.
Akhirnya, skrip akan memulai layanan Pacemaker untuk membawa kluster satu node online dan mengaktifkan antarmuka manajemen Web Hawk2. URL yang digunakan untuk Hawk2 ditampilkan di layar.
Untuk detail proses penyiapan, periksa /var/log/sleha-bootstrap.log
. Anda sekarang memiliki kluster satu node yang sedang berjalan. Periksa status kluster dengan status crm:
sudo crm status
Anda juga dapat melihat konfigurasi kluster dengan crm configure show xml
atau crm configure show
.
Prosedur bootstrap membuat pengguna Linux bernama hacluster dengan linux kata sandi. Ganti kata sandi default dengan kata sandi yang aman sesegera mungkin:
sudo passwd hacluster
Menambahkan simpul ke kluster yang ada
Jika Anda memiliki kluster yang berjalan dengan satu atau beberapa simpul, tambahkan lebih banyak node kluster dengan skrip bootstrap ha-cluster-join. Skrip hanya memerlukan akses ke node kluster yang ada dan akan menyelesaikan penyiapan dasar pada komputer saat ini secara otomatis. Gunakan langkah-langkah berikut:
Jika Anda telah mengonfigurasi node kluster yang ada dengan YaST
modul kluster, pastikan prasyarat berikut terpenuhi sebelum Anda menjalankan ha-cluster-join
:
- Pengguna root pada simpul yang ada memiliki kunci SSH untuk masuk tanpa kata sandi.
Csync2
dikonfigurasi pada simpul yang ada. Untuk informasi selengkapnya, lihat Mengonfigurasi Csync2 dengan YaST.
Masuk ke root
komputer fisik atau virtual yang seharusnya bergabung dengan kluster.
Mulai skrip bootstrap dengan mengeksekusi:
sudo ha-cluster-join
Jika NTP belum dikonfigurasi untuk memulai pada waktu boot, pesan akan muncul.
Jika Anda tetap memutuskan untuk melanjutkan, Anda akan dimintai alamat IP node yang ada. Masukkan alamat IP.
Jika Anda belum mengonfigurasi akses SSH tanpa kata sandi antara kedua komputer, Anda juga dimintai kata sandi akar dari simpul yang ada.
Setelah masuk ke simpul yang ditentukan, skrip menyalin konfigurasi Corosync, mengonfigurasi SSH dan Csync2
, dan membawa komputer saat ini online sebagai node kluster baru. Selain itu, ini memulai layanan yang diperlukan untuk Hawk. Jika Anda telah mengonfigurasi penyimpanan bersama dengan OCFS2
, penyimpanan juga secara otomatis membuat direktori mountpoint untuk OCFS2
sistem file.
Ulangi langkah-langkah sebelumnya untuk semua komputer yang ingin Anda tambahkan ke kluster.
Untuk detail prosesnya, periksa /var/log/ha-cluster-bootstrap.log
.
Periksa status kluster dengan sudo crm status
. Jika Anda berhasil menambahkan simpul kedua, outputnya mirip dengan yang berikut ini:
sudo crm status
Anda melihat output yang mirip dengan contoh berikut.
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
Catatan
admin_addr
adalah sumber daya kluster IP virtual yang dikonfigurasi selama penyiapan kluster satu node awal.
Setelah menambahkan semua simpul, periksa apakah Anda perlu menyesuaikan kebijakan tanpa kuorum dalam opsi kluster global. Ini sangat penting untuk kluster dua node.
Atur interval cluster-recheck-property 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 menghidupkan 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, mulai ulang dicoba pada interval yang lebih besar dari 60 detik tetapi kurang dari 120 detik. Kami menyarankan agar Anda mengatur 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 yang akan 2 minutes
dijalankan:
crm configure property cluster-recheck-interval=2min
Jika Anda sudah memiliki sumber daya grup ketersediaan yang dikelola oleh kluster Pacemaker, paket Pacemaker 1.1.18-11.el7 memperkenalkan perubahan perilaku untuk start-failure-is-fatal
pengaturan kluster saat nilainya adalah false
. Perubahan ini memengaruhi alur kerja failover. Jika replika utama mengalami pemadaman, kluster diperkirakan akan gagal 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 gagal 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 failure-timeout
properti .
Untuk memperbarui nilai properti yang akan true
dijalankan:
crm configure property start-failure-is-fatal=true
Perbarui properti failure-timeout
sumber daya AG yang ada untuk 60s
dijalankan (ganti ag1
dengan nama sumber daya grup ketersediaan Anda):
crm configure edit ag1
Di editor teks, tambahkan meta failure-timeout=60s
setelah s dan sebelum s apa punop
param
.
Untuk informasi selengkapnya tentang properti kluster Pacemaker, lihat Mengonfigurasi Sumber Daya Kluster.
Pertimbangan untuk beberapa antarmuka jaringan (NIC)
Saat menyiapkan ketersediaan tinggi dengan server yang memiliki beberapa NIC, ikuti saran berikut:
Pastikan hosts
file disiapkan sehingga alamat IP server untuk beberapa NIC diselesaikan ke nama host server Linux pada setiap simpul.
Saat menyiapkan kluster menggunakan Pacemaker, menggunakan nama host server harus mengonfigurasi Corosync untuk mengatur konfigurasi untuk 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>
diberikan dalam corosync.conf
file harus sama dengan output yang diberikan saat melakukan pencarian terbalik (ping -a <ip_address>
), dan harus menjadi nama pendek yang dikonfigurasi pada host. Pastikan hosts
file juga mewakili alamat IP yang tepat untuk resolusi nama.
Perubahan pada corosync.conf
contoh file 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
}
}
Vendor kluster Pacemaker memerlukan pemagaran node yang gagal, menggunakan perangkat anggar yang dikonfigurasi untuk penyiapan kluster yang didukung. Ketika manajer sumber daya kluster tidak dapat menentukan status simpul atau sumber daya pada node, anggar membawa kluster ke status yang diketahui lagi.
Pemagaran tingkat sumber daya memastikan terutama bahwa tidak ada kerusakan data selama pemadaman dengan mengonfigurasi sumber daya. Anda dapat menggunakan pagar tingkat sumber daya, misalnya, dengan DRBD (Perangkat Blok Terdistribusi Yang Direplikasi) untuk menandai disk pada simpul sebagai kedaluarsa saat tautan komunikasi tidak berfungsi.
Anggar tingkat node memastikan bahwa node tidak menjalankan sumber daya apa pun. Ini dilakukan dengan mengatur ulang simpul, dan implementasi Pacemaker disebut STONITH. Pacemaker mendukung berbagai perangkat anggar, seperti catu daya yang tidak dapat diubah atau kartu antarmuka manajemen untuk server.
Untuk informasi selengkapnya, lihat:
Pada waktu inisialisasi kluster, anggar dinonaktifkan jika tidak ada konfigurasi yang terdeteksi. Ini dapat diaktifkan nanti dengan menjalankan perintah berikut:
sudo crm configure property stonith-enabled=true
Penting
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. SUSE tidak menyediakan agen anggar untuk lingkungan cloud apa pun (termasuk Azure) atau Hyper-V. Akibatnya, vendor kluster tidak menawarkan dukungan untuk menjalankan kluster produksi di lingkungan ini. Kami sedang mengerjakan solusi untuk kesenjangan ini yang akan tersedia dalam rilis mendatang.
Lihat Panduan Administrasi SLES.
Aktifkan Pacemaker
Aktifkan Pacemaker sehingga secara otomatis dimulai.
Jalankan perintah berikut pada setiap simpul dalam kluster.
systemctl enable pacemaker
Membuat sumber daya grup ketersediaan
Perintah berikut membuat dan mengonfigurasi sumber daya grup ketersediaan untuk tiga replika grup ketersediaan [ag1]. Operasi monitor dan batas waktu harus ditentukan secara eksplisit di SLES berdasarkan fakta bahwa batas waktu sangat bergantung pada beban kerja dan perlu disesuaikan dengan hati-hati untuk setiap penyebaran.
Jalankan perintah pada salah satu node di kluster:
Jalankan crm configure
untuk membuka perintah crm:
sudo crm configure
Di perintah crm, jalankan perintah berikut untuk mengonfigurasi properti sumber daya.
primitive ag_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag_cluster ag_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true" \
commit
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 diatur 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
Jika Anda tidak membuat sumber daya IP virtual saat menjalankan ha-cluster-init
, Anda dapat membuat sumber daya ini sekarang. Perintah berikut membuat sumber daya IP virtual. Ganti <**0.0.0.0**>
dengan alamat yang tersedia dari jaringan Anda dan <**24**>
dengan jumlah bit di subnet mask CIDR. Jalankan pada satu simpul.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<**0.0.0.0**> \
cidr_netmask=<**24**>
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, dan 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.) Kita dapat memanipulasi keputusan kluster dengan batasan. Batasan memiliki skor. Jika batasan memiliki skor yang lebih rendah dari INFINITY, itu hanya rekomendasi. Skor INFINITY berarti itu suatu keharusan. Kami ingin memastikan bahwa primer grup ketersediaan dan sumber daya ip virtual dijalankan pada host yang sama, jadi kami menentukan batasan kolokasi dengan skor INFINITY.
Untuk mengatur batasan kolokasi agar IP virtual berjalan pada simpul yang sama dengan simpul utama, jalankan perintah berikut pada satu simpul:
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
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:
- Masalah
resource migrate
pengguna ke grup ketersediaan utama dari node1 ke node2.
- Sumber daya IP virtual berhenti pada simpul 1.
- Sumber daya IP virtual dimulai pada simpul 2. Pada titik ini, alamat IP untuk sementara menunjuk ke simpul 2 sementara simpul 2 masih merupakan sekunder pra-failover.
- Master grup ketersediaan pada simpul 1 diturunkan.
- Grup ketersediaan pada simpul 2 dipromosikan ke master.
Untuk mencegah alamat IP menunjuk sementara ke simpul dengan sekunder pra-failover, tambahkan batasan pemesanan.
Untuk menambahkan batasan pengurutan, jalankan perintah berikut pada satu simpul:
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
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. Dalam SLES gunakan crm
.
Failover grup ketersediaan secara manual dengan crm
. Jangan memulai failover dengan Transact-SQL. Untuk informasi selengkapnya, lihat Failover.
Untuk informasi selengkapnya, lihat:
Konten terkait
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:
Panduan instalasi untuk SQL Server di Linux.
Konfigurasikan Grup Ketersediaan AlwaysOn SQL Server untuk ketersediaan tinggi di Linux.
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 anggar untuk ketersediaan tinggi. Contoh dalam artikel ini tidak menggunakan agen anggar. Mereka 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.
Anggar biasanya diimplementasikan pada sistem operasi dan tergantung pada lingkungan. Temukan instruksi untuk pagar dalam dokumentasi distributor sistem operasi.
Tambahkan grup ketersediaan sebagai sumber daya di kluster.
Pada semua simpul, buka port firewall. Buka port untuk layanan ketersediaan tinggi Pacemaker, instans SQL Server, dan titik akhir grup ketersediaan. Port TCP default untuk server yang menjalankan SQL Server adalah 1433
.
sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload
Atau, Anda dapat menonaktifkan firewall, tetapi ini tidak disarankan di lingkungan produksi:
sudo ufw disable
Instal paket Pacemaker. Pada semua simpul, jalankan perintah berikut untuk Ubuntu 20.04. Untuk informasi selengkapnya tentang menginstal pada versi sebelumnya, lihat Ubuntu HA - MS SQL Server di Azure.
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
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
Membuat kluster
Sebelum membuat kluster, Anda harus membuat kunci autentikasi di server utama, dan menyalinnya ke server lain yang berpartisipasi dalam AG.
Gunakan skrip berikut untuk membuat kunci autentikasi di server utama:
sudo corosync-keygen
Anda dapat menggunakan scp
untuk menyalin kunci yang dihasilkan ke server lain:
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
Untuk membuat kluster, edit /etc/corosync/corosync.conf
file di server utama:
sudo vim /etc/corosync/corosync.conf
File corosync.conf
akan terlihat mirip dengan contoh berikut:
totem {
version: 2
cluster_name: agclustername
transport: udpu
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: server-01
nodeid: 1
ring0_addr: 10.0.0.4
}
node {
name: server-02
nodeid: 2
ring0_addr: 10.0.0.5
}
node {
name: server-03
nodeid: 3
ring0_addr: 10.0.0.6
}
}
corosync.conf
Ganti file pada simpul lain:
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
pacemaker
Mulai ulang layanan dan corosync
:
sudo systemctl restart pacemaker corosync
Konfirmasi status kluster dan verifikasi konfigurasi:
sudo crm status
Pertimbangan untuk beberapa antarmuka jaringan (NIC)
Saat menyiapkan ketersediaan tinggi dengan server yang memiliki beberapa NIC, ikuti saran berikut:
Pastikan hosts
file disiapkan sehingga alamat IP server untuk beberapa NIC diselesaikan ke nama host server Linux pada setiap simpul.
Saat menyiapkan kluster menggunakan Pacemaker, menggunakan nama host server harus mengonfigurasi Corosync untuk mengatur konfigurasi untuk 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>
diberikan dalam corosync.conf
file harus sama dengan output yang diberikan saat melakukan pencarian terbalik (ping -a <ip_address>
), dan harus menjadi nama pendek yang dikonfigurasi pada host. Pastikan hosts
file juga mewakili alamat IP yang tepat untuk resolusi nama.
Perubahan pada corosync.conf
contoh file 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
}
}
Vendor kluster Pacemaker memerlukan pemagaran node yang gagal, menggunakan perangkat anggar yang dikonfigurasi untuk penyiapan kluster yang didukung. Ketika manajer sumber daya kluster tidak dapat menentukan status simpul atau sumber daya pada node, anggar membawa kluster ke status yang diketahui lagi.
Pemagaran tingkat sumber daya memastikan bahwa tidak ada kerusakan data yang terjadi jika ada pemadaman. Anda dapat menggunakan pagar tingkat sumber daya, misalnya, dengan DRBD (Perangkat Blok Terdistribusi Yang Direplikasi) untuk menandai disk pada simpul sebagai kedaluarsa saat tautan komunikasi tidak berfungsi.
Anggar tingkat node memastikan bahwa node tidak menjalankan sumber daya apa pun. Ini dilakukan dengan mengatur ulang simpul, dan implementasi Pacemaker disebut STONITH. Pacemaker mendukung berbagai macam perangkat pagar, misalnya, catu daya yang tidak dapat diubah atau kartu antarmuka manajemen untuk server.
Untuk informasi selengkapnya, lihat Kluster Pacemaker dari Scratch dan Fencing dan Stonith.
Karena konfigurasi anggar tingkat node sangat bergantung pada lingkungan Anda, kami menonaktifkannya untuk tutorial ini (dapat dikonfigurasi di lain waktu). Jalankan skrip berikut pada simpul utama:
sudo crm configure property stonith-enabled=false
Dalam contoh ini, menonaktifkan anggar hanya untuk tujuan pengujian. Jika Anda berencana menggunakan Pacemaker di lingkungan produksi, Anda harus merencanakan implementasi pagar tergantung pada lingkungan Anda dan mengaktifkannya. Hubungi vendor sistem operasi untuk informasi tentang agen anggar untuk distribusi tertentu.
Atur interval cluster-recheck-property properti kluster
Properti cluster-recheck-interval
menunjukkan interval polling di mana kluster memeriksa perubahan parameter sumber daya, batasan, atau opsi kluster lainnya. Jika replika turun, kluster mencoba menghidupkan 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, mulai ulang dicoba pada interval yang lebih besar dari 60 detik tetapi kurang dari 120 detik. Anda harus mengatur failure-timeout
ke 60 detik, dan cluster-recheck-interval
ke nilai yang lebih besar dari 60 detik. Pengaturan cluster-recheck-interval
ke nilai yang lebih kecil tidak disarankan.
Untuk memperbarui nilai properti yang akan 2 minutes
dijalankan:
sudo crm configure property cluster-recheck-interval=2min
Jika Anda sudah memiliki sumber daya grup ketersediaan yang dikelola oleh kluster Pacemaker, paket Pacemaker 1.1.18-11.el7 memperkenalkan perubahan perilaku untuk start-failure-is-fatal
pengaturan kluster saat nilainya adalah false
. Perubahan ini memengaruhi alur kerja failover. Jika replika utama mengalami pemadaman, kluster diperkirakan akan gagal 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 gagal 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 failure-timeout
properti .
Untuk memperbarui nilai properti yang akan true
dijalankan:
sudo crm configure property start-failure-is-fatal=true
Perbarui properti failure-timeout
sumber daya AG yang ada untuk 60s
dijalankan (ganti ag1
dengan nama sumber daya grup ketersediaan Anda):
sudo crm configure meta failure-timeout=60s
Menginstal agen sumber daya SQL Server untuk integrasi dengan Pacemaker
Jalankan perintah berikut pada semua simpul.
sudo apt-get install mssql-server-ha
Membuat data masuk SQL Server untuk Pacemaker
Pada semua instans 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 memerlukan ALTER
izin , , CONTROL
dan VIEW DEFINITION
pada grup ketersediaan, setelah dibuat tetapi sebelum node ditambahkan ke dalamnya.
Pada semua instans 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 sudo crm configure
perintah untuk mengatur properti sumber daya. Contoh berikut membuat sumber daya ocf:mssql:ag
jenis primer/replika untuk grup ketersediaan dengan nama ag1
.
~$ sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
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 diatur 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. Sebelum Anda menjalankan skrip, ganti nilai antara < ... >
dengan alamat IP yang valid.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
Tidak ada nama server virtual yang setara di Pacemaker. Untuk menggunakan string koneksi yang menunjuk ke nama server string dan tidak menggunakan alamat IP, daftarkan alamat sumber daya IP 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, dan 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.)
Gunakan batasan untuk mengonfigurasi keputusan kluster. Batasan memiliki skor. Jika batasan memiliki skor yang lebih rendah dari INFINITY, itu hanya rekomendasi. Skor INFINITY berarti itu wajib.
Untuk memastikan bahwa replika utama dan sumber daya ip virtual berada di host yang sama, tentukan batasan kolokasi dengan skor INFINITY. Untuk menambahkan batasan kolokasi, jalankan perintah berikut pada satu simpul.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1: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:
Masalah pcs resource move
pengguna ke grup ketersediaan utama dari node1
ke node2
.
Sumber daya IP virtual berhenti pada node1
.
Sumber daya IP virtual dimulai pada node2
.
Pada titik ini, alamat IP sementara menunjuk ke node2
sementara node2
masih merupakan sekunder pra-failover.
Grup ketersediaan utama aktif node1
diturunkan ke sekunder.
Grup ketersediaan sekunder aktif dipromosikan node2
ke primer.
Untuk mencegah alamat IP menunjuk sementara ke simpul dengan sekunder pra-failover, tambahkan batasan pemesanan.
Untuk menambahkan batasan pengurutan, jalankan perintah berikut pada satu simpul:
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
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.
Konten terkait