Bagikan melalui


Tutorial: Menyiapkan grup ketersediaan AlwaysOn tiga node dengan HPE Serviceguard untuk Linux

Berlaku untuk: SQL Server - Linux

Tutorial ini menjelaskan cara mengonfigurasi grup ketersediaan SQL Server dengan HPE Serviceguard untuk Linux, yang berjalan di komputer virtual (VM) lokal atau di Komputer Virtual berbasis Azure.

Lihat Kluster HPE Serviceguard untuk gambaran umum kluster HPE Serviceguard.

Catatan

Microsoft mendukung pergerakan data, grup ketersediaan, dan komponen SQL Server. Hubungi HPE untuk dukungan yang terkait dengan dokumentasi kluster HPE Serviceguard dan manajemen kuorum.

Tutorial ini terdiri dari tugas-tugas berikut:

  • Instal SQL Server pada ketiga VM yang akan menjadi bagian dari grup ketersediaan
  • Menginstal HPE Serviceguard pada VM
  • Membuat kluster HPE Serviceguard
  • Membuat load balancer di portal Microsoft Azure
  • Membuat grup ketersediaan dan menambahkan database sampel ke grup ketersediaan
  • Menyebarkan beban kerja SQL Server pada grup ketersediaan melalui manajer kluster Serviceguard
  • Lakukan failover otomatis dan gabungkan simpul kembali ke kluster

Prasyarat

  • Di Azure, buat tiga VM berbasis Linux (Virtual Machines). Untuk membuat komputer virtual berbasis Linux di Azure, lihat Mulai Cepat: Membuat komputer virtual Linux di portal Azure. Saat menyebarkan VM, pastikan untuk menggunakan distribusi Linux yang didukung HPE Serviceguard. Anda juga dapat menyebarkan VM secara lokal di lingkungan lokal jika Anda mau.

    Untuk contoh distribusi yang didukung, lihat HPE Serviceguard untuk Linux. Tanyakan kepada HPE untuk informasi tentang dukungan untuk lingkungan cloud publik.

    Instruksi dalam tutorial ini divalidasi terhadap HPE Serviceguard untuk Linux. Edisi uji coba tersedia untuk diunduh dari HPE.

  • File database SQL Server pada pemasangan volume logis (LVM) untuk ketiga komputer virtual. Lihat Panduan mulai cepat untuk Serviceguard Linux (HPE)

  • Pastikan Anda memiliki runtime OpenJDK Java yang terinstal pada VM. IBM Java SDK tidak didukung.

Instal SQL Server

Pada ketiga VM, ikuti salah satu langkah di bawah ini berdasarkan distribusi Linux yang Anda pilih untuk tutorial ini, untuk menginstal SQL Server dan alat.

Red Hat Enterprise Linux (RHEL)

SUSE Linux Enterprise Server (SLES)

Setelah menyelesaikan langkah ini, Anda harus menginstal layanan dan alat SQL Server pada ketiga VM yang akan berpartisipasi dalam grup ketersediaan.

Menginstal HPE Serviceguard pada VM

Dalam langkah ini, instal HPE Serviceguard untuk Linux pada ketiga VM. Tabel berikut menjelaskan peran yang dimainkan setiap server dalam kluster.

Jumlah komputer virtual Peran HPE Serviceguard Peran replika grup ketersediaan Microsoft SQL Server
1 Node kluster HPE Serviceguard Replika utama
1 atau lebih Node kluster HPE Serviceguard Replika sekunder
1 Server kuorum HPE Serviceguard Replika konfigurasi saja

Catatan

Lihat video ini dari HPE, yang menjelaskan cara menginstal dan mengonfigurasi kluster HPE Serviceguard melalui UI.

Untuk menginstal Serviceguard, gunakan cminstaller metode . Instruksi spesifik tersedia di tautan berikut:

