Bagikan melalui


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

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

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

  3. Pada simpul sekunder, hentikan dan nonaktifkan SQL Server. Contoh berikut menghentikan dan menonaktifkan SQL Server:

    sudo systemctl stop mssql-server
    sudo systemctl disable mssql-server
    

    Catatan

    Pada waktu penyiapan, Kunci Master Server dihasilkan untuk instans SQL Server dan ditempatkan di /var/opt/mssql/secrets/machine-key. Di Linux, SQL Server selalu berjalan sebagai akun lokal yang disebut mssql. Karena ini adalah akun lokal, identitasnya tidak dibagikan di seluruh simpul. Oleh karena itu, Anda perlu menyalin kunci enkripsi dari simpul utama ke setiap simpul sekunder sehingga setiap akun mssql lokal dapat mengaksesnya untuk mendekripsi Kunci Master Server.

  4. Pada simpul utama, buat login SQL Server untuk Pacemaker dan berikan izin masuk untuk menjalankan sp_server_diagnostics. Pacemaker menggunakan akun ini untuk memverifikasi simpul mana yang menjalankan SQL Server.

    sudo systemctl start mssql-server
    

    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>
    
  5. Pada simpul utama, hentikan dan nonaktifkan SQL Server.

  6. 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 bernama SLES1 dan SLES2.

    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:

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

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

  1. Pada kedua node kluster, buat file untuk menyimpan nama pengguna dan kata sandi SQL Server untuk login Pacemaker. Perintah berikut membuat dan mengisi file ini:

    sudo touch /var/opt/mssql/secrets/passwd
    sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd
    sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 600 /var/opt/mssql/secrets/passwd
    
  2. 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.

  3. Instal ekstensi Ketersediaan Tinggi. Untuk menginstal ekstensi, ikuti langkah-langkah dalam artikel SUSE berikut ini:

    Mulai Cepat Penginstalan dan Penyetelan

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

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

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