Megosztás a következőn keresztül:


Pacemaker-fürt konfigurálása SQL Server rendelkezésre állási csoportokhoz

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez a cikk azt ismerteti, hogyan hozhat létre háromcsomópontos fürtöt Linuxon a Pacemaker használatával, és hogyan adhat hozzá egy korábban létrehozott rendelkezésre állási csoportot erőforrásként a fürthöz. A magas rendelkezésre álláshoz a Linuxon elérhető rendelkezésre állási csoportnak három csomópontra van szüksége – lásd: Magas rendelkezésre állás és adatvédelem a rendelkezésre állási csoport konfigurációihoz.

Jegyzet

Ebben a cikkben szerepel a slave (alárendelt) kifejezés, amelyet a Microsoft már nem használ. Ha a kifejezés el lesz távolítva a szoftverből, eltávolítjuk a jelen cikkből.

Az SQL Server nincs olyan szorosan integrálva a Pacemakerrel Linuxon, mint a Windows Server feladatátvételi fürtszolgáltatásával (WSFC). Az SQL Server-példány nem ismeri a fürtöt, és az irányítás kívülről történik. A Pacemaker klaszter erőforrás-vezénylést biztosít. A virtuális hálózat neve a Windows Server feladatátvételi fürtszolgáltatásra is vonatkozik; A Pacemakerben nincs egyenértékű. A fürtinformációkat lekérdező rendelkezésre állási csoport dinamikus felügyeleti nézetei üres sorokat ad vissza a Pacemaker-fürtökön. Ha figyelőt szeretne létrehozni a feladatátvétel utáni transzparens újracsatlakozáshoz, manuálisan regisztrálja a figyelő nevét a DNS-ben a virtuális IP-erőforrás létrehozásához használt IP-címmel.

A feladatátvétel után továbbra is létrehozhat egy figyelőt az átlátszó újracsatlakozáshoz, de manuálisan regisztrálnia kell a figyelő nevét a DNS-kiszolgálón, azzal az IP-címmel, amelyet a virtuális IP-erőforrás létrehozásához használt (a következő szakaszokban leírtak szerint).

Az alábbi szakaszok bemutatják a Pacemaker-fürt beállításának lépéseit, hozzáadva egy rendelkezésre állási csoportot a fürthöz mint erőforrást a magas rendelkezésre állás érdekében, minden támogatott Linux-disztribúció esetén.

A fürtözési réteg alapja a Red Hat Enterprise Linux (RHEL) HA bővítményPacemaker.

Jegyzet

A Red Hat teljes dokumentációhoz való hozzáféréshez érvényes előfizetés szükséges.

A fürtkonfigurációról, az erőforrásügynökök beállításairól és felügyeletéről további információt a RHEL referenciadokumentációbantalálhat.

Ütemterv

A magas rendelkezésre állás érdekében Linux-kiszolgálókon létrehozott rendelkezésre állási csoport lépései eltérnek a Windows Server feladatátvevő fürt eljárásaitól. Az alábbi lista a magas szintű lépéseket ismerteti:

  1. SQL Server konfigurálása a fürtcsomópontokon.

  2. A rendelkezésre állási csoportlétrehozása.

  3. Konfiguráljon egy fürterőforrás-kezelőt, például a Pacemakert. Ezek az utasítások ebben a cikkben találhatók.

    A fürterőforrás-kezelő konfigurálásának módja az adott Linux-disztribúciótól függ.

    Fontos

    Az éles környezetekben szükség van egy ''fencing agent''-re a magas rendelkezésre állás érdekében. A dokumentációban szereplő bemutatók nem használnak kerítésügynököket. A bemutatók csak tesztelésre és ellenőrzésre használhatók. Egy Linux-klaszter a "fencing" technikát használja, hogy a klasztert visszaállítsa egy ismert állapotba. A kerítés konfigurálásának módja az elosztástól és a környezettől függ. A kerítés jelenleg nem érhető el egyes felhőkörnyezetekben. További információkért lásd a RHEL magas rendelkezésre állású fürtök és virtualizációs platformok támogatási szabályzatait.

  4. Adja hozzá a rendelkezésre állási csoportot a fürterőforrásaként.

