Sdílet prostřednictvím


Provozujte instanci RHEL clusteru s podporou převzetí služeb při selhání (FCI) pro SQL Server

platí pro:SQL Server – Linux

Tento dokument popisuje, jak provádět následující úlohy pro SQL Server na clusteru s podporou převzetí služeb při selhání sdíleného disku s Red Hat Enterprise Linuxem.

  • Ruční převzetí řízení clusteru při selhání
  • Monitorování služby SQL Serveru clusteru s podporou převzetí služeb při selhání
  • Přidání uzlu clusteru
  • Odebrání uzlu clusteru
  • Změna frekvence monitorování prostředků SQL Serveru

Popis architektury

Vrstva pro clustering je založená na Red Hat Enterprise Linux (RHEL) HA doplňku, který je postaven na Pacemaker. Corosync a Pacemaker koordinuje komunikaci clusteru a správu prostředků. Instance SQL Serveru je aktivní buď na jednom uzlu, nebo na druhém.

Následující diagram znázorňuje komponenty v clusteru s Linuxem s SQL Serverem.

diagramu clusteru SQL sdíleného disku Red Hat Enterprise Linux 7

Další informace o konfiguraci clusteru, možnostech agentů prostředků a správě najdete v referenční dokumentaci RHEL.

Ruční přepnutí při selhání clusteru

Příkaz resource move vytvoří omezení, které vynutí spuštění prostředku na cílovém uzlu. Po spuštění příkazu move bude provedením příkazu clear odstraněno omezení, takže bude možné prostředek znovu přesunout nebo nechat prostředek automaticky převzít služby při selhání.

sudo pcs resource move <sqlResourceName> <targetNodeName>
sudo pcs resource clear <sqlResourceName>

Následující příklad přesune prostředek mssqlha do uzlu s názvem sqlfcivm2a pak odebere omezení, aby se prostředek mohl později přesunout na jiný uzel.

sudo pcs resource move mssqlha sqlfcivm2
sudo pcs resource clear mssqlha

Monitorování služby SQL Serveru s podporou převzetí služeb při selhání v clusteru

Zobrazení aktuálního stavu clusteru:

sudo pcs status

Zobrazení živého stavu clusteru a prostředků:

sudo crm_mon

Zobrazte protokoly agenta prostředků na /var/log/cluster/corosync.log

