Aracılığıyla paylaş


SQL Server kullanılabilirlik grupları için Pacemaker kümesi yapılandırma

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

Bu makalede Pacemaker kullanarak Linux'ta üç düğümlü küme oluşturma ve daha önce oluşturulmuş bir kullanılabilirlik grubunu kümeye kaynak olarak ekleme işlemleri açıklanır. Yüksek kullanılabilirlik için Linux'ta bir kullanılabilirlik grubu üç düğüm gerektirir. Bkz. Kullanılabilirlik grubu yapılandırmaları için yüksek kullanılabilirlik ve veri koruması.

Not

Bu makalede, Microsoft'un artık kullanmadığı köle terimine referanslar bulunmaktadır. Terim yazılımdan kaldırıldığında, bu makaleden kaldırırız.

SQL Server, Windows Server yük devretme kümelemesi (WSFC) ile sahip olduğu kadar sıkı bir entegrasyona, Linux üzerinde Pacemaker ile sahip değil. SQL Server örneği kümenin farkında değildir ve tüm yönetim dışarıdan sağlanır. Pacemaker, küme kaynağı düzenlemesi sağlar. Ayrıca, sanal ağ adı Windows Server yük devretme kümelemesi için özeldir; Pacemaker'da eşdeğeri yoktur. Küme bilgilerini sorgulayan kullanılabilirlik grubu dinamik yönetim görünümleri (DMV) Pacemaker kümelerinde boş satırlar döndürür. Kesintisiz yeniden bağlantı sağlamak için taşma sonrası bir dinleyici oluşturmak amacıyla, dinleyici adını sanal IP kaynağını oluşturmak için kullanılan IP ile birlikte DNS'ye elle kaydedin.

Yük devretme sonrasında saydam yeniden bağlantı için bir dinleyici oluşturabilirsiniz, ancak dinleyici adını, sanal IP kaynağını oluşturmak için kullanılan IP adresiyle birlikte DNS sunucusuna manuel olarak kaydetmeniz gerekir (aşağıdaki bölümlerde açıklandığı gibi).

Aşağıdaki bölümlerde, her desteklenen Linux dağıtımı için yüksek kullanılabilirlik sağlamak amacıyla, Pacemaker kümesi ayarlama ve kümeye bir kullanılabilirlik grubunu kaynak olarak ekleme adımları adım adım açıklanmaktadır.

Kümeleme katmanı, Pacemakerüzerinde oluşturulan Red Hat Enterprise Linux (RHEL) HA eklentisi temel alır.

Not

Red Hat tam belgelerine erişim için geçerli bir abonelik gerekir.

Küme yapılandırması, kaynak aracıları seçenekleri ve yönetimi hakkında daha fazla bilgi için RHEL başvuru belgeleriniadresini ziyaret edin.

Yol Haritası

Linux sunucularında yüksek kullanılabilirlik için kullanılabilirlik grubu oluşturma adımları, Windows Server yük devretme kümesindeki adımlardan farklıdır. Aşağıdaki listede üst düzey adımlar açıklanmaktadır:

  1. küme düğümlerinde SQL Server'ı yapılandırın.

  2. kullanılabilirlik grubunu oluşturun.

  3. Pacemaker gibi bir küme kaynak yöneticisi yapılandırın. Bu yönergeler bu makalede verilmiştir.

    Küme kaynak yöneticisini yapılandırmanın yolu, belirli Linux dağıtımına bağlıdır.

    Önemli

    Üretim ortamları, yüksek kullanılabilirlik için bir eskrim aracısı gerektirir. Bu belgedeki tanıtımlarda eskrim aracıları kullanılmaz. Tanıtımlar yalnızca test ve doğrulama amaçlıdır. Linux kümesi, kümeyi bilinen bir duruma döndürmek için izolasyon kullanır. Eskrim yapılandırmanın yolu, dağıtıma ve ortama bağlıdır. Şu anda bazı bulut ortamlarında eskrim sağlanmamaktadır. Daha fazla bilgi için bkz. RHEL Yüksek Kullanılabilirlik Kümeleri için Destek İlkeleri - Sanallaştırma Platformları .

  4. Kullanılabilirlik grubunu kümekaynak olarak ekleyin.

RHEL için yüksek kullanılabilirliği yapılandırma

RHEL için yüksek kullanılabilirlik yapılandırmak amacıyla yüksek kullanılabilirlik aboneliğini etkinleştirin ve ardından Pacemaker'ı yapılandırın.

