Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu makale, Linux'ta bir SQL Server failover kümesi örneğinin (FCI) nasıl işletileceğini açıklar. Linux'ta SQL Server FCI oluşturmak için Linux'ta failover kümesi örneğini yapılandır (RHEL) bölümüne bakınız.
Mimari açıklaması
Küme katmanı, Pacemaker üzerine inşa edilmiş Red Hat Enterprise Linux (RHEL) HA eklentisine dayanmaktadır. Corosync ve Pacemaker, küme iletişimlerini ve kaynak yönetimini koordine ediyor. SQL Server örneği aynı anda tek bir düğümde aktiftir.
Aşağıdaki diyagramda SQL Server içeren bir Linux kümesindeki bileşenler gösterilmektedir.
Küme yapılandırması, kaynak ajanı seçenekleri ve yönetim hakkında daha fazla bilgi için RHEL referans dokümantasyonu sayfasını ziyaret edin.
Failover
FCI'ler için yük devretme, Windows Server yük devretme kümesine (WSFC) benzer. FCI'yi barındıran düğüm bir tür hatayla karşılaşırsa, FCI otomatik olarak başka bir düğüme geçiş yapmalıdır. WSFC'nin aksine, tercih edilen sahipleri ayarlamanın bir yolu yoktur, bu yüzden Pacemaker, FCI'ye yeni ev sahipliği yapacak olan düğümü seçer.
Bazen FCI'yı manuel olarak başka bir düğüme devretmek isteyebilirsiniz. Süreç, WSFC üzerindeki FCI'lerle aynı değildir. WSFC'de, kaynakları rol seviyesinde devredersiniz. Pacemaker'da hareket ettirecek bir kaynak seçiyorsunuz ve tüm kısıtlamalar doğruysa diğer her şey de hareket eder.
Failover yöntemi Linux dağıtımına bağlıdır. Linux dağıtımınız için talimatları takip edin.
Manuel yük devretme (RHEL veya Ubuntu)
Red Hat Enterprise Linux (RHEL) veya Ubuntu sunucularında el ile yük devretme gerçekleştirmek için aşağıdaki adımları yürütebilirsiniz.
Aşağıdaki komutu yazın:
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>SQL Server FCI için Pacemaker kaynak adıdır ve<NewHostNode>FCI'yı barındırmak istediğiniz küme düğümünün adıdır.El ile yük devretme sırasında Pacemaker, el ile taşınması için seçilen kaynak için bir konum kısıtlaması oluşturur. Bu kısıtlamayı görmek için
sudo pcs constraintçalıştırın.Yük devretme tamamlandıktan sonra kısıtlamayı kaldırın:
sudo pcs resource clear <FCIResourceName>
Manuel devralma (SLES)
Note
SQL Server 2025(17.x) tarihinden itibaren SUSE Linux Enterprise Server (SLES) desteklenmez. SQL Server 2022 (16.x) ve önceki sürümler için yalnızca SLES 15 desteklenmektedir.
SUSE Linux Enterprise Server'da (SLES), sql Server FCI'sinin yükünü el ile devretmek için migrate komutunu kullanın. Örneğin:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> failover kümesi örneğinin kaynak adıdır ve <NewHostNode> yeni hedef ana bilgisayarın adıdır.
Bir failover kümesini izleyin
Geçerli küme durumunu görüntüleyin:
sudo pcs status
Küme ve kaynakların canlı durumunu görüntüleyin:
sudo crm_mon
Kaynak aracısı günlüklerini /var/log/cluster/corosync.log görüntüleyin.
Kümeye düğüm ekleme
Her düğümün IP adresini denetleyin. Aşağıdaki betik, geçerli düğümünüzün IP adresini gösterir.
ip addr showYeni düğüm için 15 karakter veya daha az benzersiz bir isim gerekiyor. Bilgisayar adını
/etc/hostsekleyerek ayarlayın. Aşağıdaki betik,/etc/hostsilevidüzenlemenizi sağlar.sudo vi /etc/hostsAşağıdaki örnek,
/etc/hostsilesqlfcivm1,sqlfcivm2, vesqlfcivm3adlı üç düğüm için eklemeleri gösterir.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3Dosya her düğümde aynı olmalıdır.
Yeni düğümde SQL Server hizmetini durdurun.
Veritabanı dosya dizinini paylaşılan konuma bağlamak için talimatları takip edin.
NFS sunucusundan yükleyin
nfs-utils:sudo yum -y install nfs-utilsİstemcilerde ve NFS sunucusunda güvenlik duvarını açın:
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reload/etc/fstabdosyasını bağlama komutunu içerecek şekilde düzenleyin:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrDeğişikliklerin geçerli olması için
mount -açalıştırın.Yeni düğümde, Pacemaker oturum açma bilgilerinin SQL Server kullanıcı adını ve parolasını depolamak için bir dosya oluşturun. Aşağıdaki komut bu dosyayı oluşturur ve doldurur:
sudo touch /var/opt/mssql/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdCaution
Parolanız varsayılan SQL Server password ilkesini izlemelidir. 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.
Yeni düğümde 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 --reloadEğer yerleşik yüksek erişilebilirlik yapılandırması olmayan başka bir güvenlik duvarı kullanıyorsanız, Pacemaker'ın kümedeki diğer düğümlerle iletişim kurması için aşağıdaki portları açın:
- TCP : bağlantı noktaları 2224, 3121, 21064
- UDP: Bağlantı Noktası 5405
Pacemaker paketlerini yeni düğüme yükleyin.
sudo yum install pacemaker pcs fence-agents-all resource-agentsPacemaker ve Corosync paketleri yüklenirken oluşturulan varsayılan kullanıcının parolasını ayarlayın. Mevcut düğümler ile aynı parolayı kullanın.
sudo passwd haclusterpcsdhizmetini ve Pacemaker'ı etkinleştirin ve başlatın. Yeni düğüm, yeniden başlatmadan sonra kümeye yeniden katılabilir. Yeni düğümde aşağıdaki komutu çalıştırın.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker sudo systemctl start pacemakerSQL Server için FCI kaynak aracısını yükleyin. Yeni düğümde aşağıdaki komutu çalıştırın.
sudo yum install mssql-server-haKümedeki mevcut bir düğümde, yeni düğümü doğrulama yapın ve kümeye ekleyin:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Kümeden düğümleri kaldırma
Kümeden bir düğümü kaldırmak için aşağıdaki komutu çalıştırın:
sudo pcs cluster node remove <nodeName>
Kaynak izleme sıklığını değiştirin
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
Aşağıdaki örnek, kaynak için izleme aralığını 2 saniyeye mssqlha ayarlamaktadır:
sudo pcs resource op monitor interval=2s mssqlha
Troubleshoot
Küme sorunlarını giderdiğinizde, üç daemon'un küme kaynaklarını yönetmek için birlikte nasıl çalıştığını anlamanıza yardımcı olur.
| Daemon | Description |
|---|---|
| Corosync | Küme düğümleri arasında çoğunluk üyeliği ve mesajlaşmayı sağlar. |
| Kalp pili | Corosync'in üzerinde yer alır ve kaynaklar için durum yönetim sistemleri sağlar. |
| PCSD |
pcs araçlarıyla hem Pacemaker hem de Corosync'i yönetir. |
pcs araçlarını kullanabilmek için PCSD'nin çalışıyor olması gerekir.
Geçerli küme durumu
sudo pcs status her düğüm için küme, çekirdek, düğümler, kaynaklar ve daemon durumu hakkında temel bilgileri döndürür.
Aşağıdaki örnek, sağlıklı bir Pacemaker quorum çıktısını göstermektedir:
Cluster name: MyAppSQL
Last updated: Thu Oct 31 12:00:00 2024 Last change: Thu Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured
Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]
Full list of resources:
mssqlha (ocf::sql:fci): Started sqlvmnode1
PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/enabled
Bu örnekte, partition with quorum düğümlerin çoğunluğunun çevrimiçi olduğu anlamına gelir. Küme, düğümlerin çoğunluğunu kaybederse, pcs statuspartition WITHOUT quorum döndürür ve tüm kaynaklar durdurulur.
Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3], şu anda kümeye katılan tüm düğümlerin adını döndürür. Hiçbir düğüm katılmıyorsa, pcs statusOFFLINE: [<nodename>]döndürür.
PCSD Status her düğümün küme durumunu gösterir.
Düğümün çevrimdışı olmasının nedenleri
Bir düğüm çevrimdışı olduğunda aşağıdaki öğeleri denetleyin.
Güvenlik Duvarı
Pacemaker'ın iletişim kurması için tüm düğümlerde aşağıdaki portları açın:
- TCP : bağlantı noktaları 2224, 3121, 21064
- UDP: Bağlantı Noktası 5405
Pacemaker veya Corosync hizmetleri çalışıyor
Düğüm iletişimi
Düğüm adı eşlemeleri