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ı.
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.
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:
küme düğümlerinde SQL Server'ı yapılandırın.
kullanılabilirlik grubunu oluşturun.
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ı .
Kullanılabilirlik grubunu kümekaynak olarak ekleyin.
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:
Sistemi kaydedin.
sudo subscription-manager register
Kullanıcı adınızı ve parolanızı belirtin.
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.
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>
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:
Aboneliği kaydettikten sonra Pacemaker'ı yapılandırmak için aşağıdaki adımları tamamlayın:
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
Pacemaker paketlerini tüm düğümlere yükleyin.
sudo yum install pacemaker pcs fence-agents-all resource-agents
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
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
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.
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
}
}
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.
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.
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_COMMIT'ı 1olarak 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:
Kullanıcı pcs resource move komutunu birincil kullanılabilirlik grubunu node1'den node2'ye taşımak için veriyor.
Sanal IP kaynağı düğüm 1'de durur.
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.
Düğüm 1'deki birincil kullanılabilirlik grubu ikincil olarak indirgendi.
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.
İlgili içerik
Kümeleme katmanı, Pacemakerüzerine kurulu SUSE Yüksek Kullanılabilirlik Uzantısı (HAE) temel alır.
Küme yapılandırması, kaynak aracısı seçenekleri, yönetim, en iyi yöntemler ve öneriler hakkında daha fazla bilgi için bkz. SUSE Linux Enterprise Yüksek Kullanılabilirlik Uzantısı.
Yol Haritası
Yüksek kullanılabilirlik için kullanılabilirlik grubu oluşturma yordamı, Linux sunucuları ile Windows Server yük devretme kümesi arasında farklılık gösterir. Aşağıdaki listede üst düzey adımlar açıklanmaktadır:
küme düğümlerinde SQL Server'ı yapılandırın.
kullanılabilirlik grubunu oluşturun.
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 makaledeki örneklerde eskrim aracıları kullanılmaz. Bunlar 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. SUSE Linux Enterprise Yüksek Kullanılabilirlik Uzantısı.
Kullanılabilirlik grubunu küme kaynak olarak ekleme
Önkoşullar
Aşağıdaki uçtan uca senaryoyu tamamlamak için üç düğüm kümesini dağıtmak için üç makineye ihtiyacınız vardır. Aşağıdaki adımlarda bu sunucuların nasıl yapılandırılacakları özetlenmiştir.
İlk adım, küme düğümlerinde işletim sistemini yapılandırmaktır. Bu adım adım kılavuzda, HA eklentisi için hak sahipliği olan bir abonelikle SLES 12 SP3 kullanın.
Tüm düğümlerde SQL Server hizmetini yükleyin ve ayarlayın. Ayrıntılı yönergeler için bkz. linux sql server için yükleme kılavuzu.
Bir düğümü birincil düğüm, diğer düğümleri ikincil düğüm olarak belirleyin. Bu kılavuz boyunca bu terimleri kullanın.
Kümenin parçası olacak düğümlerin birbirleriyle iletişim kuraadığından emin olun.
Aşağıdaki örnekte SLES1, SLES2 ve SLES3 adlı üç düğüm için eklemeler içeren /etc/hosts gösterilmektedir.
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
Tüm küme düğümlerinin SSH aracılığıyla birbirine erişebilmesi gerekir.
hb_report veya crm_report (sorun giderme için) ve Hawk's History Explorer gibi araçlar düğümler arasında parolasız SSH erişimi gerektirir, aksi takdirde yalnızca geçerli düğümden veri toplayabilirler. Standart olmayan bir SSH bağlantı noktası kullanıyorsanız -X seçeneğini kullanın (bkz. man sayfa). Örneğin, SSH bağlantı noktanız 3479 ise şununla bir crm_report çağır:
sudo crm_report -X "-p 3479" [...]
Daha fazla bilgi için SLES Yönetim Kılavuzu - Çeşitli bölümüne bakın.
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.
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.
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
Linux sunucularında kullanılabilirlik grubunu yapılandırın ve ardından küme kaynaklarını yapılandırın. Kullanılabilirlik grubunu yapılandırmak için bkz. Linux'ta yüksek kullanılabilirlik için SQL Server kullanılabilirlik grubunu yapılandırma
Yüksek Kullanılabilirlik uzantısını yükleme
Referans için bkz. SUSE Linux Enterprise Server ve Yüksek Kullanılabilirlik Uzantısı'yı Yükleme.
SQL Server kaynak aracısı paketini her iki düğüme de yükleyin.
sudo zypper install mssql-server-ha
İlk düğümü ayarlama
SLES yükleme yönergeleri için'e bakın.
Küme düğümü olarak kullanmak istediğiniz fiziksel veya sanal makinede root olarak oturum açın.
Aşağıdakini yürüterek bootstrap betiğini başlatın:
sudo ha-cluster-init
NTP'nin önyükleme esnasında başlatılacak şekilde yapılandırılmamış olması durumunda bir ileti görüntülenir.
Yine de devam etmeye karar verirseniz, betik otomatik olarak SSH erişimi ve Csync2 eşitleme aracı için anahtarlar oluşturur ve her ikisi için de gereken hizmetleri başlatır.
Küme iletişim katmanını (Corosync) yapılandırmak için:
Bağlanacak bir ağ adresi girin. Betik, varsayılan olarak eth0 ağ adresini önerir. Alternatif olarak, bond0 adresi gibi farklı bir ağ adresi girin.
Çok noktaya yayın adresini girin. Betik, varsayılan olarak kullanabileceğiniz rastgele bir adres önerir.
Çok noktaya yayın portu girin. Betik 5405'i varsayılan olarak önerir.
SBD ()'ı yapılandırmak için, SBD için kullanmak istediğiniz blok cihazınızın bölümüne kalıcı bir yol belirtin. Yol, kümedeki tüm düğümlerde tutarlı olmalıdır.
Son olarak betik, tek düğümlü kümeyi çevrimiçi hale getirmek ve Web yönetim arabirimi Hawk2'yi etkinleştirmek için Pacemaker hizmetini başlatır. Hawk2 için kullanılacak URL ekranda görüntülenir.
Kurulum işleminin tüm ayrıntıları için /var/log/sleha-bootstrap.logdenetleyin. Artık çalışan bir tek düğümlü kümeniz var. Crm durumuyla küme durumunu denetleyin:
sudo crm status
crm configure show xml veya crm configure showile küme yapılandırmasını da görebilirsiniz.
Bootstrap yordamı, haclusterparolası ile linux adlı bir Linux kullanıcısı oluşturur. Varsayılan parolayı en kısa sürede güvenli bir parolayla değiştirin:
sudo passwd hacluster
Mevcut kümeye düğüm ekleme
Bir veya daha fazla düğümle çalışan bir kümeniz varsa, ha-cluster-join bootstrap betiğiyle daha fazla küme düğümü ekleyin. Betiğin yalnızca mevcut bir küme düğümüne erişmesi gerekir ve geçerli makinedeki temel kurulumu otomatik olarak tamamlar. Aşağıdaki adımları kullanın:
Mevcut küme düğümlerini YaST küme modülüyle yapılandırdıysanız, ha-cluster-joinçalıştırmadan önce aşağıdaki önkoşulların karşılandığından emin olun:
Kümeye katılması gereken fiziksel veya sanal makinede root olarak oturum açın.
Aşağıdakini yürüterek bootstrap betiğini başlatın:
sudo ha-cluster-join
NTP'nin önyükleme esnasında başlatılacak şekilde yapılandırılmamış olması durumunda bir ileti görüntülenir.
Yine de devam etmeye karar verirseniz, mevcut bir düğümün IP adresi istenir. IP adresini girin.
Her iki makine arasında parolasız SSH erişimi yapılandırmadıysanız, mevcut düğümün kök parolasını da girmeniz istenir.
Betik, belirtilen düğümde oturum açtıktan sonra Corosync yapılandırmasını kopyalar, SSH ve Csync2'ı yapılandırıp, geçerli makineyi yeni küme düğümü olarak çevrimiçine getirir. Bunun dışında Hawk için ihtiyaç duyulan hizmeti başlatır. paylaşılan depolamayı OCFS2ile yapılandırdıysanız, OCFS2 dosya sistemi için mountpoint dizinini de otomatik olarak oluşturur.
Kümeye eklemek istediğiniz tüm makineler için önceki adımları yineleyin.
İşlemin ayrıntıları için /var/log/ha-cluster-bootstrap.log'ı kontrol edin.
sudo crm statusile küme durumunu denetleyin. İkinci bir düğümü başarıyla eklediyseniz, çıkış aşağıdakine benzer:
sudo crm status
Aşağıdaki örneğe benzer bir çıktı görürsünüz.
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
Not
admin_addr, ilk tek düğümlü küme kurulumu sırasında yapılandırılan sanal IP kümesi kaynağıdır.
Tüm düğümleri ekledikten sonra, genel küme seçeneklerindeki kvorumsuz ilkeyi ayarlamanız gerekip gerekmediğini kontrol edin. Bu özellikle iki düğümlü kümeler için önemlidir.
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:
crm configure property 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:
crm configure property start-failure-is-fatal=true
Mevcut AG kaynak özelliğini failure-timeout'dan 60s'e olarak güncelleyin (ag1'yi kullanılabilirlik grubu kaynağınızın adıyla değiştirin):
crm configure edit ag1
Metin düzenleyicisinde, meta failure-timeout=60s'ı herhangi bir param'den sonra ve op'lerden önce ekleyin.
Pacemaker küme özellikleri hakkında daha fazla bilgi için bkz. Küme Kaynaklarını Yapılandırma.
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
}
}
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.
Kaynak düzeyinde kilitleme, bir kaynağı yapılandırarak öncelikli olarak bir kesinti sırasında veri bozulması olmamasını sağlar. Örneğin, DRBD (Dağıtılmış Çoğaltılmış Blok Cihazı) ile kaynak düzeyinde çit kullanarak iletişim bağlantısı kesildiğinde düğümdeki diski eski olarak işaretleyebilirsiniz.
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 yapılır ve Pacemaker uygulaması STONITH olarak adlandırılır. Pacemaker, sunucular için kesintisiz güç kaynağı veya yönetim arabirimi kartları gibi çok çeşitli eskrim cihazlarını destekler.
Daha fazla bilgi için bkz:
Küme başlatma sırasında, yapılandırma algılanmadıysa izolasyon devre dışı bırakılır. Aşağıdaki komut çalıştırılarak daha sonra etkinleştirilebilir:
sudo crm configure property stonith-enabled=true
Önemli
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. SUSE, herhangi bir bulut ortamı (Azure dahil) veya Hyper-V için eskrim aracıları sağlamaz. Sonuç olarak, küme satıcısı bu ortamlarda üretim kümelerini çalıştırma desteği sunmaz. Gelecek sürümlerde kullanıma sunulacak bu boşluk için bir çözüm üzerinde çalışıyoruz.
SLES Yönetim Kılavuzubakın.
Pacemaker'i etkinleştirme
Pacemaker'ın otomatik olarak başlatılmasını sağlayın.
Kümedeki her düğümde aşağıdaki komutu çalıştırın.
systemctl enable pacemaker
Kullanılabilirlik grubu kaynağı oluşturma
Aşağıdaki komut, [ag1] kullanılabilirlik grubunun üç çoğaltması için kullanılabilirlik grubu kaynağını oluşturur ve yapılandırmaktadır. zaman aşımlarının iş yüküne son derece bağımlı olması ve her dağıtım için dikkatli bir şekilde ayarlanması gerektiğinden, izleme işlemlerinin ve zaman aşımlarının SLES'de açıkça belirtilmesi gerekir.
Komutunu kümedeki düğümlerden birinde çalıştırın:
crm istemini açmak için crm configure çalıştırın:
sudo crm configure
Crm isteminde aşağıdaki komutu çalıştırarak kaynak özelliklerini yapılandırın.
primitive ag_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag_cluster ag_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true" \
commit
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_COMMIT'ı 1olarak 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
ha-cluster-initçalıştırdığınızda sanal IP kaynağını oluşturmadıysanız, bu kaynağı şimdi oluşturabilirsiniz. Aşağıdaki komut bir sanal IP kaynağı oluşturur.
<0.0.0.0> ağınızdaki kullanılabilir bir adresle ve <24> CIDR alt ağ maskesindeki bit sayısıyla değiştirin. Bir düğümde çalıştırın.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<0.0.0.0> \
cidr_netmask=<24>
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 ve küme kaynak yöneticisi belirli bir kaynak için en yüksek puana sahip düğümü seçer. (Bir düğümün kaynak için negatif puanı varsa, kaynak bu düğümde çalıştırılamaz.) Kümenin kararlarını kısıtlamalarla değiştirebiliriz. Kısıtlamaların bir puanı vardır. Kısıtlamanın puanı INFINITY'den düşükse, bu yalnızca bir öneridir. INFINITY puanı, bunun kesinlikle yapılması gereken bir şey olduğunu belirtir. Kullanılabilirlik grubunun birincil sunucusunun ve sanal IP kaynağının aynı sunucuda çalıştırıldığından emin olmak istiyoruz, bu yüzden INFINITY puanıyla birlikte bir eş konum kısıtlaması tanımlıyoruz.
Sanal IP'nin birincil düğümle aynı düğümde çalışması için birlikte bulundurma kısıtlamasını ayarlamak için bir düğümde aşağıdaki komutu çalıştırın:
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
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:
- Kullanıcı
resource migrate komutunu birincil kullanılabilirlik grubunu node1'den node2'ye taşımak için veriyor.
- Sanal IP kaynağı düğüm 1'de durur.
- Sanal IP kaynağı düğüm 2'de başlar. 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.
- 1. düğümdeki kullanılabilirlik grubu yöneticisi indirgendi.
- 2. düğümdeki kullanılabilirlik grubu ana gruba yükseltilir.
IP adresinin yük devretme öncesi ikincil düğüme geçici olarak işaret etmesini önlemek için, bir düğümde aşağıdaki komutu kullanarak bir öncelik kısıtlaması ekleyin.
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
Ö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. SLES'de crmkullanın.
Kullanılabilirlik grubuna crmile manuel yük devretme. Transact-SQL ile yük devretme işlemi başlatmayın. Daha fazla bilgi için bkz. Yük Devretme.
Daha fazla bilgi için bkz:
İlgili içerik
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:
linux üzerinde SQL Serveriçin yükleme yönergeleri.
LINUX'ta yüksek kullanılabilirlik için SQL Server kullanılabilirlik grubunu yapılandırın.
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 makaledeki örneklerde eskrim aracıları kullanılmaz. Bunlar 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.
Eskrim normalde işletim sisteminde uygulanır ve ortama bağlıdır. Eskrim yönergelerini işletim sistemi dağıtımcı belgelerinde bulabilirsiniz.
Kullanılabilirlik grubunu kümekaynak olarak ekleyin.
Tüm düğümlerde güvenlik duvarı bağlantı noktalarını açın. Pacemaker yüksek kullanılabilirlik hizmeti, SQL Server örneği ve kullanılabilirlik grubu uç noktası için bağlantı noktasını açın. SQL Server çalıştıran sunucu için varsayılan TCP bağlantı noktası 1433.
sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload
Alternatif olarak, güvenlik duvarını devre dışı bırakabilirsiniz, ancak üretim ortamında bu önerilmez:
sudo ufw disable
Pacemaker paketlerini yükleyin. Tüm düğümlerde Ubuntu 20.04 için aşağıdaki komutları çalıştırın. Önceki sürümlere yükleme hakkında daha fazla bilgi için bkz. Ubuntu HA - Azureüzerinde MS SQL Server .
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
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
Kümeyi oluşturma
Küme oluşturmadan önce birincil sunucuda bir kimlik doğrulama anahtarı oluşturmanız ve bunu AG'ye katılan diğer sunuculara kopyalamanız gerekir.
Birincil sunucuda bir kimlik doğrulama anahtarı oluşturmak için aşağıdaki betiği kullanın:
sudo corosync-keygen
oluşturulan anahtarı diğer sunuculara kopyalamak için scp kullanabilirsiniz:
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
Kümeyi oluşturmak için birincil sunucuda /etc/corosync/corosync.conf dosyasını düzenleyin:
sudo vim /etc/corosync/corosync.conf
corosync.conf dosyası aşağıdaki örneğe benzer görünmelidir:
totem {
version: 2
cluster_name: agclustername
transport: udpu
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: server-01
nodeid: 1
ring0_addr: 10.0.0.4
}
node {
name: server-02
nodeid: 2
ring0_addr: 10.0.0.5
}
node {
name: server-03
nodeid: 3
ring0_addr: 10.0.0.6
}
}
diğer düğümlerde corosync.conf dosyasını değiştirin:
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
pacemaker ve corosync hizmetlerini yeniden başlatın:
sudo systemctl restart pacemaker corosync
Kümenin durumunu onaylayın ve yapılandırmayı doğrulayın:
sudo crm status
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
}
}
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.
Kaynak düzeyi izolasyonu, bir kesinti olduğunda veri bozulmasının önlenmesini sağlar. Örneğin, DRBD (Dağıtılmış Çoğaltılmış Blok Cihazı) ile kaynak düzeyinde çit kullanarak iletişim bağlantısı kesildiğinde düğümdeki diski eski olarak işaretleyebilirsiniz.
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 yapılır ve Pacemaker uygulaması STONITH olarak adlandırılır. Pacemaker, sunucular için kesintisiz güç kaynağı veya yönetim arabirim kartları gibi çok çeşitli eskrim cihazlarını destekler.
Daha fazla bilgi için bkz. Sıfırdan Pacemaker Kümelerini ve Eskrim ve Stonith.
Düğüm düzeyinde çit yapılandırması ortamınıza büyük ölçüde bağlı olduğundan, biz bu eğitimde devre dışı bırakıyoruz (daha sonra yapılandırılabilir). Birincil düğümde aşağıdaki betiği çalıştırın:
sudo crm configure property stonith-enabled=false
Bu örnekte, eskrim 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. Belirli bir dağıtım için eskrim aracıları hakkında bilgi için işletim sistemi satıcısına başvurun.
Küme özelliğini küme-yeniden denetleme aralığı olarak ayarlama
cluster-recheck-interval özelliği, 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.
failure-timeout 60 saniye ve cluster-recheck-interval 60 saniyeden büyük bir değere ayarlamanız gerekir.
cluster-recheck-interval daha küçük bir değere ayarlanması önerilmez.
Özellik değerini 2 minutes olarak güncelleştirmek için çalıştırın:
sudo crm configure property 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 crm configure property start-failure-is-fatal=true
Mevcut AG kaynak özelliğini failure-timeout'dan 60s'e olarak güncelleyin (ag1'yi kullanılabilirlik grubu kaynağınızın adıyla değiştirin):
sudo crm configure meta failure-timeout=60s
Pacemaker ile tümleştirme için SQL Server kaynak aracısını yükleme
Tüm düğümlerde aşağıdaki komutları çalıştırın.
sudo apt-get install mssql-server-ha
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.
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.
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 sudo crm configure komutunu kullanarak kaynak özelliklerini ayarlayın. Aşağıdaki örnek, adı ocf:mssql:agolan bir kullanılabilirlik grubu için bir birincil/çoğaltma türü kaynak ag1 oluşturur.
~$ sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
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_COMMIT'ı 1olarak 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. Betiği çalıştırmadan önce, < ... > arasındaki değerleri geçerli bir IP adresiyle değiştirin.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
Pacemaker'da sanal sunucu adı eşdeğeri yoktur. Bir dize sunucusu adına işaret eden ve IP adresini kullanmayan bir bağlantı dizesi kullanmak için, 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 ve küme kaynak yöneticisi belirli bir kaynak için en yüksek puana sahip düğümü seçer. (Bir düğümün kaynak için negatif puanı varsa, kaynak bu düğümde çalıştırılamaz.)
Kümenin kararlarını yapılandırmak için kısıtlamaları kullanın. Kısıtlamaların bir puanı vardır. Kısıtlamanın puanı INFINITY'den düşükse, bu yalnızca bir öneridir. INFINITY puanı, zorunlu olduğu anlamına gelir.
Birincil çoğaltıcı ve sanal IP kaynağının aynı hostta olduğundan emin olmak için SONSUZ puanıyla yerleşim 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.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
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:
Kullanıcı, pcs resource move'den node1'ye kadar node2'ı kullanılabilirlik grubunun birinciline veriyor.
Sanal IP kaynağı node1üzerinde durur.
Sanal IP kaynağı node2'da başlar.
Bu noktada IP adresi geçici olarak node2’ı işaret ederken, node2 hala taşıma öncesi yedek durumdadır.
node1 üzerindeki birincil kullanılabilirlik grubu ikincil olarak düşürüldü.
node2 üzerindeki ikincil kullanılabilirlik grubu birincil olarak yükseltilir.
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:
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
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.
İlgili içerik