Přidání uzlu do clusteru

  1. Zkontrolujte IP adresu pro každý uzel. Následující skript ukazuje IP adresu vašeho aktuálního uzlu.

    ip addr show
    
  2. Nový uzel potřebuje jedinečný název, který má 15 znaků nebo méně. Ve výchozím nastavení v Systému Red Hat Linux je název počítače localhost.localdomain. Tento výchozí název nemusí být jedinečný a je příliš dlouhý. Nastavte název počítače pro nový uzel. Nastavte název počítače tak, že ho přidáte do /etc/hosts. Následující skript umožňuje upravovat /etc/hosts pomocí vi.

    sudo vi /etc/hosts
    

    Následující příklad ukazuje /etc/hosts s dodatky pro tři uzly: sqlfcivm1, sqlfcivm2asqlfcivm3.

    127.0.0.1      localhost localhost4 localhost4.localdomain4
    ::1            localhost localhost6 localhost6.localdomain6
    10.128.18.128  fcivm1
    10.128.16.77   fcivm2
    10.128.14.26   fcivm3
    

    Soubor by měl být stejný na každém uzlu.

  3. Zastavte službu SQL Serveru na novém uzlu.

  4. Podle pokynů připojte adresář databázového souboru ke sdílenému umístění:

    Ze serveru NFS nainstalujte nfs-utils

    sudo yum -y install nfs-utils
    

    Otevřete bránu firewall na klientech a serveru NFS

    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
    

    Upravte soubor /etc/fstab tak, aby zahrnoval příkaz mount:

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    Spusťte mount -a, aby se změny projevily.

  5. Na novém uzlu vytvořte soubor pro uložení uživatelského jména a hesla SQL Serveru pro přihlášení Pacemaker. Následující příkaz vytvoří a naplní tento soubor:

    sudo touch /var/opt/mssql/passwd
    sudo echo "<loginName>" >> /var/opt/mssql/secrets/passwd
    sudo echo "<password>" >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/passwd
    sudo chmod 600 /var/opt/mssql/passwd
    

    Opatrnost

    Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

  6. Na novém uzlu otevřete porty firewallu Pacemaker. Pokud chcete tyto porty otevřít pomocí firewalld, spusťte následující příkaz:

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

    Pokud používáte jinou bránu firewall, která nemá integrovanou konfiguraci vysoké dostupnosti, je potřeba otevřít následující porty, aby Pacemaker mohl komunikovat s jinými uzly v clusteru.

    • TCP: porty 2224, 3121, 21064
    • UDP: port 5405
  7. Nainstalujte balíčky Pacemaker na nový uzel.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  8. Nastavte heslo pro výchozího uživatele, který se vytvoří při instalaci balíčků Pacemaker a Corosync. Použijte stejné heslo jako existující uzly.

    sudo passwd hacluster
    
  9. Povolte a spusťte službu pcsd a Pacemaker. To umožní novému uzlu, aby se po restartování znovu připojí ke clusteru. Na novém uzlu spusťte následující příkaz.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  10. Nainstalujte agenta prostředků FCI pro SQL Server. Na novém uzlu spusťte následující příkazy.

    sudo yum install mssql-server-ha
    
  11. Na existujícím uzlu z clusteru ověřte nový uzel a přidejte ho do clusteru:

    sudo pcs cluster auth <nodeName3> -u hacluster
    sudo pcs cluster node add <nodeName3>
    

    Následující příklad přidá do clusteru uzel s názvem vm3.

    sudo pcs cluster auth
    sudo pcs cluster start
    

Odebrání uzlů z clusteru

Pokud chcete odebrat uzel z clusteru, spusťte následující příkaz:

sudo pcs cluster node remove <nodeName>

Změna frekvence intervalu monitorování prostředků sqlservr

sudo pcs resource op monitor interval=<interval>s <sqlResourceName>

Následující příklad nastaví interval monitorování na 2 sekundy pro prostředek mssql:

sudo pcs resource op monitor interval=2s mssqlha

Řešení potíží se sdíleným diskový clusterem Red Hat Enterprise Linux pro SQL Server

Při řešení potíží s clusterem vám pomůže pochopit, jak tři démony spolupracují na správě prostředků clusteru.

Démon Popis
Corosync Poskytuje členství v kvoru a zasílání zpráv mezi uzly clusteru.
Kardiostimulátor Nachází se nad Corosync a poskytuje stavové stroje pro prostředky.
PCSD Spravuje pacemaker i Corosync prostřednictvím nástrojů pcs.

PCSD musí být spuštěné, aby bylo možné používat nástroje pcs.

Aktuální stav clusteru

sudo pcs status vrátí základní informace o clusteru, kvoru, uzlech, prostředcích a stavu služby pro každý uzel.

Příkladem výstupu kvora pacemakeru, který je v pořádku, by byl:

Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2016  Last change: Wed Oct 31 11:00:00 2016 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

V tomto příkladu partition with quorum znamená, že kvórum většiny uzlů je online. Pokud cluster ztratí kvórum většiny uzlů, pcs status vrátí partition WITHOUT quorum a všechny prostředky se zastaví.

online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] vrátí název všech uzlů, které se aktuálně účastní clusteru. Pokud se některé uzly nezúčastní, pcs status vrátí OFFLINE: [<nodename>].

PCSD Status zobrazuje stav clusteru pro každý uzel.

Důvody, proč může být uzel offline

Pokud je uzel offline, zkontrolujte následující položky.

  • firewall

    Aby pacemaker mohl komunikovat, musí být na všech uzlech otevřené následující porty.

    • **TCP: 2224, 3121, 21064
  • Služby Pacemaker nebo Corosync, na kterých běží

  • komunikace Node

  • mapování názvů uzlů