Magas rendelkezésre állás konfigurálása az RHEL-hez

Az RHEL magas rendelkezésre állásának konfigurálásához engedélyezze a magas rendelkezésre állású előfizetést, majd konfigurálja a Pacemakert.

Az RHEL magas rendelkezésre állású előfizetésének engedélyezése

A fürt minden csomópontjának rendelkeznie kell egy megfelelő előfizetéssel az RHEL-hez és a Magas rendelkezésre állás kiegészítőhöz. Tekintse át a követelményeket a(z) Magas rendelkezésre állású fürtcsomagok telepítési módját a Red Hat Enterprise Linux. Az előfizetés és az adattárak konfigurálásához kövesse az alábbi lépéseket:

  1. Regisztrálja a rendszert.

    sudo subscription-manager register
    

    Adja meg a felhasználónevet és a jelszót.

  2. Sorolja fel a regisztrációhoz elérhető csoportokat.

    sudo subscription-manager list --available
    

    Jegyzet

    Az RHEL 10 esetében a listaparancs a következő:

    sudo subscription-manager repos --list
    

    Az elérhető készletek listájában jegyezze fel a magas rendelkezésre állású előfizetés készletazonosítóját.

  3. Frissítse a következő szkriptet. Cserélje le a <pool id>-t a készlet ID-ra a magas rendelkezésre állás biztosítása érdekében az előző lépésben. Futtassa a szkriptet az előfizetés csatolásához.

    sudo subscription-manager attach --pool=<pool id>
    
  4. Engedélyezze az adattárat.

    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
    

További információ: Pacemaker – A nyílt forráskódú, magas rendelkezésre állású fürt.

Az előfizetés konfigurálása után hajtsa végre az alábbi lépéseket a Pacemaker konfigurálásához:

Pacemaker konfigurálása

Az előfizetés regisztrálása után hajtsa végre az alábbi lépéseket a Pacemaker konfigurálásához:

  1. Az összes fürtcsomóponton nyissa meg a Pacemaker tűzfalportjait. A firewalldparanccsal nyissa meg ezeket a portokat, futtassa a következő parancsot:

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

    Ha a tűzfal nem rendelkezik beépített magas rendelkezésre állású konfigurációval, nyissa meg az alábbi portokat a Pacemaker számára.

    • TCP: 2224-ös, 3121-s, 21064-s portok
    • UDP: 5405-ös port
  2. Telepítse a Pacemaker-csomagokat az összes csomópontra.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  3. Adja meg a Pacemaker- és Corosync-csomagok telepítésekor létrehozott alapértelmezett felhasználó jelszavát. Használja ugyanazt a jelszót az összes csomóponton.

    sudo passwd hacluster
    
  4. Ha azt szeretné, hogy a csomópontok az újraindítás után újra csatlakozhatnak a fürthöz, engedélyezze és indítsa el a pcsd szolgáltatást és a Pacemakert. Futtassa az alábbi parancsot az összes csomóponton.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  5. Hozza létre a fürtöt. A fürt létrehozásához futtassa a következő parancsot egyetlen csomóponton:

    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 és újabb verziók

    Az RHEL 8- és újabb verzióihoz külön kell hitelesítenie a csomópontokat. Amikor a rendszer kéri, adja meg manuálisan a hacluster felhasználónevét és jelszavát.

    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
    

    Jegyzet

    Ha korábban ugyanazon csomópontokon konfigurált egy fürtöt, a --force opciót kell használnia pcs cluster setupfuttatásakor. Ez a beállítás egyenértékű a pcs cluster destroyfuttatásával. A Pacemaker újbóli engedélyezéséhez futtassa a következő parancsot: sudo systemctl enable pacemaker.

  6. Telepítse az SQL Server-erőforrásügynököt az SQL Serverhez. Futtassa az alábbi parancsokat az összes csomóponton.

    sudo yum install mssql-server-ha
    

A Pacemaker konfigurálása után használja a(z) pcs-t a fürttel történő interakcióhoz. Hajtsa végre az összes parancsot egy csomóponton a fürtből.

Több hálózati adapter (NIC) megfontolandó szempontjai

