Yük devretme kümesi örneğini yapılandırma - Linux üzerinde SQL Server (RHEL)
Şunlar için geçerlidir:SQL Server - Linux
SQL Server iki düğümlü paylaşılan disk yük devretme kümesi örneği, yüksek kullanılabilirlik için sunucu düzeyinde yedeklilik sağlar. Bu öğreticide, Linux üzerinde SQL Server'ın iki düğümlü yük devretme kümesi örneğini oluşturmayı öğreneceksiniz. Tamamlayacağınız belirli adımlar şunlardır:
- Linux'ı ayarlama ve yapılandırma
- SQL Server'ı yükleme ve yapılandırma
- Hosts dosyasını yapılandırın
- Paylaşılan depolamayı yapılandırma ve veritabanı dosyalarını taşıma
- Her küme düğümüne Pacemaker'ı yükleme ve yapılandırma
- Yük devretme kümesi örneğini yapılandırma
Bu makalede, SQL Server için iki düğümlü paylaşılan disk yük devretme kümesi örneğinin (FCI) nasıl oluşturulacağı açıklanmaktadır. Makale, Red Hat Enterprise Linux (RHEL) için yönergeler ve betik örnekleri içerir. Ubuntu dağıtımları RHEL'e benzer, bu nedenle betik örnekleri normalde Ubuntu üzerinde de çalışır.
Kavramsal bilgi için bkz. Yük Devretme Kümesi Örnekleri - Linux'ta SQL Server.
Aşağıdaki uçtan uca senaryoyu tamamlamak için iki düğüm kümesini dağıtmak için iki makineye ve depolama için başka bir sunucuya ihtiyacınız vardır. Aşağıdaki adımlarda bu sunucuların nasıl yapılandırılacağı açıklanmıştır.
İlk adım, küme düğümlerinde işletim sistemini yapılandırmaktır. Kümedeki her düğümde bir linux dağıtımı yapılandırın. Her iki düğümde de aynı dağıtımı ve sürümü kullanın. Aşağıdaki dağıtımlardan birini veya diğerini kullanın:
- HA eklentisi için geçerli bir aboneliğe sahip RHEL
HER iki düğümde de SQL Server'ı yükleyin ve ayarlayın. Ayrıntılı yönergeler için bkz. linux sql server için yükleme kılavuzu.
Yapılandırma amacıyla bir düğümü birincil, diğerini ikincil olarak belirleyin. Bu kılavuzu takip etmek için bu terimleri kullanın.
İkincil düğümde SQL Server'ı durdurun ve devre dışı bırakın. Aşağıdaki örnek SQL Server'ı durdurur ve devre dışı bırakır:
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Not
Kurulum zamanında, SQL Server örneği için bir Sunucu Ana Anahtarı oluşturulur ve
var/opt/mssql/secrets/machine-key
yerleştirilir. Linux, SQL Server'da her zamanmssql
adlı yerel bir hesap olarak çalışır. Yerel bir hesap olduğundan kimliği düğümler arasında paylaşılmamaktadır. Bu nedenle, birincil düğümden her ikincil düğüme şifreleme anahtarını kopyalamanız gerekir, böylece her yerelmssql
hesabı Sunucu Anahtarının şifresini çözebilir.Birincil düğümde Pacemaker için bir SQL Server oturumu oluşturun ve
sp_server_diagnostics
çalıştırmak için oturum açma izni verin. Pacemaker, hangi düğümün SQL Server çalıştırdığını doğrulamak için bu hesabı kullanır.sudo systemctl start mssql-server
sa
hesabıyla SQL Servermaster
veritabanına bağlanın ve aşağıdakileri çalıştırın:USE [master]; GO CREATE LOGIN [<loginName>] WITH PASSWORD = N'<password>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
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.
Alternatif olarak, izinleri daha ayrıntılı bir düzeyde ayarlayabilirsiniz. Pacemaker oturum açma işlemi,
VIEW SERVER STATE
ile sağlık durumunu sorgulamak vesp_server_diagnostics
, setupadminilesp_dropserver
vesp_addserver
çalıştırarak kaynak adıyla FCI örneği adını güncelleştirmek için ALTER ANY LINKED SERVER gerektirir.Birincil düğümde SQL Server'ı durdurun ve devre dışı bırakın.
Her küme düğümünde hosts dosyasını yapılandırın. Hosts dosyası, her küme düğümünün IP adresini ve adını içermelidir.
Her düğümün IP adresini denetleyin. Aşağıdaki betik, geçerli düğümünüzün IP adresini gösterir.
sudo ip addr show
Her düğümde bilgisayar adını ayarlayın. Her düğüme 15 karakter veya daha az benzersiz bir ad verin. Bilgisayar adını
/etc/hosts
ekleyerek ayarlayın. Aşağıdaki betik,vi
ile/etc/hosts
düzenlemenizi sağlar.sudo vi /etc/hosts
Aşağıdaki örnekte,
sqlfcivm1
vesqlfcivm2
adlı iki düğüm için eklemeler içeren/etc/hosts
gösterilmektedir.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Her iki düğümün de erişebileceği bir depolama alanı sağlamanız gerekir. iSCSI, NFS veya SMB kullanabilirsiniz. Depolamayı yapılandırın, depolamayı küme düğümlerine sunun ve ardından veritabanı dosyalarını yeni depolama alanına taşıyın. Aşağıdaki makalelerde her depolama türü için adımlar açıklanmaktadır:
- Yük devretme kümesi örneğini yapılandırma - iSCSI - Linux üzerinde SQL Server
- Yük devretme kümesi örneğini yapılandırma - NFS - Linux'ta SQL Server
- SMB depolama yük devretme kümesi örneğini yapılandırma - Linux'ta SQL Server
Her iki küme düğümünde de 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 sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwd
Her iki küme düğümünde de Pacemaker güvenlik duvarı bağlantı noktalarını açın. Bu bağlantı noktalarını
firewalld
ile açmak için aşağıdaki komutu çalıştırın:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reload
Yerleşik yüksek kullanılabilirlik yapılandırmasına sahip olmayan başka bir güvenlik duvarı kullanıyorsanız Pacemaker'ın kümedeki diğer düğümlerle iletişim kurabilmesi için aşağıdaki bağlantı noktalarının açılması gerekir:
- TCP : portlar 2224, 3121, 21064
- UDP: Bağlantı Noktası 5405
Her düğüme Pacemaker paketlerini 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. Her iki düğümde de aynı parolayı kullanın.
sudo passwd hacluster
pcsd
hizmetini ve Pacemaker'ı etkinleştirin ve başlatın. Bu, düğümlerin yeniden başlatmadan sonra kümeye yeniden katılmasını sağlar. Her iki düğümde de aşağıdaki komutu çalıştırın.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker
SQL Server için FCI kaynak aracısını yükleyin. Her iki düğümde de aşağıdaki komutları çalıştırın.
sudo yum install mssql-server-ha
FCI bir kaynak grubunda oluşturulur. Kaynak grubu kısıtlamalara olan ihtiyacı azalttığından bu biraz daha kolaydır. Ancak, kaynakları başlamaları gereken sırayla kaynak grubuna ekleyin. Başlamaları gereken sıra:
- Depolama kaynağı
- Ağ kaynağı
- Uygulama kaynağı
Bu örnek, NewLinFCIGrp grubunda bir FCI oluşturur. Kaynak grubunun adı Pacemaker'da oluşturulan tüm kaynaklardan benzersiz olmalıdır.
Disk kaynağını oluşturun. Bir sorun yoksa yanıt alamazsınız. Disk kaynağını oluşturmanın yolu depolama türüne bağlıdır. Aşağıdaki bölümde her depolama türüne (iSCSI, NFS ve SMB) yönelik örnekler gösterilmektedir. Kümelenmiş depolamanız için depolama türüne uygulanan örneği kullanın.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
-
<iSCSIDIskResourceName>
, iSCSI diskiyle ilişkilendirilmiş kaynağın adıdır -
<VolumeGroupName>
birim grubunun adıdır -
<LogicalVolumeName>
, oluşturulan mantıksal birimin adıdır -
<FolderToMountiSCSIDIsk>
diskin bağlanacağı klasördür (sistem veritabanları ve varsayılan konum için/var/opt/mssql/data
) -
<FileSystemType>
, öğelerin nasıl biçimlendirildiğine ve dağıtımın neleri desteklediğine bağlı olarak EXT4 veya XFS olabilir.
-
FCI tarafından kullanılacak IP adresini oluşturun. Bir sorun yoksa yanıt alamazsınız.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
-
<IPResourceName>
, IP adresiyle ilişkilendirilmiş kaynağın adıdır -
<IPAddress>
, FCI'nın IP adresidir -
<NetworkCard>
, alt ağ ile ilişkili ağ kartıdır (yani eth0) -
<NetMask>
alt ağın ağ maskesidir (yani 24) -
<RGName>
kaynak grubunun adıdır
-
FCI kaynağını oluşturun. Bir sorun yoksa yanıt alamazsınız.
sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
-
<FCIResourceName>
yalnızca kaynağın adı değil, FCI ile ilişkili kullanıcı dostu addır. Kullanıcılar ve uygulamalar bağlanmak için bunu kullanır. -
<RGName>
, kaynak grubunun adıdır.
-
komutunu
sudo pcs resource
çalıştırın. FCI çevrimiçi olmalıdır.FCI'nin DNS/kaynak adını kullanarak SSMS veya sqlcmd ile FCI'ye bağlanın.
Açıklamayı
SELECT @@SERVERNAME
yayınlayın. FCI'nın adını döndürmelidir.SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
açıklamasını yayınla. FCI'nin üzerinde çalıştığı düğümün adını döndürmelidir.FCI'yi diğer düğümlere elle aktarın. Yük devretme kümesi örneğini çalıştırma - Linux'ta SQL Server altındaki yönergelere bakın.
Son olarak, FCI'yi özgün düğüme geri gönderin ve birlikte bulundurma kısıtlamasını kaldırın.
Bu öğreticide aşağıdaki görevleri tamamladınız.
- Linux'ı ayarlama ve yapılandırma
- SQL Server'ı yükleme ve yapılandırma
- Hosts dosyasını yapılandır
- Paylaşılan depolamayı yapılandırma ve veritabanı dosyalarını taşıma
- Her küme düğümüne Pacemaker'ı yükleme ve yapılandırma
- Yük devretme kümesi örneğini yapılandırma