RHEL için yüksek kullanılabilirlik aboneliğini etkinleştirme

Kümedeki her düğümün RHEL ve Yüksek Kullanılabilirlik Eklentisi için uygun bir aboneliğe sahip olması gerekir. Red Hat Enterprise Linux'de Yüksek Kullanılabilirlik kümesi paketlerini yükleme makalesindeki gereksinimleri gözden geçirin. Aboneliği ve depoları yapılandırmak için şu adımları izleyin:

  1. Sistemi kaydedin.

    sudo subscription-manager register
    

    Kullanıcı adınızı ve parolanızı belirtin.

  2. Kayıt için kullanılabilir havuzları listeleyin.

    sudo subscription-manager list --available
    

    Not

    RHEL 10 için list komutu aşağıdaki gibidir:

    sudo subscription-manager repos --list
    

    Kullanılabilir havuzlar listesinden, yüksek kullanılabilirlik aboneliğinin havuz kimliğini not edin.

  3. Aşağıdaki komut dosyasını güncelleştirin. <pool id> değerini önceki adımdaki yüksek kullanılabilirlik için havuz kimliğiyle değiştirin. Aboneliği eklemek için betiği çalıştırın.

    sudo subscription-manager attach --pool=<pool id>
    
  4. Depoyu etkinleştirin.

    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
    

    RHEL 9

    sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
    

    RHEL 10

    sudo subscription-manager repos --enable=rhel-10-for-x86_64-highavailability-rpms
    

Daha fazla bilgi için bkz. Pacemaker - Açık Kaynak, Yüksek Kullanılabilirlik Kümesi.

Aboneliği yapılandırdıktan sonra Pacemaker'ı yapılandırmak için aşağıdaki adımları tamamlayın:

Pacemaker'ı yapılandırma

Aboneliği kaydettikten sonra Pacemaker'ı yapılandırmak için aşağıdaki adımları tamamlayın:

  1. Tüm küme düğümlerinde Pacemaker güvenlik duvarı bağlantı noktalarını açın. Bu bağlantı noktalarını firewalldile açmak için aşağıdaki komutu çalıştırın:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    

    Güvenlik duvarının yerleşik bir yüksek kullanılabilirlik yapılandırması yoksa Pacemaker için aşağıdaki bağlantı noktalarını açın.

    • TCP: Bağlantı noktaları 2224, 3121, 21064
    • UDP: Bağlantı noktası 5405
  2. Pacemaker paketlerini tüm düğümlere yükleyin.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  3. Pacemaker ve Corosync paketleri yüklenirken oluşturulan varsayılan kullanıcının parolasını ayarlayın. Tüm düğümlerde aynı parolayı kullanın.

    sudo passwd hacluster
    
  4. Yeniden başlatmadan sonra düğümlerin kümeye yeniden katılmasına izin vermek için pcsd hizmetini ve Pacemaker'ı etkinleştirip başlatın. Tüm düğümlerde aşağıdaki komutu çalıştırın.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  5. Kümeyi oluşturun. Kümeyi oluşturmak için aşağıdaki komutu tek bir düğümde çalıştırın:

    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 ve sonraki sürümleri

    RHEL 8 ve sonraki sürümler için düğümlerin kimliğini ayrı olarak doğrulamanız gerekir. İstendiğinde hacluster için kullanıcı adını ve parolayı el ile girin.

    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
    

    Not

    Daha önce aynı düğümlerde bir küme yapılandırdıysanız, --forceçalıştırırken pcs cluster setup seçeneğini kullanmanız gerekir. Bu seçenek, pcs cluster destroyçalıştırmaya eşdeğerdir. Pacemaker'ı yeniden etkinleştirmek için sudo systemctl enable pacemakerçalıştırın.

  6. SQL Server için SQL Server kaynak aracısını yükleyin. Tüm düğümlerde aşağıdaki komutları çalıştırın.

    sudo yum install mssql-server-ha
    

Pacemaker yapılandırıldıktan sonra kümeyle etkileşime geçmek için pcs kullanın. Kümedeki bir düğümden tüm komutları yürütün.

Birden çok ağ arabirimi (NIC) için dikkat edilmesi gerekenler