A több hálózati adapterrel rendelkező kiszolgálók magas rendelkezésre állásának beállításakor kövesse az alábbi javaslatokat:

  • Győződjön meg arról, hogy a hosts fájl be van állítva, hogy a több hálózati adapter kiszolgálói IP-címe az egyes csomópontokon lévő Linux-kiszolgáló állomásneve legyen.

  • Amikor a fürtöt Pacemakerrel állítja be, a kiszolgálók gazdagépneveinek használata esetén a Corosyncnak konfigurálnia kellene az összes hálózati interfész beállításait. Csak egyetlen hálózati adapteren keresztül szeretnénk a Pacemaker/Corosync kommunikációt. A Pacemaker-fürt konfigurálása után módosítsa a konfigurációt a corosync.conf fájlban, és frissítse a Pacemaker/Corosync kommunikációhoz használni kívánt dedikált hálózati adapter IP-címét.

  • A <hostname> fájlban megadott corosync.conf-nak meg kell egyeznie a fordított keresés (ping -a <ip_address>) során kapott kimenettel, és a gazdagépen konfigurált rövid névnek kell lennie. Győződjön meg arról, hogy a hosts fájl a névfeloldáshoz megfelelő IP-címet is jelöli.

A corosync.conf fájl példájának módosításait az alábbiakban emeljük ki:

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

Kerítéseszköz konfigurálása

A Pacemaker-fürt szállítóknak kerítési eszközzel kell elkülöníteniük a meghiúsult csomópontokat, a támogatott fürtbeállításhoz konfigurálva. Ha a fürterőforrás-kezelő nem tudja meghatározni egy csomópont vagy erőforrás állapotát, a lekerítés újra ismert állapotba hozza a fürtöt.

A kerítéseszköz egy kerítésügynököt biztosít. A Pacemaker beállítása a Red Hat Enterprise Linuxon, az Azure környezetében bemutatja, hogyan hozhat létre egy fencing eszközt ehhez a fürthöz az Azure-ban. Módosítsa a környezet utasításait.

Az erőforrásszintű védelmi mechanizmussal biztosítható, hogy egy erőforrás konfigurálásával ne merüljön fel adatsérülés kimaradás esetén. Például erőforrásszintű kerítéssel elavultként jelölheti meg a lemezt egy csomóponton, ha a kommunikációs kapcsolat megszakad.

A csomópontszintű kerítés biztosítja, hogy a csomópontok ne futtassanak erőforrásokat. Ez a csomópont alaphelyzetbe állításával történik. A Pacemaker számos különféle kerítéseszközt támogat. Ilyenek például a szünetmentes tápegységek vagy a kiszolgálók felügyeleti adapterei.

A sikertelen csomópontok kerítésével kapcsolatos információkért tekintse meg a következő cikkeket:

Jegyzet

Mivel a csomópontszintű kerítés konfigurációja nagymértékben függ a környezetétől, tiltsa le ebben az oktatóanyagban (később is konfigurálható). A következő szkript letiltja a csomópontszintű kerítést:

sudo pcs property set stonith-enabled=false

A kerítés letiltása csak tesztelési célokra szolgál. Ha éles környezetben szeretné használni a Pacemakert, a környezetétől függően tervezze meg a fencing megvalósítását, és tartsa azt engedélyezve.

A fürt tulajdonságának újraellenőrzési időköze beállítása

cluster-recheck-interval azt a lekérdezési időközt jelzi, amelyen a fürt ellenőrzi az erőforrásparaméterek, a korlátozások vagy más fürtbeállítások változásait. Ha egy replika leáll, a fürt megpróbálja újraindítani a replikát egy időközönként, amelyet a failure-timeout érték és a cluster-recheck-interval érték határol. Ha például failure-timeout 60 másodpercre van állítva, és cluster-recheck-interval 120 másodpercre van állítva, az újraindítást 60 másodpercnél hosszabb, de 120 másodpercnél rövidebb időközzel próbálja meg. Javasoljuk, hogy állítsa a hibaidőkorlátot 60 másodpercre, és cluster-recheck-interval 60 másodpercnél nagyobb értékre. Nem ajánlott cluster-recheck-interval kis értékre állítani.

