Aracılığıyla paylaş


Kılavuz: Linux için HPE Serviceguard ile üç düğümlü Always On kullanılabilirlik kümesi ayarlama

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu öğreticide, şirket içi sanal makinelerde (VM' ler) veya Azure tabanlı Sanal Makinelerde çalışan Linux için HPE Serviceguard ile SQL Server kullanılabilirlik gruplarını yapılandırma açıklanmaktadır.

HPE Serviceguard kümelerine genel bakış için bkz. HPE Serviceguard Kümeleri.

Uyarı

Microsoft veri taşımayı, kullanılabilirlik grubunu ve SQL Server bileşenlerini destekler. HPE Serviceguard kümesi ve oy çoğunluğu yönetimi belgeleriyle ilgili destek için HPE'ye başvurun.

Bu öğretici aşağıdaki görevlerden oluşur:

  • Kullanılabilirlik grubuna eklemeyi planladığınız üç SANAL makineye de SQL Server yükleyin.
  • VM'lere HPE Serviceguard yükleyin.
  • HPE Serviceguard kümesini oluşturun.
  • Yük dengeleyiciyi Azure portalında oluşturun.
  • Kullanılabilirlik grubunu oluşturun ve kullanılabilirlik grubuna örnek bir veritabanı ekleyin.
  • Kullanılabilirlik grubundaki SQL Server iş yükünü Serviceguard küme yöneticisi aracılığıyla dağıtın.
  • Otomatik yük devretme gerçekleştirin ve düğümü kümeye geri bağlayın.

Önkoşullar

  • Azure'da üç Linux tabanlı VM (Sanal Makineler) oluşturun. Azure'da Linux tabanlı sanal makineler oluşturmak için bkz . Hızlı Başlangıç: Azure portalında Linux sanal makinesi oluşturma. VM'leri dağıtırken HPE Serviceguard tarafından desteklenen Linux dağıtımlarını kullandığınızdan emin olun. İsterseniz VM'leri şirket içi ortamda yerel olarak da dağıtabilirsiniz.

    Desteklenen bir dağıtım örneği için bkz. Linux için HPE Serviceguard. Genel bulut ortamları desteği hakkında bilgi için HPE'ye başvurun.

    Bu öğreticideki yönergeler Linux için HPE Serviceguard tarafından doğrulanmıştır. HPE'den bir deneme sürümü indirilebilir.

  • Üç sanal makinenin SQL Server veritabanı dosyaları, mantıksal birim bağlama (LVM) üzerinde yer almaktadır. Bkz. Serviceguard Linux (HPE) için hızlı başlangıç kılavuzu.

  • VM'lerde OpenJDK Java çalışma zamanının yüklü olduğundan emin olun. IBM Java SDK'sı desteklenmez.

SQL Server'ı yükleme

Üç VM'de de, bu öğretici için seçtiğiniz Linux dağıtımına göre aşağıdaki bölümde yer alan adımlardan birini izleyin. Adımlar SQL Server ve araçları yükler.

Red Hat Enterprise Linux (RHEL)

SUSE Linux Kurumsal Sunucusu (SLES)

Uyarı

SQL Server 2025'te (17.x) başlayarak SUSE Linux Enterprise Server (SLES) desteklenmez.

Bu adımı tamamladığınızda, kullanılabilirlik grubuna katılacak üç VM'de de SQL Server hizmeti ve araçları yüklü olur.

VM'lere HPE Serviceguard yükleme

Bu adımda, üç VM'de de Linux için HPE Serviceguard'ı yükleyin. Aşağıdaki tabloda her sunucunun kümede oynadığı rol açıklanmaktadır.

VM sayısı HPE Serviceguard rolü Microsoft SQL Server kullanılabilirlik grubu replika rolü
1 HPE Serviceguard küme düğümleri Birincil replikası
1 veya daha fazla HPE Serviceguard küme düğümü İkincil kopya
1 HPE Serviceguard oy çoğunluğu sunucusu Sadece yapılandırma replikası

Serviceguard'ı yüklemek için cminstaller yöntemini kullanın. Aşağıdaki bağlantılarda belirli yönergeler sağlanır:

HPE Serviceguard kümesinin yüklemesini tamamladıktan sonra, birincil çoğaltma düğümünde 5522 numaralı TCP bağlantı noktasında küme yönetim portalını etkinleştirebilirsiniz. Aşağıdaki adımlar, 5522'ye izin vermek için güvenlik duvarına bir kural ekler. Aşağıdaki komut bir Red Hat Enterprise Linux (RHEL) içindir. Diğer dağıtımlar için benzer komutları çalıştırmanız gerekir:

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

HPE Serviceguard kümesi oluşturma

HPE Serviceguard kümesini yapılandırmak ve oluşturmak için bu yönergeleri izleyin. Bu adımda, kuorum sunucusunu da yapılandıracaksınız.

  1. Üçüncü düğümde Serviceguard oylama sunucusunu yapılandırın. Configure_QS bölümüne bakın.
  2. Diğer iki düğümde Serviceguard kümesini yapılandırın ve oluşturun. Configure_and_create_Cluster bölümüne bakın.

Uyarı

VM'nizi oluştururken Azure VM marketinden Linux için HPE Serviceguard (SGLX) uzantısını ekleyerek HPE Serviceguard kümenizin ve çekirdeğinizin el ile yüklenmesini atlayabilirsiniz.

Kullanılabilirlik grubunu oluşturma ve örnek veritabanı ekleme

Bu adımda, veri koruma sağlayan ve yüksek kullanılabilirlik de sağlayabilecek iki veya daha fazla zaman uyumlu çoğaltma ve yalnızca yapılandırma için kullanılan bir çoğaltmayı içeren bir kullanılabilirlik grubu oluşturursunuz. Aşağıdaki diyagram bu mimariyi temsil eder:

Kullanıcı verilerini ve yapılandırma verilerini ikincil çoğaltmayla eşitleyerek birincil çoğaltmayı gösteren diyagram. Yalnızca yapılandırma çoğaltması yalnızca yapılandırma verilerini eşitler.

  1. Kullanıcı verilerinin ikincil kopyaya eş zamanlı çoğaltılması. Ayrıca kullanılabilirlik grubu yapılandırma meta verilerini de içerir.

  2. Kullanılabilirlik grubu yapılandırma meta verilerinin eşzamanlı çoğaltılması. Kullanıcı verilerini içermez.

Daha fazla bilgi için bkz. kullanılabilirlik grubu yapılandırmaları için yüksek kullanılabilirlik ve veri koruması.

Kullanılabilirlik grubunu oluşturmak için şu adımları izleyin:

  1. Kullanılabilirlik gruplarını etkinleştirin ve yalnızca Yapılandırma çoğaltması dahil olmak üzere tüm VM'lerde mssql-server'ı yeniden başlatın.
  2. Olay oturumlarını AlwaysOn_health etkinleştirme (isteğe bağlı)
  3. Birincil VM'de sertifika oluşturma
  4. İkincil sunucularda sertifika oluşturma
  5. Çoğaltmalarda veritabanı yansıtma uç noktalarını oluşturun
  6. Kullanılabilirlik grubu oluşturma
  7. İkincil replikaları birleştir
  8. Kullanılabilirlik grubuna veritabanı ekleme

Kullanılabilirlik gruplarını etkinleştirme ve mssql-server'ı yeniden başlatma

SQL Server örneğini barındıran tüm düğümlerde kullanılabilirlik gruplarını etkinleştirin. Ardından mssql-server'ı yeniden başlatın. Üç düğümde de aşağıdaki betiği çalıştırın:

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

Olay oturumlarını AlwaysOn_health etkinleştirme (isteğe bağlı)

İsteğe bağlı olarak, bir kullanılabilirlik grubunu giderirken kök neden teşhisini kolaylaştırmak için Always On kullanılabilirlik gruplarının genişletilmiş olaylarını etkinleştirin. SQL Server'ın her örneğinde aşağıdaki komutu çalıştırın:

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

Birincil VM'de sertifika oluşturma

Aşağıdaki Transact-SQL betiği bir ana anahtar ve bir sertifika oluşturur. Ardından sertifikayı yedekler ve dosyanın güvenliğini özel bir anahtarla sağlar. Betiği güçlü parolalarla güncelleştirin. Birincil SQL Server örneğine bağlanın ve aşağıdaki Transact-SQL betiğini çalıştırın:

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>'
);