Birden çok NIC'ye sahip sunucularla yüksek kullanılabilirlik ayarlarken şu önerileri izleyin:

  • Birden çok NIC için sunucu IP adreslerinin her düğümdeki Linux sunucusunun ana bilgisayar adına çözümlenmesi için hosts dosyasının ayarlandığından emin olun.

  • Pacemaker kullanarak kümeyi ayarlarken, sunucuların ana bilgisayar adını kullanarak Corosync'i tüm NIC'ler için yapılandırmayı ayarlamak üzere yapılandırmalıdır. Yalnızca tek bir NIC üzerinden Pacemaker/Corosync iletişimini istiyoruz. Pacemaker kümesi yapılandırıldıktan sonra corosync.conf dosyasındaki yapılandırmayı değiştirin ve Pacemaker/Corosync iletişimi için kullanmak istediğiniz ayrılmış NIC'nin IP adresini güncelleştirin.

  • <hostname> dosyasında belirtilen corosync.conf, ters DNS araması (ping -a <ip_address>) yapıldığında verilen çıkışla aynı olmalı ve sunucuda yapılandırılmış kısa ad olmalıdır. hosts dosyasının ad çözümlemesi için uygun IP adresini de temsil ettiğinden emin olun.

corosync.conf dosya örneğinde yapılan değişiklikler aşağıda vurgulanır:

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

Eskrim cihazı yapılandırma

Pacemaker küme satıcıları, desteklenen bir küme kurulumu için yapılandırılmış bir fencing cihazı kullanarak başarısız bir düğümün izole edilmesini gerektirir. Küme kaynak yöneticisi bir düğümün veya bir düğümdeki kaynağın durumunu belirleyemezse, eskrim kümeyi yeniden bilinen bir duruma getirir.

Eskrim cihazı bir eskrim aracısı sağlar. Azure'da Red Hat Enterprise Linux'ta Pacemaker'ı ayarlama, Azure'da bu küme için bir eskrim cihazının nasıl oluşturulacağını gösteren bir örnek sağlar. Ortamınız için yönergeleri değiştirin.

Kaynak düzeyinde koruma, bir kaynağı yapılandırarak kesinti durumunda veri bozulmasının önlenmesini sağlar. Örneğin, bir düğümdeki diski iletişim bağlantısı kesildiğinde eski olarak işaretlemek için kaynak düzeyinde "fencing" kullanabilirsiniz.

Düğüm düzeyinde çitleme, bir düğümün herhangi bir kaynak çalıştırmamasını sağlar. Bu işlem düğümü sıfırlayarak gerçekleştirilir. Pacemaker çok çeşitli eskrim cihazlarını destekler. Sunucular için kesintisiz güç kaynağı veya yönetim arabirimi kartları buna örnek olarak verilebilir.

Başarısız bir düğümün çevrelenmesi hakkında bilgi için aşağıdaki makalelere göz atın.

Not

Düğüm düzeyinde eskrim yapılandırması ortamınıza büyük ölçüde bağlı olduğundan, bu öğretici için devre dışı bırakın (daha sonra yapılandırılabilir). Aşağıdaki betik düğüm düzeyindeki çevirmeyi devre dışı bırakır.

sudo pcs property set stonith-enabled=false

Eskrim özelliğini devre dışı bırakmak yalnızca test amaçlıdır. Pacemaker'ı bir üretim ortamında kullanmayı planlıyorsanız ortamınıza bağlı olarak bir eskrim uygulaması planlamalı ve etkin tutmalısınız.

Küme özelliğini küme-yeniden denetleme aralığı olarak ayarlama

cluster-recheck-interval, kümenin kaynak parametrelerindeki, kısıtlamalarındaki veya diğer küme seçeneklerindeki değişiklikleri denetlediği yoklama aralığını gösterir. Bir çoğaltma devre dışı kalırsa, küme failure-timeout değeri ve cluster-recheck-interval değeriyle ilişkili bir aralıkta çoğaltmayı yeniden başlatmayı dener. Örneğin, failure-timeout 60 saniye ve cluster-recheck-interval 120 saniye olarak ayarlanırsa, yeniden başlatma 60 saniyeden uzun ancak 120 saniyeden kısa bir aralıkta denenir. Başarısızlık zaman aşımı değerini 60 saniye olarak ayarlamanızı ve cluster-recheck-interval'ı 60 saniyeden büyük bir değere ayarlamanızı öneririz. cluster-recheck-interval küçük bir değere ayarlanması önerilmez.

Özellik değerini 2 minutes olarak güncelleştirmek için çalıştırın:

sudo pcs property set cluster-recheck-interval=2min

Pacemaker kümesi tarafından yönetilen bir kullanılabilirlik grubu kaynağınız zaten varsa, Pacemaker paketi 1.1.18-11.el7, değeri start-failure-is-fatalolduğunda false kümesi ayarı için bir davranış değişikliğine neden oldu. Bu değişiklik yük devretme iş akışını etkiler. Birincil çoğaltmada bir arıza meydana gelirse, kümenin kullanılabilir ikincil çoğaltmalardan birine geçiş yapması beklenir. Bunun yerine, kullanıcılar kümenin sürekli olarak başarısız olan birincil kopyayı başlatmaya çalıştığını fark eder. Birincil hiçbir zaman çevrimiçi olmazsa (kesintinin kalıcı olması nedeniyle), küme başka bir kullanılabilir ikincil çoğaltmaya asla yük devretmez. Bu değişiklik nedeniyle, start-failure-is-fatal ayarlamak için önceden önerilen bir yapılandırma artık geçerli değildir ve ayarın varsayılan truedeğerine geri döndürülmesi gerekir.

Ayrıca AG kaynağının failure-timeout özelliğini içerecek şekilde güncelleştirilmesi gerekir.

Özellik değerini true olarak güncelleştirmek için çalıştırın:

sudo pcs property set start-failure-is-fatal=true

ag_cluster failure-timeout kaynak özelliğini 60solarak güncelleştirmek için şunu çalıştırın:

pcs resource update ag_cluster meta failure-timeout=60s

Pacemaker kümesi özellikleri hakkında bilgi için bkz. Pacemaker Kümeleri Özellikleri.

Pacemaker için SQL Server oturumu oluşturma

Dikkat

Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

  1. Tüm SQL Server örneklerinde Pacemakeriçin bir sunucu giriş hesabı oluşturun.

    Aşağıdaki Transact-SQL bir giriş oluşturur. <password> kendi karmaşık parolanızla değiştirin.

    USE [master];
    GO
    
    CREATE LOGIN [pacemakerLogin]
        WITH PASSWORD = N'<password>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
    

    Kullanılabilirlik grubu oluşturma sırasında Pacemaker kullanıcısı, oluşturulduktan sonra ancak herhangi bir düğüm eklenmeden önce kullanılabilirlik grubu üzerinde ALTER, CONTROLve VIEW DEFINITION izinlerine ihtiyaç duyar.

  2. Tüm SQL Server örneklerinde SQL Server oturum açmakimlik bilgilerini kaydedin.

    <password> kendi karmaşık parolanızla değiştirin.

    echo 'pacemakerLogin' >> ~/pacemaker-passwd
    echo '<password>' >> ~/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
    

Kullanılabilirlik grubu kaynağı oluşturma

Kullanılabilirlik grubu kaynağını oluşturmak için pcs resource create komutunu kullanın ve kaynak özelliklerini ayarlayın. Aşağıdaki komut, ocf:mssql:agadlı kullanılabilirlik grubu için bir ag1 ana/alt tür kaynağı oluşturur. Bir düğümde aşağıdaki komutu çalıştırın.

RHEL 7

Aşağıdaki create komutu kullanın:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true

RHEL 8 ve sonraki sürümleri

Aşağıdaki create komutu kullanın:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true

Not

Kaynağı oluşturduğunuzda ve daha sonra düzenli aralıklarla Pacemaker kaynak aracısı, kullanılabilirlik grubundaki REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT değerini kullanılabilirlik grubunun yapılandırmasına göre otomatik olarak ayarlar. Örneğin, kullanılabilirlik grubunun üç eşzamanlı çoğaltması varsa, aracı REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT1olarak ayarlar. Ayrıntılar ve ek yapılandırma seçenekleri için bkz. kullanılabilirlik grubu yapılandırmaları için yüksek kullanılabilirlik ve veri koruması.

Sanal IP kaynağı oluşturma

Sanal IP adresi kaynağını oluşturmak için bir düğümde aşağıdaki komutu çalıştırın. Ağdan kullanılabilir bir statik IP adresi kullanın. <10.128.16.240> arasındaki IP adresini geçerli bir IP adresiyle değiştirin.

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>

Pacemaker'da sanal sunucu adı eşdeğeri yoktur. IP adresi yerine dize sunucusu adına işaret eden bir bağlantı dizesi kullanmak için, sanal IP kaynak adresini ve istenen sanal sunucu adını DNS'ye kaydedin. DR yapılandırmaları için, istenen sanal sunucu adını ve IP adresini hem birincil hem de DR sitesindeki DNS sunucularına kaydedin.