Az 2 minutes érték beállításához futtasson egy parancsot:

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

Ha már rendelkezik egy Pacemaker-fürt által felügyelt rendelkezésre állási csoport erőforrásával, a Pacemaker 1.1.18-11.el7 csomagja viselkedésbeli változást vezetett be a start-failure-is-fatal fürtbeállításhoz, amikor az értéke false. Ez a módosítás hatással van a feladatátvételi munkafolyamatra. Ha egy elsődleges replika leállás történik, a fürtnek az egyik elérhető másodlagos replikára kell átváltania. Ehelyett a felhasználók észrevehetik, hogy a fürt továbbra is megpróbálja elindítani a sikertelen elsődleges replikát. Ha az elsődleges nem jön online állapotba (állandó leállás miatt), akkor a fürt sosem vált át egy másik elérhető másodlagos replikára. A módosítás miatt a start-failure-is-fatal beállításához korábban javasolt konfiguráció már nem érvényes, és a beállítást vissza kell állítani a truealapértelmezett értékére.

Emellett az AG erőforrást frissíteni kell, hogy a failure-timeout tulajdonságot is tartalmazza.

Az true érték beállításához futtasson egy parancsot:

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

A ag_cluster erőforrástulajdonság failure-timeout60sfrissítéséhez futtassa a következőt:

pcs resource update ag_cluster meta failure-timeout=60s

A Pacemaker-fürtök tulajdonságairól lásd: Pacemaker-fürtök tulajdonságai.

SQL Server-bejelentkezés létrehozása a Pacemakerhez

Figyelem

A jelszónak az SQL Server alapértelmezett jelszóházirendetkell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.

  1. Minden SQL Server-példányon hozzon létre egy kiszolgálói bejelentkezést a Pacemakerszámára.

    Az alábbi Transact-SQL létrehoz egy bejelentkezést. Cserélje le <password> saját összetett jelszavára.

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

    A rendelkezésre állási csoport létrehozásakor a Pacemaker-felhasználónak ALTER, CONTROLés VIEW DEFINITION engedélyre van szüksége a rendelkezésre állási csoporthoz a létrehozás után, de a csomópontok hozzáadása előtt.

  2. Minden SQL Server-példányon mentse az SQL Server bejelentkezésihitelesítő adatait.

    Cserélje le <password> saját összetett jelszavára.

    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
    

Rendelkezésre állási csoport erőforrásának létrehozása

A rendelkezésre állási csoport erőforrásának létrehozásához használja pcs resource create parancsot, és állítsa be az erőforrás tulajdonságait. A következő parancs létrehoz egy ocf:mssql:ag fő/alárendelt típusú erőforrást a rendelkezésre állási csoporthoz ag1névvel. Futtassa a következő parancsot egy csomóponton.

RHEL 7

Használja a következő create parancsot:

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

RHEL 8 és újabb verziók

Használja a következő create parancsot:

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

Jegyzet

Amikor létrehozza az erőforrást, és ezt követően rendszeres időközönként a Pacemaker erőforrás-ügynök automatikusan beállítja a rendelkezésre állási csoport REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT értékét a rendelkezésre állási csoport konfigurációja alapján. Ha például a rendelkezésre állási csoport három szinkron replikával rendelkezik, az ügynök REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT1értékre állítja. További részletekért és további konfigurációs lehetőségekért tekintse meg rendelkezésre állási csoport konfigurációinak magas rendelkezésre állását és adatvédelmet.

Virtuális IP-erőforrás létrehozása

A virtuális IP-cím erőforrásának létrehozásához futtassa a következő parancsot egy csomóponton. Használjon egy elérhető statikus IP-címet a hálózatról. Cserélje le az IP-címet a <10.128.16.240> között érvényes IP-címre.

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

A Pacemakerben nincs egyenértékű virtuális kiszolgálónév. Ha ip-cím helyett karakterlánc-kiszolgálónévre mutató kapcsolati sztringet szeretne használni, regisztrálja a virtuális IP-erőforrás címét és a kívánt virtuális kiszolgálónevet a DNS-ben. Dr-konfigurációk esetén regisztrálja a kívánt virtuális kiszolgálónevet és IP-címet az elsődleges és a DR-hely DNS-kiszolgálóival.

