Den här artikeln beskriver hur du skapar ett kluster med tre noder i Linux med hjälp av Pacemaker och lägger till en tidigare skapad tillgänglighetsgrupp som en resurs i klustret. För hög tillgänglighet kräver en tillgänglighetsgrupp i Linux tre noder – se Hög tillgänglighet och dataskydd för konfigurationer av tillgänglighetsgrupper.
SQL Server är inte lika nära integrerat med Pacemaker i Linux som med Windows Server-redundansklustring (WSFC). En SQL Server-instans känner inte till klustret och all orkestrering sker utifrån. Pacemaker tillhandahåller klusterresursorkestrering. Dessutom är namnet på det virtuella nätverket specifikt för Windows Server-redundansklustring. Det finns ingen motsvarighet i Pacemaker. Dynamiska hanteringsvyer för tillgänglighetsgrupp (DMV:er) som frågar efter klusterinformation returnerar tomma rader i Pacemaker-kluster. Om du vill skapa en lyssnare för transparent återanslutning efter redundansväxling registrerar du lyssnarnamnet i DNS manuellt med IP-adressen som används för att skapa den virtuella IP-resursen.
Följande avsnitt går igenom stegen för att konfigurera ett Pacemaker-kluster och lägga till en tillgänglighetsgrupp som resurs i klustret för hög tillgänglighet för varje Linux-distribution som stöds.
Klustringsskiktet baseras på Red Hat Enterprise Linux (RHEL) HA-tillägg som bygger på Pacemaker.
Anmärkning
Åtkomst till fullständig dokumentation för Red Hat kräver en giltig prenumeration.
Mer information om klusterkonfiguration, alternativ för resursagenter och hantering finns i RHEL-referensdokumentation.
Översikt
Stegen för att skapa en tillgänglighetsgrupp på Linux-servrar för hög tillgänglighet skiljer sig från stegen i ett Windows Server-redundanskluster. I följande lista beskrivs de övergripande stegen:
Konfigurera SQL Server på klusternoderna.
Skapa tillgänglighetsgruppen.
Konfigurera en klusterresurshanterare, till exempel Pacemaker. Dessa instruktioner finns i den här artikeln.
Hur du konfigurerar en klusterresurshanterare beror på den specifika Linux-distributionen.
Viktigt!
Produktionsmiljöer kräver en fäktningsagent för hög tillgänglighet. Demonstrationerna i den här dokumentationen använder inte fäktningsagenter. Demonstrationerna är endast till för testning och validering.
Ett Linux-kluster använder fäktning för att återställa klustret till ett känt tillstånd. Hur du konfigurerar staket beror på distributionen och miljön. Fäktning är för närvarande inte tillgängligt i vissa molnmiljöer. Mer information finns i supportprinciper för RHEL-kluster med hög tillgänglighet – virtualiseringsplattformar.
Lägg till tillgänglighetsgruppen som en resurs i klustret.
Om du vill konfigurera hög tillgänglighet för RHEL aktiverar du prenumerationen med hög tillgänglighet och konfigurerar sedan Pacemaker.
Aktivera en prenumeration med hög tillgänglighet för RHEL
Varje nod i klustret måste ha en lämplig prenumeration för RHEL och tillägget för hög tillgänglighet. Läs kraven i Installera klusterpaket med hög tillgänglighet i Red Hat Enterprise Linux. Följ dessa steg för att konfigurera prenumerationen och lagringsplatserna:
Registrera systemet.
sudo subscription-manager register
Ange användarnamn och lösenord.
Visa en lista över tillgängliga pooler för registrering.
sudo subscription-manager list --available
I listan över tillgängliga pooler noterar du pool-ID:t för prenumerationen med hög tillgänglighet.
Uppdatera följande skript. Ersätt <pool id> med pool-ID:t för hög tillgänglighet från föregående steg. Kör skriptet för att koppla prenumerationen.
sudo subscription-manager attach --pool=<pool id>
Aktivera lagringsplatsen.
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
Mer information finns i Pacemaker – Kluster med öppen källkod och hög tillgänglighet.
När du har konfigurerat prenumerationen utför du följande steg för att konfigurera Pacemaker:
När du har registrerat prenumerationen utför du följande steg för att konfigurera Pacemaker:
Öppna Pacemaker-brandväggsportarna på alla klusternoder. Om du vill öppna dessa portar med firewalldkör du följande kommando:
sudo firewall-cmd --permanent --add-service=high-availability
sudo firewall-cmd --reload
Om brandväggen inte har någon inbyggd konfiguration med hög tillgänglighet öppnar du följande portar för Pacemaker.
- TCP: Portar 2224, 3121, 21064
- UDP: Port 5405
Installera Pacemaker-paket på alla noder.
sudo yum install pacemaker pcs fence-agents-all resource-agents
Ange lösenordet för standardanvändaren som skapas när du installerar Pacemaker- och Corosync-paket. Använd samma lösenord på alla noder.
sudo passwd hacluster
Aktivera och starta pcsd tjänsten och Pacemaker om du vill tillåta att noder ansluter till klustret igen efter omstarten. Kör följande kommando på alla noder.
sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker
Skapa klustret. Skapa klustret genom att köra följande kommando på en enda nod:
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 och senare versioner
För RHEL 8 och senare versioner måste du autentisera noderna separat. Ange användarnamnet och lösenordet manuellt när du uppmanas till det för hacluster.
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
Anmärkning
Om du tidigare har konfigurerat ett kluster på samma noder måste du använda --force alternativet när du kör pcs cluster setup. Det här alternativet motsvarar att köra pcs cluster destroy. Om du vill återaktivera Pacemaker kör du sudo systemctl enable pacemaker.
Installera SQL Server-resursagenten för SQL Server. Kör följande kommandon på alla noder.
sudo yum install mssql-server-ha
När Pacemaker har konfigurerats använder du pcs för att interagera med klustret. Kör alla kommandon på en nod från klustret.
Överväganden för flera nätverkskort (NIC:er)
När du konfigurerar hög tillgänglighet med servrar som har flera nätverkskort följer du dessa förslag:
Kontrollera att hosts filen är konfigurerad så att serverns IP-adresser för de flera nätverkskorten matchar värdnamnet för Linux-servern på varje nod.
När du konfigurerar klustret med Pacemaker bör Corosync ställas in att använda värdnamnet för servrarna för att ange inställningar för alla nätverkskort. Vi vill bara ha Pacemaker/Corosync-kommunikationen via ett enda nätverkskort. När Pacemaker-klustret har konfigurerats ändrar du konfigurationen corosync.conf i filen och uppdaterar IP-adressen för det dedikerade nätverkskortet som du vill använda för Pacemaker/Corosync-kommunikationen.
Det som anges i <hostname>-filen bör vara samma som de som anges när du gör en omvänd sökning (corosync.conf), och bör vara det korta namn som konfigurerats på hosten. Kontrollera att hosts filen också representerar rätt IP-adress för namnmatchning.
Ändringarna i corosync.conf filexemplet är markerade nedan:
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
}
}
Pacemakerklusterleverantörer kräver att en misslyckad nod isoleras med hjälp av en isoleringsenhet som är konfigurerad för en klusterkonfiguration som stöds. När klusterresurshanteraren inte kan fastställa tillståndet för en nod eller en resurs på en nod, återställer isoleringen klustret till ett känt tillstånd igen.
En fäktningsenhet tillhandahåller en fäktningsagent.
När du konfigurerar Pacemaker i Red Hat Enterprise Linux i Azure får du ett exempel på hur du skapar en fäktningsenhet för det här klustret i Azure. Ändra instruktionerna för din miljö.
Avgränsning på resursnivå säkerställer att datakorruption undviks vid ett avbrott genom att konfigurera en resurs. Du kan till exempel använda stängsel på resursnivå för att markera disken på en nod som inaktuell när kommunikationslänken slutar fungera.
Fäktning på nodnivå säkerställer att en nod inte kör några resurser. Detta görs genom att återställa noden. Pacemaker har stöd för en mängd olika fäktningsenheter. Exempel är ett avbrottsfritt nätaggregat eller gränssnittskort för hantering för servrar.
Information om att fäkta en misslyckad nod finns i följande artiklar:
Anmärkning
Eftersom stängselkonfigurationen på nodnivå är mycket beroende av din miljö inaktiverar du den för den här självstudien (den kan konfigureras senare). Följande skript inaktiverar stängsel på nodnivå:
sudo pcs property set stonith-enabled=false
Att inaktivera isolering är bara i testsyfte. Om du planerar att använda Pacemaker i en produktionsmiljö bör du planera en fäktningsimplementering beroende på din miljö och behålla den aktiverad.
Ange klusteregenskapen cluster-recheck-interval
cluster-recheck-interval anger det avsökningsintervall med vilket klustret söker efter ändringar i resursparametrarna, begränsningarna eller andra klusteralternativ. Om en replik slutar fungera försöker klustret starta om repliken med ett intervall som är bundet failure-timeout av värdet och cluster-recheck-interval värdet. Om failure-timeout till exempel är inställt på 60 sekunder och cluster-recheck-interval är inställt på 120 sekunder, provas omstarten med ett intervall som är större än 60 sekunder men mindre än 120 sekunder. Vi rekommenderar att du anger timeout för fel till 60 sekunder och cluster-recheck-interval till ett värde som är större än 60 sekunder. Att ställa in cluster-recheck-interval till ett litet värde rekommenderas inte.
För att uppdatera egenskapsvärdet till 2 minutes kör:
sudo pcs property set cluster-recheck-interval=2min
Om du redan har en resurs för tillgänglighetsgruppen som hanteras av ett Pacemaker-kluster introducerade Pacemaker-paketet 1.1.18-11.el7 en beteendeändring för klusterinställningen start-failure-is-fatal när dess värde är false. Den här ändringen påverkar arbetsflödet för redundans. Om en primär replik upplever ett avbrott förväntas klustret redundansväxla till en av de tillgängliga sekundära replikerna. I stället märker användarna att klustret fortsätter att försöka starta den misslyckade primära repliken. Om den primära filen aldrig är online (på grund av ett permanent avbrott) redundansväxlar klustret aldrig över till en annan tillgänglig sekundär replik. På grund av den här ändringen är en tidigare rekommenderad konfiguration som ska anges start-failure-is-fatal inte längre giltig och inställningen måste återställas till standardvärdet true.
Dessutom måste ag-resursen uppdateras för att inkludera failure-timeout egenskapen.
För att uppdatera egenskapsvärdet till true kör:
sudo pcs property set start-failure-is-fatal=true
Om du vill uppdatera resursegenskapen ag_clusterfailure-timeout till 60skör du:
pcs resource update ag_cluster meta failure-timeout=60s
Information om egenskaper för Pacemaker-kluster finns i Egenskaper för pacemakerkluster.
Skapa en SQL Server-inloggning för Pacemaker
Försiktighet
Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.
På alla SQL Server-instanser skapar du en serverinloggning för Pacemaker.
Följande Transact-SQL skapar en inloggning. Ersätt <password> med ditt eget komplexa lösenord.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
När tillgänglighetsgruppen skapas kräver Pacemaker-användaren ALTER, CONTROL och VIEW DEFINITION behörigheter för tillgänglighetsgruppen efter att den har skapats men innan några noder läggs till i den.
Spara autentiseringsuppgifterna för SQL Server-inloggningen på alla SQL Server-instanser.
Ersätt <password> med ditt eget komplexa lösenord.
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
Skapa resurs för tillgänglighetsgrupp
Om du vill skapa resursen för tillgänglighetsgruppen använder du pcs resource create kommandot och anger resursegenskaperna. Följande kommando skapar en ocf:mssql:ag resurs av typen master/underordnad typ för tillgänglighetsgrupp med namnet ag1. Kör följande kommando på en nod.
RHEL 7
Använd följande create kommando:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true
RHEL 8 och senare versioner
Använd följande create kommando:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true
Anmärkning
När du skapar resursen och regelbundet efteråt anger Pacemaker-resursagenten automatiskt värdet REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT för i tillgänglighetsgruppen baserat på tillgänglighetsgruppens konfiguration. Till exempel, om tillgänglighetsgruppen har tre synkrona repliker, kommer agenten att sätta REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT till 1. Mer information och ytterligare konfigurationsalternativ finns i Hög tillgänglighet och dataskydd för konfigurationer av tillgänglighetsgrupper.
Skapa virtuell IP-resurs
Om du vill skapa den virtuella IP-adressresursen kör du följande kommando på en nod. Använd en tillgänglig statisk IP-adress från nätverket. Ersätt IP-adressen mellan <10.128.16.240> med en giltig IP-adress.
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>
Det finns inget motsvarande namn för virtuell server i Pacemaker. Om du vill använda en anslutningssträng som pekar på ett strängservernamn i stället för en IP-adress registrerar du den virtuella IP-resursadressen och önskat virtuellt servernamn i DNS. För DR-konfigurationer registrerar du önskat virtuellt servernamn och IP-adress med DNS-servrarna på både den primära platsen och DR-platsen.
Lägg till samlokaliseringsbegränsning
Nästan varje beslut i ett Pacemaker-kluster, som att välja var en resurs ska köras, görs genom att jämföra poäng. Poängen beräknas per resurs. Klusterresurshanteraren väljer den nod som har högst poäng för en viss resurs. Om en nod har en negativ poäng för en resurs kan resursen inte köras på den noden.
I ett pacemakerkluster kan du manipulera klustrets beslut med begränsningar. Begränsningar har en poäng. Om en begränsning har en poäng som är lägre än INFINITYser Pacemaker det som en rekommendation. Poängen INFINITY är obligatorisk.
För att säkerställa att den primära repliken och de virtuella IP-resurserna körs på samma värd definierar du en samlokaliseringsbegränsning med poängen INFINITY. Om du vill lägga till samlokaliseringsbegränsningen kör du följande kommando på en nod.
RHEL 7
När du skapar resursen ag_cluster i RHEL 7 skapas resursen som ag_cluster-master. Använd följande kommando för RHEL 7:
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
RHEL 8
När du skapar resursen ag_cluster i RHEL 8 skapas resursen som ag_cluster-clone. Använd följande kommando:
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
RHEL 9 och senare versioner
När du skapar resursen ag_cluster i RHEL 9 och senare versioner skapas resursen som ag_cluster-clone. Använd följande kommando:
sudo pcs constraint colocation add virtualip with promoted ag_cluster-clone INFINITY with-rsc-role=Promoted
Lägg till beställningsbegränsning
Samlokaliseringsbegränsningen har en implicit ordningsbegränsning. Den flyttar den virtuella IP-resursen innan den flyttar resursen för tillgänglighetsgruppen. Som standard är händelsesekvensen:
Användarproblem pcs resource move med tillgänglighetsgruppens primära från nod1 till nod2.
Den virtuella IP-resursen stoppas på nod 1.
Den virtuella IP-resursen startar på nod 2.
Anmärkning
I det här läget pekar IP-adressen tillfälligt på nod 2 medan nod 2 fortfarande är sekundär innan övergång.
Den primära tillgänglighetsgruppen på nod 1 har blivit degraderad till en sekundär.
Tillgänglighetsgruppen sekundär på nod 2 befordras till primär.
Om du vill förhindra att IP-adressen tillfälligt pekar på noden med den sekundära redundansväxlingen lägger du till en ordningsbegränsning.
Om du vill lägga till en ordningsbegränsning kör du följande kommando på en nod:
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8 och senare versioner
sudo pcs constraint order promote ag_cluster-clone then start virtualip
Viktigt!
När du har konfigurerat klustret och lagt till tillgänglighetsgruppen som en klusterresurs kan du inte använda Transact-SQL för att växla över resurserna i tillgänglighetsgruppen. SQL Server-klusterresurser i Linux är inte lika nära kopplade till operativsystemet som i ett Windows Server-redundanskluster (WSFC). SQL Server-tjänsten känner inte till förekomsten av klustret. All orkestrering sker via klusterhanteringsverktygen. I RHEL eller Ubuntu används verktyg pcs och i SLES används verktyg crm.
Växla över tillgänglighetsgruppen manuellt med pcs. Initiera inte redundansväxling med Transact-SQL. Anvisningar finns i Failover.
Relaterat innehåll
Klustringsskiktet baseras på SUSE Hög tillgänglighetstillägg (HAE) som bygger på Pacemaker.
Mer information om klusterkonfiguration, resursagentalternativ, hantering, metodtips och rekommendationer finns i SUSE Linux Enterprise High Availability Extension.
Översikt
Proceduren för att skapa en tillgänglighetsgrupp för hög tillgänglighet skiljer sig mellan Linux-servrar och ett Windows Server-redundanskluster. I följande lista beskrivs de övergripande stegen:
Konfigurera SQL Server på klusternoderna.
Skapa tillgänglighetsgruppen.
Konfigurera en klusterresurshanterare, till exempel Pacemaker. Dessa instruktioner finns i den här artikeln.
Hur du konfigurerar en klusterresurshanterare beror på den specifika Linux-distributionen.
Viktigt!
Produktionsmiljöer kräver en fäktningsagent för hög tillgänglighet. Exemplen i den här artikeln använder inte fäktningsagenter. De är endast till för testning och validering.
Ett Linux-kluster använder fäktning för att återställa klustret till ett känt tillstånd. Hur du konfigurerar staket beror på distributionen och miljön. Fäktning är för närvarande inte tillgängligt i vissa molnmiljöer. För mer information, se SUSE Linux Enterprise High Availability Extension.
Lägg till tillgänglighetsgruppen som en resurs i klustret
Förutsättningar
För att slutföra följande scenario från slutpunkt till slutpunkt behöver du tre datorer för att distribuera klustret med tre noder. Följande steg beskriver hur du konfigurerar dessa servrar.
Det första steget är att konfigurera operativsystemet på klusternoderna. För den här genomgången använder du SLES 12 SP3 med en giltig prenumeration för HA-tillägget.
Installera och konfigurera SQL Server-tjänsten på alla noder. Detaljerade anvisningar finns i Installationsvägledning för SQL Server på Linux.
Ange en nod som primär och andra noder som sekundärnoder. Använd dessa termer i den här guiden.
Kontrollera att noder som ska ingå i klustret kan kommunicera med varandra.
I följande exempel visas /etc/hosts med tillägg för tre noder med namnet SLES1, SLES2 och SLES3.
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
Alla klusternoder måste kunna komma åt varandra via SSH. Verktyg som hb_report eller crm_report (för felsökning) och Hawk's History Explorer kräver lösenordslös SSH-åtkomst mellan noderna, annars kan de bara samla in data från den aktuella noden. Om du använder en SSH-port som inte är standard använder du alternativet -X (se man sidan). Om SSH-porten till exempel är 3479 anropar du en crm_report med:
sudo crm_report -X "-p 3479" [...]
Mer information finns i administrationsguiden för SLES – diverse avsnitt.
Skapa en SQL Server-inloggning för Pacemaker
Försiktighet
Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.
På alla SQL Server-instanser skapar du en serverinloggning för Pacemaker.
Följande Transact-SQL skapar en inloggning. Ersätt <password> med ditt eget komplexa lösenord.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
När tillgänglighetsgruppen skapas kräver Pacemaker-användaren ALTER, CONTROL och VIEW DEFINITION behörigheter för tillgänglighetsgruppen efter att den har skapats men innan några noder läggs till i den.
Spara autentiseringsuppgifterna för SQL Server-inloggningen på alla SQL Server-instanser.
Ersätt <password> med ditt eget komplexa lösenord.
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
På Linux-servrar konfigurerar du tillgänglighetsgruppen och konfigurerar sedan klusterresurserna. Information om hur du konfigurerar tillgänglighetsgruppen finns i Konfigurera SQL Server-tillgänglighetsgrupp för hög tillgänglighet i Linux
Installera tillägget för hög tillgänglighet
För referens, se Installera SUSE Linux Enterprise Server och High Availability Extension.
Installera SQL Server-resursagentpaketet på båda noderna.
sudo zypper install mssql-server-ha
Konfigurera den första noden
Se installationsanvisningar för SLES.
Logga in som root på den fysiska eller virtuella dator du vill använda som klusternod.
Starta bootstrap-skriptet genom att köra:
sudo ha-cluster-init
Om NTP inte har konfigurerats för att starta vid start visas ett meddelande.
Om du bestämmer dig för att fortsätta ändå genererar skriptet automatiskt nycklar för SSH-åtkomst och synkroniseringsverktyget Csync2 och startar de tjänster som behövs för båda.
Så här konfigurerar du klusterkommunikationsskiktet (Corosync):
Ange en nätverksadress som ska bindas till. Som standard föreslår skriptet nätverksadressen för eth0. Alternativt kan du ange en annan nätverksadress, till exempel adressen för bond0.
Ange en multicast-adress. Skriptet föreslår en slumpmässig adress som du kan använda som standard.
Ange en multicast-port. Skriptet föreslår 5405 som standard.
Om du vill konfigurera SBD () anger du en beständig sökväg till partitionen för din block device som du vill använda för SBD. Sökvägen måste vara konsekvent över alla noder i klustret.
Slutligen startar skriptet Pacemaker-tjänsten för att aktivera klustret med en nod och aktivera webbhanteringsgränssnittet Hawk2. URL:en som ska användas för Hawk2 visas på skärmen.
För eventuella detaljer om installationsprocessen, se /var/log/sleha-bootstrap.log. Du har nu ett fungerande kluster med en nod. Kontrollera klusterstatusen med crm status.
sudo crm status
Du kan också se klusterkonfiguration med crm configure show xml eller crm configure show.
Bootstrap-proceduren skapar en Linux-användare med namnet hacluster med lösenordet linux. Ersätt standardlösenordet med ett säkert lösenord så snart som möjligt:
sudo passwd hacluster
Lägga till noder i det befintliga klustret
Om du har ett kluster som körs med en eller flera noder lägger du till fler klusternoder med bootstrap-skriptet ha-cluster-join. Skriptet behöver bara åtkomst till en befintlig klusternod och slutför den grundläggande konfigurationen på den aktuella datorn automatiskt. Följ stegen nedan:
Om du har konfigurerat de befintliga klusternoderna med YaST klustermodulen kontrollerar du att följande krav uppfylls innan du kör ha-cluster-join:
Logga in som root på den fysiska eller virtuella maskin som ska ansluta till klustret.
Starta bootstrap-skriptet genom att köra:
sudo ha-cluster-join
Om NTP inte har konfigurerats för att starta vid start visas ett meddelande.
Om du bestämmer dig för att fortsätta ändå uppmanas du att ange IP-adressen för en befintlig nod. Ange IP-adressen.
Om du inte redan har konfigurerat en lösenordslös SSH-åtkomst mellan båda datorerna uppmanas du också att ange rotlösenordet för den befintliga noden.
När du har loggat in på den angivna noden kopierar skriptet Corosync-konfigurationen, konfigurerar SSH och Csync2, och gör den aktuella datorn online som ny klusternod. Bortsett från det startar den tjänst som behövs för Hawk. Om du har konfigurerat delad lagring med OCFS2skapar den också automatiskt monteringspunktskatalogen OCFS2 för filsystemet.
Upprepa föregående steg för alla datorer som du vill lägga till i klustret.
För att få mer information om processen kan du kolla /var/log/ha-cluster-bootstrap.log.
Kontrollera klusterstatusen med sudo crm status. Om du har lagt till en andra nod kommer utdata att likna följande:
sudo crm status
Du ser utdata som liknar följande exempel.
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
Anmärkning
admin_addr är den virtuella IP-klusterresursen som konfigureras under den första klusterkonfigurationen med en nod.
När du har lagt till alla noder kontrollerar du om du behöver justera no-quorum-policyn i de globala klusteralternativen. Detta är särskilt viktigt för kluster med två noder.
Ange klusteregenskapen cluster-recheck-interval
cluster-recheck-interval anger det avsökningsintervall med vilket klustret söker efter ändringar i resursparametrarna, begränsningarna eller andra klusteralternativ. Om en replik slutar fungera försöker klustret starta om repliken med ett intervall som är bundet failure-timeout av värdet och cluster-recheck-interval värdet. Om failure-timeout till exempel är inställt på 60 sekunder och cluster-recheck-interval är inställt på 120 sekunder, provas omstarten med ett intervall som är större än 60 sekunder men mindre än 120 sekunder. Vi rekommenderar att du anger timeout för fel till 60 sekunder och cluster-recheck-interval till ett värde som är större än 60 sekunder. Att ställa in cluster-recheck-interval till ett litet värde rekommenderas inte.
För att uppdatera egenskapsvärdet till 2 minutes kör:
crm configure property cluster-recheck-interval=2min
Om du redan har en resurs för tillgänglighetsgruppen som hanteras av ett Pacemaker-kluster introducerade Pacemaker-paketet 1.1.18-11.el7 en beteendeändring för klusterinställningen start-failure-is-fatal när dess värde är false. Den här ändringen påverkar arbetsflödet för redundans. Om en primär replik upplever ett avbrott förväntas klustret redundansväxla till en av de tillgängliga sekundära replikerna. I stället märker användarna att klustret fortsätter att försöka starta den misslyckade primära repliken. Om den primära filen aldrig är online (på grund av ett permanent avbrott) redundansväxlar klustret aldrig över till en annan tillgänglig sekundär replik. På grund av den här ändringen är en tidigare rekommenderad konfiguration som ska anges start-failure-is-fatal inte längre giltig och inställningen måste återställas till standardvärdet true.
Dessutom måste ag-resursen uppdateras för att inkludera failure-timeout egenskapen.
För att uppdatera egenskapsvärdet till true kör:
crm configure property start-failure-is-fatal=true
Uppdatera den befintliga resursegenskapen failure-timeout för tillgänglighetsgruppen så att 60s den körs (ersätt ag1 med namnet på resursen för tillgänglighetsgruppen):
crm configure edit ag1
I textredigeraren lägger du till meta failure-timeout=60s efter alla params och före några ops.
Mer information om egenskaper för Pacemaker-kluster finns i Konfigurera klusterresurser.
Överväganden för flera nätverkskort (NIC:er)
När du konfigurerar hög tillgänglighet med servrar som har flera nätverkskort följer du dessa förslag:
Kontrollera att hosts filen är konfigurerad så att serverns IP-adresser för de flera nätverkskorten matchar värdnamnet för Linux-servern på varje nod.
När du konfigurerar klustret med Pacemaker bör Corosync ställas in att använda värdnamnet för servrarna för att ange inställningar för alla nätverkskort. Vi vill bara ha Pacemaker/Corosync-kommunikationen via ett enda nätverkskort. När Pacemaker-klustret har konfigurerats ändrar du konfigurationen corosync.conf i filen och uppdaterar IP-adressen för det dedikerade nätverkskortet som du vill använda för Pacemaker/Corosync-kommunikationen.
Det som anges i <hostname>-filen bör vara samma som de som anges när du gör en omvänd sökning (corosync.conf), och bör vara det korta namn som konfigurerats på hosten. Kontrollera att hosts filen också representerar rätt IP-adress för namnmatchning.
Ändringarna i corosync.conf filexemplet är markerade nedan:
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
}
}
Pacemakerklusterleverantörer kräver att en misslyckad nod isoleras med hjälp av en isoleringsenhet som är konfigurerad för en klusterkonfiguration som stöds. När klusterresurshanteraren inte kan fastställa tillståndet för en nod eller en resurs på en nod, återställer isoleringen klustret till ett känt tillstånd igen.
Säkring på resursnivå säkerställer främst att datakorruption inte sker vid ett avbrott genom att konfigurera en resurs. Du kan till exempel använda stängsel på resursnivå med DRBD (distribuerad replikerad blockenhet) för att markera disken på en nod som inaktuell när kommunikationslänken slutar fungera.
Fäktning på nodnivå säkerställer att en nod inte kör några resurser. Detta görs genom att återställa noden och Pacemaker-implementeringen kallas STONITH. Pacemaker har stöd för en mängd olika fäktningsenheter, till exempel en avbrottsfri strömförsörjning eller hanteringsgränssnittskort för servrar.
Mer information finns i:
Vid klusterets initialisering är fencing inaktiverad om ingen konfiguration identifieras. Det kan aktiveras senare genom att köra följande kommando:
sudo crm configure property stonith-enabled=true
Viktigt!
Att inaktivera isolering är bara i testsyfte. Om du planerar att använda Pacemaker i en produktionsmiljö bör du planera en fäktningsimplementering beroende på din miljö och behålla den aktiverad. SUSE tillhandahåller inte fäktningsagenter för några molnmiljöer (inklusive Azure) eller Hyper-V. Följdriktigt erbjuder klusterleverantören inte stöd för att köra produktionskluster i dessa miljöer. Vi arbetar på en lösning för denna lucka som kommer att vara tillgänglig i framtida versioner.
Se administrationsguiden för SLES.
Aktivera Pacemaker
Aktivera Pacemaker så att den startas automatiskt.
Kör följande kommando på varje nod i klustret.
systemctl enable pacemaker
Skapa resurs för tillgänglighetsgrupp
Följande kommando skapar och konfigurerar resursen för tillgänglighetsgruppen för tre repliker av tillgänglighetsgruppen [ag1]. Övervakningsåtgärder och tidsgränser måste anges uttryckligen i SLES baserat på det faktum att tidsgränser är mycket arbetsbelastningsberoende och måste justeras noggrant för varje distribution.
Kör kommandot på en av noderna i klustret:
Kör crm configure för att öppna crm-prompten:
sudo crm configure
I crm-prompten kör du följande kommando för att konfigurera resursegenskaperna.
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
Anmärkning
När du skapar resursen och regelbundet efteråt anger Pacemaker-resursagenten automatiskt värdet REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT för i tillgänglighetsgruppen baserat på tillgänglighetsgruppens konfiguration. Till exempel, om tillgänglighetsgruppen har tre synkrona repliker, kommer agenten att sätta REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT till 1. Mer information och ytterligare konfigurationsalternativ finns i Hög tillgänglighet och dataskydd för konfigurationer av tillgänglighetsgrupper.
Skapa virtuell IP-resurs
Om du inte skapade den virtuella IP-resursen när du körde ha-cluster-initkan du skapa den här resursen nu. Följande kommando skapar en virtuell IP-resurs. Ersätt <0.0.0.0> med en tillgänglig adress från nätverket och <24> med antalet bitar i CIDR-nätmasken. Kör på en nod.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<0.0.0.0> \
cidr_netmask=<24>
Lägg till samlokaliseringsbegränsning
Nästan varje beslut i ett Pacemaker-kluster, som att välja var en resurs ska köras, görs genom att jämföra poäng. Poängen beräknas per resurs och klusterresurshanteraren väljer noden med den högsta poängen för en viss resurs. (Om en nod har en negativ poäng för en resurs kan resursen inte köras på den noden.) Vi kan ändra klustrets beslut med begränsningar. Begränsningar har en poäng. Om en begränsning har en poäng som är lägre än INFINITY är det bara en rekommendation. En poäng av INFINITY betyder att det är ett måste. Vi vill se till att primärnoden i tillgänglighetsgruppen och den virtuella IP-resursen körs på samma värd, så vi definierar en samlokaliseringsbegränsning med oändlighet som poäng.
Om du vill ange samlokaliseringsvillkor för den virtuella IP-adressen som ska köras på samma nod som den primära noden kör du följande kommando på en nod:
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
Lägg till beställningsbegränsning
Samlokaliseringsbegränsningen har en implicit ordningsbegränsning. Den flyttar den virtuella IP-resursen innan den flyttar resursen för tillgänglighetsgruppen. Som standard är händelsesekvensen:
- Användarproblem
resource migrate med tillgänglighetsgruppens primära från nod1 till nod2.
- Den virtuella IP-resursen stoppas på nod 1.
- Den virtuella IP-resursen startar på nod 2. I det här läget pekar IP-adressen tillfälligt på nod 2 medan nod 2 fortfarande är sekundär innan övergång.
- Tillgänglighetsgruppens huvudnod på nod 1 degraderas.
- Tillgänglighetsgruppen på nod 2 framhöjs till master.
För att förhindra att IP-adressen tillfälligt pekar på noden med den sekundära före felövergång, lägg till en ordningsbegränsning med följande kommando på en av noderna:
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
Viktigt!
När du har konfigurerat klustret och lagt till tillgänglighetsgruppen som en klusterresurs kan du inte använda Transact-SQL för att växla över resurserna i tillgänglighetsgruppen. SQL Server-klusterresurser i Linux är inte lika nära kopplade till operativsystemet som i ett Windows Server-redundanskluster (WSFC). SQL Server-tjänsten känner inte till förekomsten av klustret. All orkestrering sker via klusterhanteringsverktygen. I SLES använder du crm.
Växla över tillgänglighetsgruppen manuellt med crm. Initiera inte redundansväxling med Transact-SQL. Mer information finns i Failover.
Mer information finns i:
Relaterat innehåll
Översikt
Stegen för att skapa en tillgänglighetsgrupp på Linux-servrar för hög tillgänglighet skiljer sig från stegen i ett Windows Server-redundanskluster. I följande lista beskrivs de övergripande stegen:
Installationsvägledning för SQL Server på Linux.
Konfigurera SQL Server-tillgänglighetsgruppen för hög tillgänglighet i Linux.
Konfigurera en klusterresurshanterare, till exempel Pacemaker. Dessa instruktioner finns i den här artikeln.
Hur du konfigurerar en klusterresurshanterare beror på den specifika Linux-distributionen.
Viktigt!
Produktionsmiljöer kräver en fäktningsagent för hög tillgänglighet. Exemplen i den här artikeln använder inte fäktningsagenter. De är endast till för testning och validering.
Ett Linux-kluster använder fäktning för att återställa klustret till ett känt tillstånd. Hur du konfigurerar staket beror på distributionen och miljön. Fäktning är för närvarande inte tillgängligt i vissa molnmiljöer.
Isolering implementeras normalt i operativsystemet och är beroende av systemmiljön. Hitta instruktioner för brandväggar i operativsystemdistributörens dokumentation.
Lägg till tillgänglighetsgruppen som en resurs i klustret.
Öppna brandväggsportarna på alla noder. Öppna porten för Pacemaker-tjänsten med hög tillgänglighet, SQL Server-instansen och slutpunkten för tillgänglighetsgruppen. Standard-TCP-porten för servern som kör SQL Server är 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
Du kan också inaktivera brandväggen, men detta rekommenderas inte i en produktionsmiljö:
sudo ufw disable
Installera Pacemaker-paket. Kör följande kommandon för Ubuntu 20.04 på alla noder. Mer information om hur du installerar på tidigare versioner finns i Ubuntu HA – MS SQL Server på Azure.
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
Ange lösenordet för standardanvändaren som skapas när du installerar Pacemaker- och Corosync-paket. Använd samma lösenord på alla noder.
sudo passwd hacluster
Skapa klustret
Innan du skapar ett kluster måste du skapa en autentiseringsnyckel på den primära servern och kopiera den till de andra servrarna som deltar i tillgänglighetsgruppen.
Använd följande skript för att skapa en autentiseringsnyckel på den primära servern:
sudo corosync-keygen
Du kan använda scp för att kopiera den genererade nyckeln till andra servrar:
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
Skapa klustret genom att /etc/corosync/corosync.conf redigera filen på den primära servern:
sudo vim /etc/corosync/corosync.conf
Filen corosync.conf bör se ut ungefär som i följande exempel:
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
}
}
Ersätt corosync.conf-filen på andra noder.
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
Starta om pacemaker och corosync tjänsterna:
sudo systemctl restart pacemaker corosync
Bekräfta statusen för klustret och verifiera konfigurationen:
sudo crm status
Överväganden för flera nätverkskort (NIC:er)
När du konfigurerar hög tillgänglighet med servrar som har flera nätverkskort följer du dessa förslag:
Kontrollera att hosts filen är konfigurerad så att serverns IP-adresser för de flera nätverkskorten matchar värdnamnet för Linux-servern på varje nod.
När du konfigurerar klustret med Pacemaker bör Corosync ställas in att använda värdnamnet för servrarna för att ange inställningar för alla nätverkskort. Vi vill bara ha Pacemaker/Corosync-kommunikationen via ett enda nätverkskort. När Pacemaker-klustret har konfigurerats ändrar du konfigurationen corosync.conf i filen och uppdaterar IP-adressen för det dedikerade nätverkskortet som du vill använda för Pacemaker/Corosync-kommunikationen.
Det som anges i <hostname>-filen bör vara samma som de som anges när du gör en omvänd sökning (corosync.conf), och bör vara det korta namn som konfigurerats på hosten. Kontrollera att hosts filen också representerar rätt IP-adress för namnmatchning.
Ändringarna i corosync.conf filexemplet är markerade nedan:
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
}
}
Pacemakerklusterleverantörer kräver att en misslyckad nod isoleras med hjälp av en isoleringsenhet som är konfigurerad för en klusterkonfiguration som stöds. När klusterresurshanteraren inte kan fastställa tillståndet för en nod eller en resurs på en nod, återställer isoleringen klustret till ett känt tillstånd igen.
Stängsel på resursnivå säkerställer att inga data skadas om det uppstår ett avbrott. Du kan till exempel använda stängsel på resursnivå med DRBD (distribuerad replikerad blockenhet) för att markera disken på en nod som inaktuell när kommunikationslänken slutar fungera.
Fäktning på nodnivå säkerställer att en nod inte kör några resurser. Detta görs genom att återställa noden och Pacemaker-implementeringen kallas STONITH. Pacemaker stöder en stor mängd olika fäktningsenheter, till exempel en avbrottsfri strömförsörjning eller gränssnittskort för hantering för servrar.
Mer information finns i Pacemakerkluster från grunden och Avgränsning och Stonith.
Eftersom stängselkonfigurationen på nodnivå är mycket beroende av din miljö inaktiverar vi den för den här självstudien (den kan konfigureras vid ett senare tillfälle). Kör följande skript på den primära noden:
sudo crm configure property stonith-enabled=false
I det här exemplet är det bara för testningsändamål att inaktivera fäktning. Om du planerar att använda Pacemaker i en produktionsmiljö bör du planera en fäktningsimplementering beroende på din miljö och behålla den aktiverad. Kontakta operativsystemets leverantör för information om fäktningsagenter för en specifik distribution.
Ange klusteregenskapen cluster-recheck-interval
Egenskapen cluster-recheck-interval anger det avsökningsintervall med vilket klustret söker efter ändringar i resursparametrarna, begränsningarna eller andra klusteralternativ. Om en replik slutar fungera försöker klustret starta om repliken med ett intervall som är bundet failure-timeout av värdet och cluster-recheck-interval värdet. Om failure-timeout till exempel är inställt på 60 sekunder och cluster-recheck-interval är inställt på 120 sekunder, provas omstarten med ett intervall som är större än 60 sekunder men mindre än 120 sekunder. Du bör ange failure-timeout till 60 sekunder och cluster-recheck-interval till ett värde som är större än 60 sekunder. Det rekommenderas inte att ange cluster-recheck-interval till ett mindre värde.
För att uppdatera egenskapsvärdet till 2 minutes kör:
sudo crm configure property cluster-recheck-interval=2min
Om du redan har en resurs för tillgänglighetsgruppen som hanteras av ett Pacemaker-kluster introducerade Pacemaker-paketet 1.1.18-11.el7 en beteendeändring för klusterinställningen start-failure-is-fatal när dess värde är false. Den här ändringen påverkar arbetsflödet för redundans. Om en primär replik upplever ett avbrott förväntas klustret redundansväxla till en av de tillgängliga sekundära replikerna. I stället märker användarna att klustret fortsätter att försöka starta den misslyckade primära repliken. Om den primära filen aldrig är online (på grund av ett permanent avbrott) redundansväxlar klustret aldrig över till en annan tillgänglig sekundär replik. På grund av den här ändringen är en tidigare rekommenderad konfiguration som ska anges start-failure-is-fatal inte längre giltig och inställningen måste återställas till standardvärdet true.
Dessutom måste ag-resursen uppdateras för att inkludera failure-timeout egenskapen.
För att uppdatera egenskapsvärdet till true kör:
sudo crm configure property start-failure-is-fatal=true
Uppdatera den befintliga resursegenskapen failure-timeout för tillgänglighetsgruppen så att 60s den körs (ersätt ag1 med namnet på resursen för tillgänglighetsgruppen):
sudo crm configure meta failure-timeout=60s
Installera SQL Server-resursagenten för integrering med Pacemaker
Kör följande kommandon på alla noder.
sudo apt-get install mssql-server-ha
Skapa en SQL Server-inloggning för Pacemaker
Försiktighet
Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.
På alla SQL Server-instanser skapar du en serverinloggning för Pacemaker.
Följande Transact-SQL skapar en inloggning. Ersätt <password> med ditt eget komplexa lösenord.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
När tillgänglighetsgruppen skapas kräver Pacemaker-användaren ALTER, CONTROL och VIEW DEFINITION behörigheter för tillgänglighetsgruppen efter att den har skapats men innan några noder läggs till i den.
Spara autentiseringsuppgifterna för SQL Server-inloggningen på alla SQL Server-instanser.
Ersätt <password> med ditt eget komplexa lösenord.
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
Skapa resurs för tillgänglighetsgrupp
Om du vill skapa resursen sudo crm configure för tillgänglighetsgruppen använder du kommandot för att ange resursegenskaperna. I följande exempel skapas en resurs av primär/repliktyp ocf:mssql:ag för en tillgänglighetsgrupp med namnet ag1.
~$ 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
Anmärkning
När du skapar resursen och regelbundet efteråt anger Pacemaker-resursagenten automatiskt värdet REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT för i tillgänglighetsgruppen baserat på tillgänglighetsgruppens konfiguration. Till exempel, om tillgänglighetsgruppen har tre synkrona repliker, kommer agenten att sätta REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT till 1. Mer information och ytterligare konfigurationsalternativ finns i Hög tillgänglighet och dataskydd för konfigurationer av tillgänglighetsgrupper.
Skapa virtuell IP-resurs
Om du vill skapa den virtuella IP-adressresursen kör du följande kommando på en nod. Använd en tillgänglig statisk IP-adress från nätverket. Innan du kör skriptet ersätter du värdena mellan < ... > med en giltig IP-adress.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
Det finns inget motsvarande namn för virtuell server i Pacemaker. Om du vill använda en anslutningssträng som pekar på ett strängservernamn och inte använder IP-adressen registrerar du IP-resursadressen och önskat virtuellt servernamn i DNS. För DR-konfigurationer registrerar du önskat virtuellt servernamn och IP-adress med DNS-servrarna på både den primära platsen och DR-platsen.
Lägg till samlokaliseringsbegränsning
Nästan varje beslut i ett Pacemaker-kluster, som att välja var en resurs ska köras, görs genom att jämföra poäng. Poängen beräknas per resurs och klusterresurshanteraren väljer noden med den högsta poängen för en viss resurs. (Om en nod har en negativ poäng för en resurs kan resursen inte köras på den noden.)
Använd begränsningar för att konfigurera klustrets beslut. Begränsningar har en poäng. Om en begränsning har en poäng som är lägre än INFINITY är det bara en rekommendation. En poäng av INFINITY innebär att det är obligatoriskt.
För att säkerställa att den primära repliken och den virtuella IP-resursen finns på samma värd definierar du en samlokaliseringsbegränsning med poängen INFINITY. Om du vill lägga till samlokaliseringsbegränsningen kör du följande kommando på en nod.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
Lägg till beställningsbegränsning
Samlokaliseringsbegränsningen har en implicit ordningsbegränsning. Den flyttar den virtuella IP-resursen innan den flyttar resursen för tillgänglighetsgruppen. Som standard är händelsesekvensen:
Användaren utfärdar pcs resource move till det primära tillgänglighetsgruppen från node1 till node2.
Den virtuella IP-resursen stoppas på node1.
Den virtuella IP-resursen startar på node2.
I det här läget pekar IP-adressen tillfälligt på node2 medan node2 fortfarande är en sekundär innan redundansväxlingen.
Den primära tillgänglighetsgruppen på node1 degraderad till sekundär.
Tillgänglighetsgruppen sekundär på node2 uppgraderas till primär.
Om du vill förhindra att IP-adressen tillfälligt pekar på noden med den sekundära redundansväxlingen lägger du till en ordningsbegränsning.
Om du vill lägga till en ordningsbegränsning kör du följande kommando på en nod:
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
När du har konfigurerat klustret och lagt till tillgänglighetsgruppen som en klusterresurs kan du inte använda Transact-SQL för att växla över resurserna i tillgänglighetsgruppen. SQL Server-klusterresurser i Linux är inte lika nära kopplade till operativsystemet som i ett Windows Server-redundanskluster (WSFC). SQL Server-tjänsten känner inte till förekomsten av klustret. All orkestrering sker via klusterhanteringsverktygen.
Relaterat innehåll