Birlikte bulundurma kısıtlaması ekleme

Pacemaker kümesindeki bir kaynağın nerede çalıştırılması gerektiği gibi hemen hemen her karar, puanlar karşılaştırılarak yapılır. Puanlar kaynak başına hesaplanır. Küme kaynak yöneticisi, belirli bir kaynak için en yüksek puana sahip düğümü seçer. Bir düğümde kaynak için negatif puan varsa, kaynak bu düğümde çalıştırılamaz.

Bir pacemaker kümesinde, kümenin kararlarını kısıtlamalarla değiştirebilirsiniz. Kısıtlamaların bir puanı vardır. Kısıtlamanın puanı INFINITY'den düşükse Pacemaker bunu öneri olarak görür. INFINITY puanı zorunludur.

Birincil çoğaltmanın ve sanal ip kaynaklarının aynı ana bilgisayarda çalıştığından emin olmak için INFINITY puanına sahip bir eş konum kısıtlaması tanımlayın. Birlikte bulundurma kısıtlamasını eklemek için bir düğümde aşağıdaki komutu çalıştırın.

RHEL 7

RHEL 7'de ag_cluster kaynağı oluşturduğunuzda, kaynağı ag_cluster-masterolarak oluşturur. RHEL 7 için aşağıdaki komutu kullanın:

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master

RHEL 8

RHEL 8'de ag_cluster kaynağı oluşturduğunuzda, kaynağı ag_cluster-cloneolarak oluşturur. Aşağıdaki komutu kullanın:

sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master

RHEL 9 ve sonraki sürümleri

Kaynağı RHEL 9 ve sonraki sürümlerde oluşturduğunuzda, ag_cluster, kaynağı ag_cluster-clone olarak oluşturur. Aşağıdaki komutu kullanın:

sudo pcs constraint colocation add virtualip with promoted ag_cluster-clone INFINITY with-rsc-role=Promoted

Sıralama kısıtlaması ekleme

Birlikte bulundurma kısıtlamasının örtük bir sıralama kısıtlaması vardır. Sanal IP kaynağını, kullanılabilirlik grubu kaynağını taşımadan önce taşır. Varsayılan olarak olay dizisi şöyledir:

  1. Kullanıcı pcs resource move komutunu birincil kullanılabilirlik grubunu node1'den node2'ye taşımak için veriyor.

  2. Sanal IP kaynağı düğüm 1'de durur.

  3. Sanal IP kaynağı düğüm 2'de başlar.

    Not

    Bu noktada, IP adresi geçici olarak düğüm 2'yi işaret eder, ancak düğüm 2 hala yük devretmeden önceki ikincil düğümdür.

  4. Düğüm 1'deki birincil kullanılabilirlik grubu ikincil olarak indirgendi.

  5. Düğüm 2'deki kullanılabilirlik grubunun ikincil rolü, birincil rolüne yükseltilmiştir.

IP adresinin geçici olarak yük devretme öncesi ikincil düğüme işaret etmesini önlemek için bir sıralama kısıtlaması ekleyin.

Sıralama kısıtlaması eklemek için bir düğümde aşağıdaki komutu çalıştırın:

RHEL 7

sudo pcs constraint order promote ag_cluster-master then start virtualip

RHEL 8 ve sonraki sürümleri

sudo pcs constraint order promote ag_cluster-clone then start virtualip

Önemli

Kümeyi yapılandırdıktan ve kullanılabilirlik grubunu küme kaynağı olarak ekledikten sonra, kullanılabilirlik grubu kaynaklarının yükünü devretmek için Transact-SQL kullanamazsınız. Linux'ta, SQL Server küme kaynakları, Windows Server Yük Devretme Kümesi (WSFC) üzerinde olduğu kadar işletim sistemiyle sıkıca bağlı değildir. SQL Server hizmeti kümenin varlığından haberdar değildir. Tüm düzenleme işlemleri küme yönetim araçları aracılığıyla gerçekleştirilir. RHEL veya Ubuntu'da pcs ve SLES'de crm araçları kullanın.

Kullanılabilirlik grubuna pcsile manuel yük devretme. Transact-SQL ile yük devretme işlemi başlatmayın. Yönergeler için bkz. Yük Devretme.