Áthelyezési kényszer hozzáadása

A Pacemaker-fürt minden olyan döntése, mint például hogy hol fusson egy erőforrás, pontszámok összehasonlításával történik. A pontszámok kiszámítása erőforrásonként történik. A fürterőforrás-kezelő az adott erőforrás legmagasabb pontszámával rendelkező csomópontot választja ki. Ha egy csomópont negatív pontszámmal rendelkezik egy erőforráshoz, az erőforrás nem futtatható ezen a csomóponton.

Egy pacemaker-fürtön korlátozásokkal módosíthatja a fürt döntéseit. A korlátozások pontszámmal rendelkeznek. Ha egy korlátozás pontszáma alacsonyabb, mint INFINITY, a Pacemaker javaslatnak tekinti. A INFINITY pontszáma kötelező.

Annak biztosítása érdekében, hogy az elsődleges replika és a virtuális IP-erőforrások ugyanazon a gazdagépen fussanak, definiáljunk egy olyan elhelyezési kényszert, amelynek pontszáma INFINITY. A helymegkötés hozzáadásához futtassa a következő parancsot egy csomóponton.

RHEL 7

Amikor létrehozza a ag_cluster erőforrást az RHEL 7-ben, az ag_cluster-masterként hozza létre az erőforrást. Használja a következő parancsot az RHEL 7-hez:

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

RHEL 8

Amikor létrehozza a ag_cluster erőforrást az RHEL 8-ban, az ag_cluster-cloneként hozza létre az erőforrást. Használja a következő parancsot:

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

RHEL 9 és újabb verziók

Amikor a ag_cluster erőforrást a RHEL 9 és újabb verzióiban hozza létre, az ag_cluster-clone-kén jön létre az erőforrás. Használja a következő parancsot:

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

Rendelési kényszer hozzáadása

A kolokációs kényszer implicit módon tartalmaz egy rendezési kényszert. A rendelkezésre állási csoport erőforrásának áthelyezése előtt áthelyezi a virtuális IP-erőforrást. Alapértelmezés szerint az események sorrendje a következő:

  1. Felhasználói problémák pcs resource move a rendelkezésre állási csoport elsődleges csomópont1 és csomópont2 között.

  2. A virtuális IP-erőforrás leáll az 1. csomóponton.

  3. A virtuális IP-erőforrás a 2. csomóponton kezdődik.

    Jegyzet

    Ezen a ponton az IP-cím ideiglenesen a 2. csomópontra mutat, míg a 2. csomópont továbbra is feladatátvétel előtti másodlagos.

  4. Az 1. csomópont elsődleges rendelkezésre állási csoportja másodlagosra lesz lefokozva.

  5. A 2-es csomópont rendelkezésre állási csoport másodlagosa elsődleges szerepkörbe van előléptetve.

Ha meg szeretné akadályozni, hogy az IP-cím ideiglenesen a csomópontra mutasson a feladatátvétel előtti másodlagossal, adjon hozzá egy rendezési kényszert.

Rendelési kényszer hozzáadásához futtassa a következő parancsot egy csomóponton:

RHEL 7

sudo pcs constraint order promote ag_cluster-master then start virtualip

RHEL 8 és újabb verziók

sudo pcs constraint order promote ag_cluster-clone then start virtualip

Fontos

Miután konfigurálta a fürtöt, és hozzáadta a rendelkezésre állási csoportot fürt erőforrásként, nem használhatja a Transact-SQL-t a rendelkezésre állási csoport erőforrásainak átváltására. A Linuxon futó SQL Server-fürterőforrások nincsenek olyan szorosan összekapcsolva az operációs rendszerrel, mint a Windows Server feladatátvevő fürtön (WSFC). Az SQL Server szolgáltatás nincs tisztában a fürt jelenlétével. Az összes vezénylés a klaszterkezelő eszközökkel történik. RHEL vagy Ubuntu esetén használja a pcs és az SLES-ben crm eszközöket.

Manuálisan átállítja az elérhetőségi csoportot a pcs-ra. Ne kezdeményezz feladatátvételt a Transact-SQL használatával. Útmutatásért lásd feladatátvételi.