Bu noktada, birincil SQL Server replikası /var/opt/mssql/data/dbm_certificate.cer konumunda bir sertifikaya ve var/opt/mssql/data/dbm_certificate.pvk konumunda bir özel anahtara sahiptir. Bu iki dosyayı kullanılabilirlik çoğaltmalarını barındıran tüm sunucularda aynı konuma kopyalayın. Bu dosyalara erişmek için mssql kullanıcısını kullanın veya mssql kullanıcısına izin verin.

Örneğin, kaynak sunucuda aşağıdaki komut dosyaları hedef makineye kopyalar. node2 değerleri ikincil SQL Server örneğini çalıştıran konağın adıyla değiştirin. Sertifikayı yalnızca yapılandırma çoğaltması üzerinde de kopyalayın ve bu düğümde aşağıdaki komutları çalıştırın.

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

Şimdi ikincil örneği çalıştıran ikincil VM'lerde ve SQL Server'ın yalnızca yapılandırma çoğaltması üzerinde, kullanıcının kopyalanan sertifikaya mssql sahip olabilmesi için aşağıdaki komutları çalıştırın:

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

İkincil sunucularda sertifika oluşturma

Aşağıdaki Transact-SQL betiği, birincil SQL Server çoğaltması üzerinde oluşturduğunuz yedekten bir ana anahtar ve sertifika oluşturur. Betiği güçlü parolalarla güncelleştirin. Şifre çözme parolası, önceki bir adımda dosyayı oluşturmak için kullandığınız parolayla .pvk aynıdır. Sertifikayı oluşturmak için, yalnızca yapılandırma amaçlı çoğaltma dışında tüm ikincil sunucularda aşağıdaki betiği çalıştırın:

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>'
);