Setelah Menyelesaikan penginstalan kluster HPE Serviceguard, Anda dapat mengaktifkan portal manajemen kluster pada port TCP 5522 pada simpul replika utama. Langkah-langkah berikut menambahkan aturan ke firewall untuk mengizinkan 5522. Perintah berikut adalah untuk Red Hat Enterprise Linux (RHEL). Anda perlu menjalankan perintah serupa untuk distribusi lain:

sudo firewall-cmd --zone=public --add-port=5522/tcp --permanent
sudo firewall-cmd --reload

Membuat kluster HPE Serviceguard

Ikuti instruksi ini untuk mengonfigurasi dan membuat kluster HPE Serviceguard. Dalam langkah ini, Anda juga akan mengonfigurasi server kuorum.

  1. Konfigurasikan server kuorum Serviceguard pada simpul ketiga. Lihat bagian Configure_QS .
  2. Konfigurasikan dan buat kluster Serviceguard pada dua node lainnya. Lihat bagian Configure_and_create_Cluster .

Catatan

Anda dapat melewati penginstalan manual kluster dan kuorum HPE Serviceguard Anda, dengan menambahkan ekstensi HPE Serviceguard untuk Linux (SGLX) dari marketplace Azure VM, saat Anda membuat VM.

Membuat grup ketersediaan dan menambahkan database sampel

Dalam langkah ini, buat grup ketersediaan dengan dua (atau lebih) replika sinkron dan replika konfigurasi saja, yang memberikan perlindungan data dan mungkin juga memberikan ketersediaan tinggi. Diagram berikut mewakili arsitektur ini:

Diagram memperlihatkan replika utama yang menyinkronkan data pengguna dan data konfigurasi dengan replika sekunder. Konfigurasi hanya menyinkronkan data konfigurasi saja.

  1. Replikasi data pengguna yang sinkron ke replika sekunder. Ini juga mencakup metadata konfigurasi grup ketersediaan.

  2. Replikasi sinkron metadata konfigurasi grup ketersediaan. Ini tidak menyertakan data pengguna.

Untuk informasi selengkapnya, lihat Dua replika sinkron dan replika konfigurasi saja.

Untuk membuat grup ketersediaan, ikuti langkah-langkah berikut:

  1. Aktifkan grup ketersediaan dan mulai ulang mssql-server pada semua VM termasuk replika Konfigurasi saja.
  2. AlwaysOn_health Mengaktifkan sesi peristiwa (opsional)
  3. Membuat sertifikat pada VM utama
  4. Membuat sertifikat di server sekunder
  5. Membuat titik akhir pencerminan database pada replika
  6. Membuat grup ketersediaan
  7. Menggabungkan replika sekunder
  8. Menambahkan database ke grup ketersediaan

Mengaktifkan grup ketersediaan dan memulai ulang mssql-server

Aktifkan grup ketersediaan pada semua simpul yang menghosting instans SQL Server. Kemudian hidupkan ulang mssql-server. Jalankan skrip berikut pada ketiga simpul:

sudo /opt/mssql/bin/mssql-conf
set hadr.hadrenabled 1 sudo systemctl restart mssql-server

AlwaysOn_health Mengaktifkan sesi peristiwa (opsional)

Secara opsional, aktifkan peristiwa yang diperluas grup ketersediaan AlwaysOn untuk membantu diagnosis akar penyebab saat Anda memecahkan masalah grup ketersediaan. Jalankan perintah berikut pada setiap instans SQL Server:

ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
GO

Membuat sertifikat pada VM utama

Skrip Transact-SQL berikut membuat kunci master dan sertifikat. Kemudian mencadangkan sertifikat dan mengamankan file dengan kunci privat. Perbarui skrip dengan kata sandi yang kuat. Sambungkan ke instans SQL Server utama dan jalankan skrip Transact-SQL berikut:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Master_Key_Password>';

CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';

BACKUP CERTIFICATE dbm_certificate TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
WITH PRIVATE KEY
    ( FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
      ENCRYPTION BY PASSWORD = '<Private_Key_Password>' );

