Mengonfigurasi kluster disk bersama SLES untuk SQL Server
Berlaku untuk: SQL Server - Linux
Panduan ini menyediakan instruksi untuk membuat kluster disk bersama dua node untuk SQL Server di SUSE Linux Enterprise Server (SLES). 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 SUSE Linux Enterprise High Availability Extension 12 SP2.
Prasyarat
Untuk menyelesaikan skenario end-to-end berikut, Anda memerlukan dua komputer untuk menyebarkan kluster dua node dan server lain untuk mengonfigurasi berbagi NFS. Langkah-langkah di bawah ini menguraikan bagaimana server ini akan dikonfigurasi.
Menyiapkan dan mengonfigurasi sistem operasi pada setiap node kluster
Langkah pertama adalah mengonfigurasi sistem operasi pada node kluster. Untuk panduan ini, gunakan SLES dengan langganan yang valid untuk add-on HA.
Menginstal dan mengonfigurasi SQL Server pada setiap node kluster
Instal dan siapkan SQL Server pada kedua simpul. Untuk petunjuk terperinci, lihat Menginstal SQL Server di Linux.
Menunjuk satu simpul sebagai primer dan yang lain sebagai sekunder, untuk tujuan konfigurasi. Gunakan istilah-istilah ini untuk panduan berikut ini.
Pada simpul sekunder, hentikan dan nonaktifkan SQL Server. Contoh berikut menghentikan dan menonaktifkan SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Catatan
Pada waktu penyiapan, Kunci Master Server dihasilkan untuk instans SQL Server dan ditempatkan di
/var/opt/mssql/secrets/machine-key
. Di Linux, SQL Server selalu berjalan sebagai akun lokal yang 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 mssql lokal dapat mengaksesnya untuk mendekripsi Kunci Master Server.Pada simpul utama, buat login SQL Server untuk Pacemaker dan berikan izin masuk untuk menjalankan
sp_server_diagnostics
. Pacemaker menggunakan akun ini untuk memverifikasi simpul mana yang menjalankan SQL Server.sudo systemctl start mssql-server
Sambungkan ke database SQL Server
master
dengan akun 'sa' dan jalankan hal berikut:USE [master] GO CREATE LOGIN [<loginName>] with PASSWORD= N'<loginPassword>' GRANT VIEW SERVER STATE TO <loginName>
Pada simpul utama, hentikan dan nonaktifkan SQL Server.
Ikuti petunjuk dalam dokumentasi SUSE untuk mengonfigurasi dan memperbarui file host untuk setiap node kluster. File 'host' harus menyertakan alamat IP dan nama setiap node kluster.
Untuk memeriksa alamat IP simpul saat ini, jalankan:
sudo ip addr show
Atur nama komputer pada setiap simpul. Beri nama unik untuk setiap node yang didasarkan pada 15 karakter atau kurang. Atur nama komputer dengan menambahkannya ke
/etc/hostname
menggunakan YAST atau secara manual.Contoh berikut menunjukkan
/etc/hosts
dengan penambahan untuk dua simpul bernamaSLES1
danSLES2
.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2
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 halaman man). Misalnya, jika port SSH Anda adalah 3479, panggil crm_report dengan:
crm_report -X "-p 3479" [...]
Untuk informasi selengkapnya, lihat Panduan Administrasi.
Di bagian berikutnya Anda akan mengonfigurasi penyimpanan bersama dan memindahkan file database Anda ke penyimpanan tersebut.
Mengonfigurasi penyimpanan bersama dan memindahkan file database
Ada berbagai solusi untuk menyediakan penyimpanan bersama. Panduan ini menunjukkan konfigurasi penyimpanan bersama dengan NFS. Sebaiknya ikuti praktik terbaik berikut dan gunakan Kerberos untuk mengamankan NFS:
Jika Anda tidak mengikuti panduan ini, siapa pun yang dapat mengakses jaringan Anda dan memalsukan alamat IP simpul SQL akan dapat mengakses file data Anda. Seperti biasa, pastikan Anda memodelkan model ancaman sistem Anda sebelum menggunakannya dalam produksi.
Opsi penyimpanan lainnya adalah menggunakan berbagi file SMB:
Mengonfigurasi server NFS
Untuk mengonfigurasi server NFS, lihat langkah-langkah berikut dalam dokumentasi SUSE: Mengonfigurasi NFS Server.
Mengonfigurasi semua node kluster untuk menyambungkan ke penyimpanan bersama NFS
Sebelum mengonfigurasi NFS klien untuk memasang jalur file database SQL Server untuk menunjuk ke lokasi penyimpanan bersama, pastikan Anda menyimpan file database ke lokasi sementara untuk dapat menyalinnya nanti di berbagi:
Hanya pada simpul utama, simpan file database ke lokasi sementara. Skrip berikut, membuat direktori sementara baru, menyalin file database ke direktori baru, dan menghapus file database lama. Saat SQL Server berjalan sebagai mssql pengguna lokal, Anda perlu memastikan bahwa setelah transfer data ke berbagi yang dipasang, pengguna lokal memiliki akses baca-tulis ke berbagi.
su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exit
Konfigurasikan klien NFS pada semua node kluster:
Catatan
Disarankan untuk mengikuti praktik terbaik dan rekomendasi SUSE mengenai penyimpanan NFS yang Sangat Tersedia: Penyimpanan NFS dengan Ketersediaan Tinggi dengan DRBD dan Pacemaker.
Validasi bahwa SQL Server berhasil dimulai dengan jalur file baru. Lakukan ini pada setiap node. Pada titik ini hanya satu simpul yang harus menjalankan SQL Server pada satu waktu. Keduanya tidak dapat berjalan pada saat yang sama karena keduanya akan mencoba mengakses file data secara bersamaan (untuk menghindari memulai SQL Server secara tidak sengaja pada kedua node, menggunakan sumber daya kluster Sistem File, untuk memastikan berbagi tidak dipasang dua kali oleh node yang berbeda). Perintah berikut memulai SQL Server, memeriksa status, lalu menghentikan SQL Server.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
Pada titik ini, kedua instans SQL Server dikonfigurasi untuk dijalankan dengan file database pada penyimpanan bersama. Langkah selanjutnya adalah mengonfigurasi SQL Server untuk Pacemaker.
Menginstal dan mengonfigurasi Pacemaker pada setiap node kluster
Pada kedua node kluster, buat file untuk menyimpan nama pengguna dan kata sandi SQL Server untuk login Pacemaker. Perintah berikut membuat dan mengisi file ini:
sudo touch /var/opt/mssql/secrets/passwd sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwd
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 halaman man). Misalnya, jika port SSH Anda adalah 3479, panggil hb_report dengan:
crm_report -X "-p 3479" [...]
Untuk informasi selengkapnya, lihat Persyaratan dan Rekomendasi Sistem dalam dokumentasi SUSE.
Instal ekstensi Ketersediaan Tinggi. Untuk menginstal ekstensi, ikuti langkah-langkah dalam artikel SUSE berikut ini:
Instal agen sumber daya FCI untuk SQL Server. Jalankan perintah berikut pada kedua simpul:
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo sudo zypper --gpg-auto-import-keys refresh sudo zypper install mssql-server-ha
Siapkan simpul pertama secara otomatis. Langkah selanjutnya adalah menyiapkan kluster satu node yang sedang berjalan dengan mengonfigurasi simpul pertama, SLES1. Ikuti instruksi di artikel SUSE, Menyiapkan Simpul Pertama.
Setelah selesai, periksa status kluster dengan
crm status
:crm status
Ini harus menunjukkan bahwa satu simpul, SLES1, dikonfigurasi.
Tambahkan simpul ke kluster yang ada. Selanjutnya gabungkan simpul SLES2 ke kluster. Ikuti instruksi di artikel SUSE, Menambahkan Simpul Kedua.
Setelah selesai, periksa status kluster dengan status crm. Jika Anda berhasil menambahkan simpul kedua, outputnya mirip dengan yang berikut ini:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
Catatan
admin_addr adalah sumber daya kluster IP virtual yang dikonfigurasi selama penyiapan kluster satu node awal.
Prosedur penghapusan. Jika Anda perlu menghapus node dari kluster, gunakan skrip bootstrap ha-cluster-remove . Untuk informasi selengkapnya, lihat Gambaran Umum Skrip Bootstrap.
Mengonfigurasi sumber daya kluster untuk SQL Server
Langkah-langkah berikut menjelaskan cara mengonfigurasi sumber daya kluster untuk SQL Server. Ada dua pengaturan yang perlu Anda sesuaikan.
- Nama Sumber Daya SQL Server: Nama untuk sumber daya SQL Server terkluster.
- Nilai Batas Waktu: Nilai batas waktu adalah jumlah waktu kluster menunggu saat sumber daya dibawa online. Untuk SQL Server, ini adalah waktu yang Anda harapkan untuk diambil SQL Server agar database
master
online.
Perbarui nilai dari skrip berikut untuk lingkungan Anda. Jalankan pada satu simpul untuk mengonfigurasi dan memulai layanan berkluster.
sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit
Misalnya, skrip berikut membuat sumber daya kluster SQL Server bernama mssqlha
.
sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit
Setelah konfigurasi diterapkan, SQL Server akan dimulai pada simpul yang sama dengan sumber daya IP virtual.
Untuk informasi selengkapnya, lihat Mengonfigurasi dan Mengelola Sumber Daya Kluster (Baris Perintah).
Verifikasi bahwa SQL Server dimulai
Untuk memverifikasi bahwa SQL Server dimulai, jalankan perintah status crm:
crm status
Contoh berikut menunjukkan hasil ketika Pacemaker telah berhasil dimulai sebagai sumber daya terkluster.
2 nodes configured
2 resources configured
Online: [ SLES1 SLES2 ]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
mssqlha (ocf::mssql:fci): Started SLES1
Mengelola sumber daya kluster
Untuk mengelola sumber daya kluster Anda, lihat artikel SUSE berikut ini: Mengelola Sumber Daya Kluster
Failover manual
Meskipun sumber daya dikonfigurasi untuk secara otomatis melakukan failover (atau migrasi) ke simpul kluster lain jika terjadi kegagalan perangkat keras atau perangkat lunak, Anda juga dapat memindahkan sumber daya secara manual ke node lain di kluster menggunakan GUI Pacemaker atau baris perintah.
Gunakan perintah migrasi untuk tugas ini. Misalnya, untuk memigrasikan sumber daya SQL ke nama node kluster yang dijalankan SLES2:
crm resource
migrate mssqlha SLES2