Önceki örnekte, <private-key-password>'ı ana çoğaltmadaki sertifikayı oluştururken kullandığınız parolayla değiştirin.

Çoğaltmalarda veritabanı yansıtma uç noktalarını oluşturun

Birincil ve ikincil çoğaltmalarda aşağıdaki komutları çalıştırarak veritabanı yansıtma uç noktalarını oluşturun:

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;

Uyarı

5022, veritabanı yansıtma uç noktası için kullanılan standart bağlantı noktasıdır, ancak bunu kullanılabilir herhangi bir bağlantı noktasıyla değiştirebilirsiniz.

Yalnızca yapılandırma amaçlı çoğaltmada aşağıdaki komutu kullanarak veritabanı yansıtma uç noktasını oluşturun. Değeri RoleWITNESS olarak ayarlayın. Bu, yalnızca yapılandırma amaçlı çoğaltma için gerekli olan roldür.

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;

Kullanılabilirlik grubu oluşturma

Birincil çoğaltma örneğinde aşağıdaki komutları çalıştırın. Bu komutlar, EXTERNAL ag1 içeren ve kullanılabilirlik grubuna veritabanı oluşturma izni veren adlı cluster_typebir kullanılabilirlik grubu oluşturur.

Aşağıdaki betikleri çalıştırmadan önce, <node1>, <node2> ve <node3> yer tutucularını, önceki adımlarda oluşturduğunuz VM isimleriyle değiştirin (yalnızca yapılandırma amaçlı çoğaltma).

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;

İkincil çoğaltmaları birleştirme

Tüm ikincil çoğaltmalarda aşağıdaki komutları çalıştırın. Bu komutlar ikincil çoğaltmaları ag1 birincil çoğaltmayla kullanılabilirlik grubuna ekler ve kullanılabilirlik grubuna ag1 veritabanı erişimi oluşturur.

ALTER AVAILABILITY GROUP [ag1]
JOIN WITH (CLUSTER_TYPE = EXTERNAL);
GO

ALTER AVAILABILITY GROUP [ag1]
GRANT CREATE ANY DATABASE;
GO

Kullanılabilirlik grubuna veritabanı ekleme