Pada titik ini, replika SQL Server utama memiliki sertifikat di /var/opt/mssql/data/dbm_certificate.cer dan kunci privat di var/opt/mssql/data/dbm_certificate.pvk. Salin kedua file ini ke lokasi yang sama di semua server yang menghosting replika ketersediaan. mssql Gunakan pengguna, atau berikan izin kepada mssql pengguna untuk mengakses file-file ini.

Misalnya, pada server sumber, perintah berikut menyalin file ke komputer target. node2 Ganti nilai dengan nama host yang menjalankan instans SQL Server sekunder. Salin sertifikat pada replika hanya konfigurasi juga dan jalankan perintah di bawah ini pada simpul tersebut juga.

cd /var/opt/mssql/data
scp dbm_certificate.* root@<node2>:/var/opt/mssql/data/

Sekarang pada VM sekunder yang menjalankan instans sekunder dan konfigurasi hanya replika SQL Server, jalankan perintah di bawah ini sehingga mssql pengguna dapat memiliki sertifikat yang disalin:

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

Membuat sertifikat di server sekunder

Skrip Transact-SQL berikut membuat kunci master dan sertifikat dari cadangan yang Anda buat di replika SQL Server utama. Perbarui skrip dengan kata sandi yang kuat. Kata sandi dekripsi adalah kata sandi yang sama dengan yang Anda gunakan untuk membuat file .pvk di langkah sebelumnya. Untuk membuat sertifikat, jalankan skrip berikut di semua server sekunder kecuali replika khusus konfigurasi:

CREATE MASTER KEY ENCRYPTION BY PASSWORD =
'<Master_Key_Password>';

CREATE CERTIFICATE dbm_certificate FROM FILE =
'/var/opt/mssql/data/dbm_certificate.cer'
WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
DECRYPTION BY PASSWORD = '<Private_Key_Password>' );

Membuat titik akhir pencerminan database pada replika

Pada replika utama dan sekunder, jalankan perintah di bawah ini untuk membuat titik akhir pencerminan database:

CREATE ENDPOINT [hadr_endpoint] AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING
        (
        ROLE = WITNESS,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );

ALTER ENDPOINT [hadr_endpoint] STATE = STARTED;

Catatan

5022 adalah port standar yang digunakan untuk titik akhir pencerminan database, tetapi Anda dapat mengubahnya ke port yang tersedia.

Pada replika khusus konfigurasi, buat titik akhir pencerminan database menggunakan perintah di bawah ini, perhatikan nilai untuk Peran di sini diatur ke WITNESS, yang diperlukan untuk replika khusus konfigurasi.

CREATE ENDPOINT [hadr_endpoint] AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
        ROLE = WITNESS,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
        );

ALTER ENDPOINT [hadr_endpoint] STATE = STARTED;

Membuat grup ketersediaan

Pada instans replika utama, jalankan perintah berikut. Perintah ini membuat grup ketersediaan bernama ag1, yang memiliki EXTERNAL cluster_type dan memberikan izin membuat database ke grup ketersediaan.

Sebelum Anda menjalankan skrip berikut, ganti <node1>tempat penampung , , <node2>dan <node3> (replika khusus konfigurasi) dengan nama VM yang Anda buat di langkah sebelumnya.

CREATE AVAILABILITY GROUP [ag1]
    WITH (CLUSTER_TYPE = EXTERNAL)
    FOR REPLICA ON
    N'<node1>' WITH (
        ENDPOINT_URL = N'tcp://<node1>:<5022>',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),

    N'<node2>' WITH (
        ENDPOINT_URL = N'tcp://<node2>:\<5022>',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),

    N'<node3>' WITH (
        ENDPOINT_URL = N'tcp://<node3>:<5022>',
        AVAILABILITY_MODE = CONFIGURATION_ONLY
        );

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Bergabung dengan replika Sekunder