Birincil çoğaltmaya bağlanın ve aşağıdaki T-SQL komutlarını şu şekilde çalıştırın:

  1. Kullanılabilirlik grubuna ekleyeceğiniz adlı db1bir örnek veritabanı oluşturun.

    CREATE DATABASE [db1];
    GO
    
  2. Veritabanının kurtarma modelini dolu olarak ayarlayın. Kullanılabilirlik grubundaki tüm veritabanları için tam kurtarma modeli gerekir.

    ALTER DATABASE [db1]
    SET RECOVERY FULL;
    
  3. Veritabanını yedekleyin. Veritabanı, kullanılabilirlik grubuna ekleyebilmeniz için en az bir tam yedekleme gerektirir.

    BACKUP DATABASE [db1]
    TO DISK = N'/var/opt/mssql/data/db1.bak';
    
  4. Veritabanını tam kurtarma modeline ayarlayın.

    ALTER DATABASE [db1]
    SET RECOVERY FULL;
    
  5. Veritabanını diske yedekleyin.

    BACKUP DATABASE [db1]
    TO DISK = N'/var/opt/mssql/data/db1.bak';
    
  6. Veritabanını db1 kullanılabilirlik grubuna ekleyin.

    ALTER AVAILABILITY GROUP [ag1]
    ADD DATABASE [db1];
    

Önceki adımları tamamladıktan sonra bir ag1 kullanılabilirlik grubu görürsünüz. Üç VM, bir birincil çoğaltma, bir ikincil çoğaltma ve biri sadece yapılandırma amacıyla olan bir çoğaltma olarak eklenir. ag1 bir veritabanı içerir.

SQL Server kullanılabilirlik grubu iş yükünü dağıtma (HPE Küme Yöneticisi)

HPE Serviceguard'ta, Serviceguard küme yöneticisi kullanıcı arabirimi aracılığıyla kullanılabilirlik grubuna SQL Server iş yükünü dağıtın.

Kullanılabilirlik grubu iş yükünü dağıtın ve Serviceguard yöneticisi grafik kullanıcı arabirimini kullanarak Serviceguard kümesi aracılığıyla yüksek kullanılabilirlik (HA), olağanüstü durum kurtarma (DR) etkinleştirin. Always On Kullanılabilirlik Grupları için Linux üzerinde Microsoft SQL Server'ı koruma bölümüne bakın.

Azure portalında yük dengeleyici oluşturma

Azure Bulutu'ndaki dağıtımlar için, Linux için HPE Serviceguard, geleneksel IP adreslerinin yerine birincil çoğaltmayla istemci bağlantılarını sağlamak amacıyla bir yük dengeleyici gerektirir.

  1. Azure portalında Serviceguard küme düğümlerini veya sanal makineleri içeren kaynak grubunu açın.

  2. Kaynak grubunda Ekle'yi seçin.

  3. "Yük dengeleyici" araması yapın ve arama sonuçlarında Microsoft tarafından yayımlanan Load Balancer'ı seçin.

  4. Load Balancer bölmesinde Oluştur'u seçin.

  5. Yük dengeleyiciyi aşağıdaki gibi yapılandırın:

    Ayarlar Değer
    İsim Yük dengeleyici adı. Örneğin, SQLAvailabilityGroupLB.
    Türü Dahili
    SKU Temel veya Standart
    Sanal ağ VM çoğaltmaları için kullanılan sanal ağ
    alt ağ SQL Server örneklerinin barındırıldığı alt ağ
    IP Adresi Ataması Statik
    Özel IP adresi Alt ağ içinde özel IP oluşturma
    Abonelik İlgili aboneliği seçin
    Kaynak Grubu İlgili kaynak grubunu seçin
    Yer SQL düğümleri ile aynı konumu seçin

Arka uç havuzunu yapılandırın

Arka uç havuzu, Serviceguard kümesinin yapılandırıldığı iki örneğin adresleridir.

  1. Kaynak grubunuzda, oluşturduğunuz yük dengeleyiciyi seçin.
  2. Arka uç adres havuzu oluşturmak için Ayarlar>Arka uç havuzları'na gidin ve Ekle'yi seçin.
  3. Arka uç havuzu ekle bölümünde, Ad'ın altında arka uç havuzu için bir ad yazın.
  4. İlişkili'nin altında Sanal makine'yi seçin.
  5. Ortamdaki sanal makineyi seçin ve uygun IP adresini her seçimle ilişkilendirin.
  6. Add (Ekle) seçeneğini belirleyin.

Yoklama oluşturma