Jalankan perintah berikut pada semua replika sekunder. Perintah ini menggabungkan replika sekunder ke ag1 grup ketersediaan dengan replika utama, dan menyediakan akses database buat ke ag1 grup ketersediaan.

ALTER AVAILABILITY GROUP [ag1]
JOIN WITH (CLUSTER_TYPE = EXTERNAL);
GO
ALTER AVAILABILITY GROUP [ag1]
GRANT CREATE ANY DATABASE;
GO

Menambahkan database ke Grup Ketersediaan

Sambungkan ke replika utama dan jalankan perintah T-SQL berikut ke:

  1. Buat database sampel bernama db1, yang akan ditambahkan ke grup ketersediaan.
  2. Atur model pemulihan database ke penuh. Semua database dalam grup ketersediaan memerlukan model pemulihan penuh.
  3. Cadangkan databasenya. Database memerlukan setidaknya satu cadangan penuh sebelum Anda dapat menambahkannya ke grup ketersediaan.
-- creates a database named db1
CREATE DATABASE [db1];
GO

-- set the database in full recovery model
ALTER DATABASE [db1] SET RECOVERY FULL;
GO

-- backs up the database to disk
BACKUP DATABASE [db1]
TO DISK = N'/var/opt/mssql/data/db1.bak';
GO

-- adds the database db1 to the AG
ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];
GO

Setelah berhasil menyelesaikan langkah-langkah sebelumnya, Anda dapat melihat grup ketersediaan yang ag1 dibuat dan tiga VM ditambahkan sebagai replika dengan satu replika utama, satu replika sekunder, dan satu replika khusus konfigurasi. ag1 berisi satu database.

Menyebarkan beban kerja grup ketersediaan SQL Server (HPE Cluster Manager)

Di HPE Serviceguard, sebarkan beban kerja SQL Server pada grup ketersediaan melalui UI manajer kluster Serviceguard.

Sebarkan beban kerja grup ketersediaan dan aktifkan ketersediaan tinggi (HA), pemulihan bencana (DR) melalui kluster Serviceguard menggunakan antarmuka pengguna grafis manajer Serviceguard. Lihat bagian Melindungi Microsoft SQL Server di Linux untuk Grup Ketersediaan AlwaysOn.

Membuat load balancer di portal Microsoft Azure

Untuk Penyebaran di Azure Cloud, HPE Serviceguard untuk Linux memerlukan penyeimbang beban untuk mengaktifkan koneksi klien dengan replika utama, untuk menggantikan alamat IP tradisional.

  1. Di portal Azure, buka grup sumber daya yang berisi node kluster Serviceguard atau komputer virtual.

  2. Di grup sumber daya, pilih Tambahkan.

  3. Cari "load balancer" lalu, di hasil pencarian, pilih Load Balancer yang diterbitkan oleh Microsoft.

  4. Pada panel Load Balancer , pilih Buat.

  5. Konfigurasikan load balancer sebagai berikut:

    Pengaturan Nilai
    Nama Nama load balancer. Contohnya,SQLAvailabilityGroupLB.
    Jenis Internal
    SKU Dasar atau Standar
    Jaringan virtual Jaringan virtual yang digunakan untuk replika VM
    Subnet Subnet tempat instans SQL Server dihosting
    Penetapan Alamat IP Statis
    Alamat IP privat Membuat IP privat dalam subnet
    Langganan Pilih langganan yang bersangkutan
    Grup Sumber Daya Pilih grup sumber daya yang bersangkutan
    Location Pilih lokasi yang sama dengan simpul SQL

Mengonfigurasi kumpulan backend

Kumpulan backend adalah alamat dari dua instans tempat kluster Serviceguard dikonfigurasi.

  1. Di grup sumber daya Anda, pilih load balancer yang Anda buat.
  2. Navigasi ke Pengaturan > Kumpulan backend, dan pilih Tambahkan untuk membuat kumpulan alamat backend.
  3. Pada Tambahkan kumpulan backend, di bawah Nama, ketik nama untuk kumpulan backend.
  4. Di bawahTerkait dengan, pilih Komputer virtual.
  5. Pilih komputer virtual di lingkungan, dan kaitkan alamat IP yang sesuai dengan setiap pilihan.
  6. Pilih Tambahkan.