Azure'ın hangi Serviceguard kümesi düğümünün ana replikası olduğunu doğrulamak için kullanılan algılama yöntemini tanımlar. Azure, araştırmayı oluştururken tanımladığınız bir bağlantı noktasındaki IP adresine göre hizmeti yoklar.

  1. Yük dengeleyici ayarları bölmesinde Sistem durumu yoklamaları'nı seçin.

  2. Sistem durumu yoklamaları bölmesinde Ekle'yi seçin.

  3. Araştırmayı yapılandırmak için aşağıdaki değerleri kullanın:

    Ayarlar Değer
    İsim Probeyi temsil eden ad. Örneğin, SQLAGPrimaryReplicaProbe.
    Protokol TCP
    Port Kullanılabilir herhangi bir bağlantı noktasını kullanabilirsiniz. Örneğin, 59999.
    Aralık 5
    Sağlıksız durum eşiği 2
  4. Tamam'ı seçin.

  5. Tüm sanal makinelerinizde oturum açın ve aşağıdaki komutları kullanarak yoklama bağlantı noktasını açın:

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

Azure, sondayı oluşturur ve ardından kullanılabilirlik grubunun birincil çoğaltma örneğinin çalıştığı Serviceguard düğümünü test etmek için kullanır. Yapılandırdığınız bağlantı noktasını (59999) hatırlayın, çünkü bu, Serviceguard kümesinde AG'yi dağıtmak için gereklidir.

Yük dengeleme kurallarını ayarlama

Yük dengeleme kuralları, yük dengeleyicinin trafiği kümedeki birincil replikası olan Serviceguard düğümüne nasıl yönlendirdiğini yapılandırır. Bu yük dengeleyici için doğrudan sunucu dönüşünü etkinleştirin, çünkü Serviceguard kümesi düğümlerinden yalnızca biri aynı anda ana replik olabilir.

  1. Yük dengeleyici ayarlarındaYük dengeleme kuralları'nı seçin.

  2. Yük dengeleme kuralları'ndaEkle'yi seçin.

  3. Aşağıdaki ayarları kullanarak yük dengeleme kuralını yapılandırın:

    Ayarlar Değer
    İsim Yük dengeleme kurallarını temsil eden ad. Örneğin, SQLAGPrimaryReplicaListener.
    Protokol TCP
    Port 1433
    Arka uç bağlantı noktası 1433. Bu kural Kayan IP kullandığından bu değer yoksayılır.
    Yoklama Bu yük dengeleyici için oluşturduğunuz yoklamanın adını kullanın.
    Oturum kalıcılığı Hiç kimse
    Boşta kalma zaman aşımı (dakika) 4
    Kayan IP Etkinleştirildi
  4. Tamam'ı seçin.

  5. Azure, yük dengeleme kuralını yapılandırıyor. Yük dengeleyici artık trafiği kümedeki birincil çoğaltma örneği olan Serviceguard düğümüne yönlendirecek şekilde yapılandırıldı.

Serviceguard kümesinde AG'yi dağıtmanız gereken yük dengeleyicinin ön uç IP adresini LbReadWriteIP olarak not alın.

Bu noktada, kaynak grubunun tüm Serviceguard düğümlerine bağlanan bir yük dengeleyicisi vardır. Yük dengeleyici, istemcilerin kümedeki birincil çoğaltma örneğine bağlanması için bir IP adresi de içerir, böylece birincil çoğaltma olan tüm makineler kullanılabilirlik grubu isteklerine yanıt verebilir.

Otomatik yük devretmeyi gerçekleştirin ve düğümü kümeye yeniden katın.

Otomatik yük devretme testi için birincil replikayı çevrimdışı duruma getirin (gücü kapatın). Bu eylem, birincil düğümün ani erişilemezliğini taklit eder. Beklenen davranış:

  1. Küme yöneticisi, kullanılabilirlik grubundaki ikincil çoğaltmalardan birini birincil olarak terfi ettirir.

  2. Başarısız olan birincil çoğaltma yeniden başlatıldıktan sonra kümeye otomatik olarak katılır. Küme yöneticisi bunu ikincil bir replika olarak yükseltir.

HPE Serviceguard için bkz. Yük devretmeye hazırlık için kurulum testi.