Membuat penyelidikan

Pemeriksaan menentukan bagaimana Azure memverifikasi node kluster Serviceguard mana yang merupakan replika utama. Azure memeriksa layanan berdasarkan alamat IP pada port yang Anda tentukan saat Anda membuat probe.

  1. Pada panel Pengaturan load balancer, pilih Pemeriksaan kesehatan.

  2. Pada panel Pemeriksaan kesehatan, pilih Tambahkan.

  3. Gunakan nilai berikut untuk mengonfigurasi probe:

    Pengaturan Nilai
    Nama Nama yang mewakili pemeriksaan. Contohnya,SQLAGPrimaryReplicaProbe.
    Protokol TCP
    Port Anda bisa menggunakan port yang tersedia. Misalnya, 59999.
    Interval 5
    Ambang tidak sehat 2
  4. Pilih OK.

  5. Masuk ke semua komputer virtual Anda, dan buka port probe menggunakan perintah berikut:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure membuat pemeriksaan lalu menggunakannya untuk menguji node Serviceguard tempat instans replika utama grup ketersediaan berjalan. Ingat port yang dikonfigurasi (59999), yang diperlukan untuk menyebarkan AG di kluster Serviceguard.

Mengatur aturan load balancing

Aturan penyeimbangan beban mengonfigurasi bagaimana load balancer merutekan lalu lintas ke node Serviceguard, yang merupakan replika utama dalam kluster. Untuk load balancer ini, aktifkan pengembalian server langsung, karena hanya salah satu node kluster Serviceguard yang dapat menjadi replika utama sekaligus.

  1. Pada panel Pengaturan load balancer, pilih Aturan penyeimbangan beban.

  2. Pada panel Aturan penyeimbangan beban, pilih Tambahkan.

  3. Konfigurasikan aturan penyeimbangan beban menggunakan pengaturan berikut:

    Pengaturan Nilai
    Nama Nama yang mewakili aturan penyeimbangan beban. Contohnya,SQLAGPrimaryReplicaListener.
    Protokol TCP
    Port 1433
    Port ujung belakang 1433. Nilai ini diabaikan karena aturan ini menggunakan IP Mengambang.
    Probe Gunakan nama probe yang Anda buat untuk load balancer ini.
    Kegigihan sesi Tidak
    Waktu jeda habis (menit) 4
    IP Float Diaktifkan
  4. Pilih OK.

  5. Azure mengonfigurasi aturan penyeimbangan beban. Sekarang load balancer dikonfigurasi untuk merutekan lalu lintas ke node Serviceguard yang merupakan instans replika utama dalam kluster.

Perhatikan alamat IP frontend load balancer "LbReadWriteIP", yang diperlukan untuk menyebarkan AG di kluster Serviceguard.

Pada titik ini, grup sumber daya memiliki load balancer yang terhubung ke semua node Serviceguard. Load balancer juga berisi alamat IP bagi klien untuk terhubung ke instans replika utama di kluster, sehingga komputer apa pun yang merupakan replika utama dapat menanggapi permintaan untuk grup ketersediaan.

Lakukan failover otomatis dan gabungkan simpul kembali ke kluster

Untuk pengujian failover otomatis, Anda dapat menurunkan replika utama (matikan), yang mereplikasi tidak tersedianya simpul utama secara tiba-tiba. Tindakan yang diharapkan adalah:

  1. Manajer kluster mempromosikan salah satu replika sekunder dalam grup ketersediaan ke primer.
  2. Replika utama yang gagal secara otomatis bergabung dengan kluster setelah pencadangan. Manajer kluster mempromosikannya ke replika sekunder.

Untuk HPE Serviceguard, lihat bagian Menguji penyiapan untuk kesiapan failover