Dela via


Självstudie: Konfigurera en alwayson-tillgänglighetsgrupp med tre noder med HPE Serviceguard för Linux

gäller för:SQL Server – Linux

I den här självstudien beskrivs hur du konfigurerar SQL Server-tillgänglighetsgrupper med HPE Serviceguard för Linux, som körs på lokala virtuella maskiner (VM) eller i Azure-baserade virtuella maskiner.

Se HPE Serviceguard-kluster för en översikt över HPE Serviceguard-kluster.

Anmärkning

Microsoft har stöd för dataflytt, tillgänglighetsgruppen och SQL Server-komponenterna. Kontakta HPE för support som rör dokumentationen för HPE Serviceguard-kluster och kvorumhantering.

Den här självstudien består av följande uppgifter:

  • Installera SQL Server på alla tre virtuella datorer som ska ingå i tillgänglighetsgruppen
  • Installera HPE Serviceguard på de virtuella datorerna
  • Skapa HPE Serviceguard-klustret
  • Skapa lastbalanseraren i Azure-portalen
  • Skapa tillgänglighetsgruppen och lägg till en exempeldatabas i tillgänglighetsgruppen
  • Distribuera SQL Server-arbetsbelastningen i tillgänglighetsgruppen via Serviceguard-klusterhanteraren
  • Utför en automatisk redundansväxling och anslut noden tillbaka till klustret

Förutsättningar

  • I Azure skapar du tre Linux-baserade virtuella datorer (virtuella datorer). Information om hur du skapar Linux-baserade virtuella datorer i Azure finns i Snabbstart: Skapa en virtuell Linux-dator i Azure-portalen. När du distribuerar de virtuella datorerna bör du använda LINUX-distributioner som stöds av HPE Serviceguard. Du kan också distribuera de virtuella datorerna lokalt i en lokal miljö om du vill.

    Ett exempel på en distribution som stöds finns i HPE Serviceguard för Linux. Kontakta HPE om du vill ha information om stöd för offentliga molnmiljöer.

    Anvisningarna i den här handledningen kontrolleras med HPE Serviceguard för Linux. En utvärderingsversion är tillgänglig för nedladdning från HPE.

  • SQL Server-databasfiler på logisk volymmontering (LVM) för alla tre virtuella datorer. Se Snabbstartsguide för Serviceguard Linux (HPE)

  • Kontrollera att du har en OpenJDK Java-körning installerad på de virtuella datorerna. IBM Java SDK stöds inte.

Installera SQL Server

På alla de tre virtuella datorerna följer du något av stegen nedan baserat på den Linux-distribution som du väljer för den här självstudien för att installera SQL Server och verktyg.

Red Hat Enterprise Linux (RHEL)

SUSE Linux Enterprise Server (SLES)

När du har slutfört det här steget bör du ha SQL Server-tjänsten och verktyg installerade på alla tre virtuella datorer som ska delta i tillgänglighetsgruppen.

Installera HPE Serviceguard på de virtuella datorerna

I det här steget installerar du HPE Serviceguard för Linux på alla tre virtuella datorerna. I följande tabell beskrivs vilken roll varje server spelar i klustret.

Antal virtuella datorer HPE Serviceguard-Roll Roll för tillgänglighetsgruppsreplika i Microsoft SQL Server
1 HPE Serviceguard-klusternoder Primär kopia
1 eller mer HPE Serviceguard-klusternod Sekundär replik
1 HPE Serviceguard-kvorumserver Konfigurationsendast replik

Använd cminstaller metoden för att installera Serviceguard. Specifika instruktioner finns i följande länkar:

När du har slutfört installationen av HPE Serviceguard-klustret kan du aktivera klusterhanteringsportalen på TCP-port 5522 på den primära repliknoden. Följande steg lägger till en regel i brandväggen för att tillåta 5522. Följande kommando är för en Red Hat Enterprise Linux (RHEL). Du måste köra liknande kommandon för andra distributioner:

sudo firewall-cmd --zone=public --add-port=5522/tcp --permanent
sudo firewall-cmd --reload

Skapa HPE Serviceguard-kluster

Följ de här anvisningarna för att konfigurera och skapa HPE Serviceguard-klustret. I det här steget konfigurerar du även kvorumservern.

  1. Konfigurera Serviceguard-kvorumservern på den tredje noden. Se avsnittet Configure_QS .
  2. Konfigurera och skapa Serviceguard-kluster på de andra två noderna. Se avsnittet Configure_and_create_Cluster .

Anmärkning

Du kan kringgå manuell installation av HPE Serviceguard-klustret och kvorumet genom att lägga till TILLÄGGET HPE Serviceguard för Linux (SGLX) från Azure VM Marketplace när du skapar den virtuella datorn.

Skapa tillgänglighetsgruppen och lägg till en exempeldatabas

I det här steget skapar du en tillgänglighetsgrupp med två (eller flera) synkrona repliker och en replik med endast konfiguration, vilket ger dataskydd och kan även ge hög tillgänglighet. Följande diagram representerar den här arkitekturen:

Diagram som visar primär replik som synkroniserar användardata och konfigurationsdata med sekundär replik. Endast konfigurationsreplik synkroniserar endast konfigurationsdata.

  1. Synkron replikering av användardata till den sekundära repliken. Den innehåller även konfigurationsmetadata för tillgänglighetsgrupper.

  2. Synkron replikering av konfigurationsmetadata för tillgänglighetsgrupp. Den innehåller inte användardata.

Mer information finns i Hög tillgänglighet och dataskydd för konfigurationer av tillgänglighetsgrupper.

Följ dessa steg för att skapa tillgänglighetsgruppen:

  1. Aktivera tillgänglighetsgrupper och starta om mssql-server på alla virtuella datorer, inklusive repliken Endast konfiguration.
  2. Aktivera en AlwaysOn_health händelsesession (valfritt)
  3. Skapa ett certifikat på den primära virtuella datorn
  4. Skapa certifikatet på sekundära servrar
  5. Skapa databasspeglingsslutpunkterna på replikerna
  6. Skapa tillgänglighetsgrupp
  7. Anslut de sekundära replikerna
  8. Lägga till en databas i tillgänglighetsgruppen

Aktivera tillgänglighetsgrupper och starta om mssql-server

Aktivera tillgänglighetsgrupper på alla noder som är värdar för en SQL Server-instans. Starta sedan om mssql-server. Kör följande skript på alla tre noderna:

sudo /opt/mssql/bin/mssql-conf
set hadr.hadrenabled 1 sudo systemctl restart mssql-server

Aktivera en AlwaysOn_health händelsesession (valfritt)

Du kan också aktivera Utökade händelser för AlwaysOn-tillgänglighetsgrupper för att hjälpa till med rotorsaksdiagnos när du felsöker en tillgänglighetsgrupp. Kör följande kommando på varje instans av SQL Server:

ALTER EVENT SESSION AlwaysOn_health ON SERVER
WITH
(
        STARTUP_STATE = ON
);
GO

Skapa ett certifikat på den primära virtuella datorn

Följande Transact-SQL skript skapar en huvudnyckel och ett certifikat. Sedan säkerhetskopieras certifikatet och filen skyddas med en privat nyckel. Uppdatera skriptet med starka lösenord. Anslut till den primära SQL Server-instansen och kör följande Transact-SQL skript:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';

CREATE CERTIFICATE dbm_certificate
    WITH SUBJECT = 'dbm';

BACKUP CERTIFICATE dbm_certificate TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
        ENCRYPTION BY PASSWORD = '<private-key-password>'
);

I det här läget har den primära SQL Server-repliken ett certifikat på /var/opt/mssql/data/dbm_certificate.cer och en privat nyckel på var/opt/mssql/data/dbm_certificate.pvk. Kopiera dessa två filer till samma plats på alla servrar som är värdar för tillgänglighetsrepliker. Använd användaren mssql eller ge användaren behörighet mssql att komma åt dessa filer.

På källservern kopierar till exempel följande kommando filerna till måldatorn. node2 Ersätt värdena med namnet på den värd som kör den sekundära SQL Server-instansen. Kopiera certifikatet på den enda konfigurationsrepliken och kör även kommandona nedan på den noden.

cd /var/opt/mssql/data
scp dbm_certificate.* root@<node2>:/var/opt/mssql/data/

Kör nu kommandona nedan på de sekundära virtuella datorer som kör den sekundära instansen och konfigurationsrepliken av SQL Server så att mssql användaren kan äga det kopierade certifikatet:

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

Skapa certifikatet på sekundära servrar

Följande Transact-SQL skript skapar en huvudnyckel och ett certifikat från säkerhetskopian som du skapade på den primära SQL Server-repliken. Uppdatera skriptet med starka lösenord. Dekrypteringslösenordet är samma lösenord som du använde för att skapa filen .pvk i ett tidigare steg. Om du vill skapa certifikatet kör du följande skript på alla sekundära servrar förutom repliken med endast konfiguration:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';

CREATE CERTIFICATE dbm_certificate
    FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
        DECRYPTION BY PASSWORD = '<private-key-password>'
);

I föregående exempel ersätter du <private-key-password> med samma lösenord som du använde när du skapade certifikatet på den primära repliken.

Skapa databasspeglingsslutpunkterna på replikerna

På de primära och sekundära replikerna kör du kommandona nedan för att skapa databasspeglingsslutpunkterna:

CREATE ENDPOINT [hadr_endpoint]
    AS TCP
(
            LISTENER_PORT = 5022
)
    FOR DATABASE_MIRRORING
(
            ROLE = WITNESS,
            AUTHENTICATION = CERTIFICATE dbm_certificate,
            ENCRYPTION = REQUIRED ALGORITHM AES
);

ALTER ENDPOINT [hadr_endpoint]
    STATE = STARTED;

Anmärkning

5022 är standardporten som används för databasens speglingsslutpunkt, men du kan ändra den till valfri tillgänglig port.

På konfigurationsendast-repliken skapar du databasens speglingsslutpunkt med följande kommando och notera att värdet för rollen här är inställt på WITNESS, vilket är nödvändigt för konfigurationsendast-repliken.

CREATE ENDPOINT [hadr_endpoint]
    AS TCP
(
            LISTENER_PORT = 5022
)
    FOR DATABASE_MIRRORING
(
            ROLE = WITNESS,
            AUTHENTICATION = CERTIFICATE dbm_certificate,
            ENCRYPTION = REQUIRED ALGORITHM AES
);

ALTER ENDPOINT [hadr_endpoint]
    STATE = STARTED;

Skapa tillgänglighetsgrupp

Kör följande kommandon på den primära replikinstansen. Dessa kommandon skapar en tillgänglighetsgrupp med namnet ag1, som har en EXTERN cluster_type och beviljar behörighet att skapa databas till tillgänglighetsgruppen.

Innan du kör följande skript, ersätt platshållarna <node1>, <node2> och <node3> (endast konfigurationsreplik) med namnen på de virtuella maskiner som du skapade i föregående steg.

CREATE AVAILABILITY GROUP [ag1]
    WITH (CLUSTER_TYPE = EXTERNAL)
    FOR REPLICA ON
    N'<node1>' WITH (
        ENDPOINT_URL = N'tcp://<node1>:<5022>',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),

    N'<node2>' WITH (
        ENDPOINT_URL = N'tcp://<node2>:\<5022>',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),

    N'<node3>' WITH (
        ENDPOINT_URL = N'tcp://<node3>:<5022>',
        AVAILABILITY_MODE = CONFIGURATION_ONLY
        );

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Ansluta till de sekundära replikerna

Kör följande kommandon på alla sekundära repliker. Dessa kommandon ansluter de sekundära replikerna till tillgänglighetsgruppen ag1 med den primära repliken och ger åtkomst till tillgänglighetsgruppen ag1 för att skapa databaser.

ALTER AVAILABILITY GROUP [ag1]
JOIN WITH (CLUSTER_TYPE = EXTERNAL);
GO
ALTER AVAILABILITY GROUP [ag1]
GRANT CREATE ANY DATABASE;
GO

Lägga till en databas i tillgänglighetsgruppen

Anslut till den primära repliken och kör följande T-SQL-kommandon till:

  1. Skapa en exempeldatabas med namnet db1, som läggs till i tillgänglighetsgruppen.

    CREATE DATABASE [db1];
    GO
    
  2. Ange databasens återställningsmodell till fullständig. Alla databaser i en tillgänglighetsgrupp kräver en fullständig återställningsmodell.

    ALTER DATABASE [db1]
        SET RECOVERY FULL;
    GO
    
  3. Säkerhetskopiera databasen. En databas kräver minst en fullständig säkerhetskopia innan du kan lägga till den i en tillgänglighetsgrupp.

    BACKUP DATABASE [db1]
        TO DISK = N'/var/opt/mssql/data/db1.bak';
    GO
    
  4. Ange databasen till den fullständiga återställningsmodellen.

    ALTER DATABASE [db1]
        SET RECOVERY FULL;
    GO
    
  5. Säkerhetskopiera databasen till disken

    BACKUP DATABASE [db1]
        TO DISK = N'/var/opt/mssql/data/db1.bak';
    GO
    
  6. Lägg till databasen db1 i tillgänglighetsgruppen (AG).

    ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];
    

När du har slutfört föregående steg kan du se en ag1 tillgänglighetsgrupp som skapats och de tre virtuella datorerna har lagts till som replik med en primär replik, en sekundär replik och en konfigurationsreplik. ag1 innehåller en databas.

Distribuera arbetsbelastningen för SQL Server-tillgänglighetsgruppen (HPE Cluster Manager)

I HPE Serviceguard distribuerar du SQL Server-arbetsbelastningen på tillgänglighetsgruppen via Serviceguard-klusterhanterarens användargränssnitt.

Distribuera arbetsuppgift för tillgänglighetsgruppen och aktivera hög tillgänglighet (HA), katastrofåterställning (DR) via ett Serviceguard-kluster med hjälp av det grafiska användargränssnittet för Serviceguard Manager. Se avsnittet Skydda Microsoft SQL Server på Linux för AlwaysOn-tillgänglighetsgrupper.

Skapa lastbalanseraren i Azure-portalen

För distributioner i Azure Cloud kräver HPE Serviceguard för Linux en lastbalanserare för att aktivera klientanslutningar med den primära repliken för att ersätta traditionella IP-adresser.

  1. Öppna resursgruppen som innehåller Serviceguard-klusternoderna eller virtuella datorer i Azure-portalen.

  2. I resursgruppen väljer du Lägg till.

  3. Sök efter "lastbalanserare" och välj sedan den lastbalanserare som publiceras av Microsoft i sökresultaten.

  4. I fönstret Load Balancer väljer du Skapa.

  5. Konfigurera lastbalanseraren på följande sätt:

    Inställning Värde
    Namn Lastbalanserarens namn. Till exempel SQLAvailabilityGroupLB.
    Typ Inre
    SKU Basic eller Standard
    Virtuellt nätverk Virtuellt nätverk som används för VM-repliker
    Undernät Undernät där SQL Server-instanser finns
    IP-adresstilldelning Statisk
    Privat IP-adress Skapa en privat IP-adress i undernätet
    Prenumeration Välj den aktuella prenumerationen
    Resursgrupp Välj den berörda resursgruppen
    Läge Välj samma plats som SQL-noder

Konfigurera Backend-poolen

Serverdelspoolen är adresserna till de två instanser där Serviceguard-klustret har konfigurerats.

  1. I resursgruppen väljer du den lastbalanserare som du skapade.
  2. Gå till Inställningar > Serverdelspooler och välj Lägg till för att skapa en serverdelsadresspool.
  3. I Lägg till serverdelspool under Namn skriver du ett namn för serverdelspoolen.
  4. Under Associerad till väljer du Virtuell dator.
  5. Välj den virtuella datorn i miljön och associera lämplig IP-adress till varje val.
  6. Välj Lägg till.

Skapa en sond

Proben definierar hur Azure verifierar vilken av Serviceguard-kluster-noden som är primär replik. Azure avsöker tjänsten baserat på IP-adressen på en port som du definierar när du skapar avsökningen.

  1. I fönstret Inställningar för lastbalanserare väljer du Hälsokontroller.

  2. I fönstret Hälsoavsökningar väljer du Lägg till.

  3. Använd följande värden för att konfigurera sonden:

    Inställning Värde
    Namn Namn som representerar probningen. Till exempel SQLAGPrimaryReplicaProbe.
    Protokoll TCP
    Hamn Du kan använda valfri tillgänglig port. Till exempel 59999.
    Intervall 5
    Ohälsosam tröskelvärde 2
  4. Välj OK.

  5. Logga in på alla dina virtuella datorer och öppna sondporten med hjälp av följande kommandon:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure skapar proben och använder den sedan för att testa den Serviceguard-nod där den primära replika-instansen av tillgänglighetsgruppen körs. Kom ihåg den port som konfigurerats (59999), som krävs för att implementera AG i Serviceguard-klustret.

Ange belastningsutjämningsregler

Belastningsutjämningsreglerna konfigurerar hur lastbalanseraren dirigerar trafik till Serviceguard-noden, som är den primära repliken i klustret. För den här lastbalanseraren aktiverar du direktserverreturen eftersom endast en av Serviceguard-klusternoderna kan vara en primär replik i taget.

  1. I fönstret Inställningar för lastbalanserare väljer du Belastningsutjämningsregler.

  2. I fönstret Belastningsutjämningsregler väljer du Lägg till.

  3. Konfigurera belastningsutjämningsregeln med hjälp av följande inställningar:

    Inställning Värde
    Namn Namn som representerar belastningsutjämningsreglerna. Till exempel SQLAGPrimaryReplicaListener.
    Protokoll TCP
    Hamn 1433
    Backend-port 1433. Det här värdet ignoreras eftersom den här regeln använder flytande IP-adress.
    avsökning Använd namnet på proben som du skapade för den här lastbalanseraren.
    Sessionspermanens Ingen
    Tidsgräns för inaktivitet (minuter) 4
    Flytande IP-adress Aktiverad
  4. Välj OK.

  5. Azure konfigurerar belastningsutjämningsregeln. Nu har lastbalanseraren konfigurerats för att dirigera trafik till den Serviceguard-nod som är den primära replikinstansen i klustret.

Anteckna lastbalanserarens frontend-IP-adress "LbReadWriteIP", som krävs för att distribuera AG i Serviceguard-klustret.

I det här läget har resursgruppen en lastbalanserare som ansluter till alla Serviceguard-noder. Lastbalanseraren innehåller också en IP-adress för klienterna att ansluta till den primära replikinstansen i klustret, så att alla datorer som är en primär replik kan svara på begäranden för tillgänglighetsgruppen.

Utför automatisk redundans och anslut noden tillbaka till klustret

För det automatiska failover-testet kan du stänga av den primära repliken, vilket simulerar den plötsliga otillgängligheten för den primära noden. Det förväntade beteendet är:

  1. Klusteradministratören befordrar en av de sekundära replikerna i tillgänglighetsgruppen till primär.

  2. Den misslyckade primära repliken ansluter automatiskt till klustret när det har startats om. Klusterhanteraren befordrar den till en sekundär replik.

För HPE Serviceguard läser du avsnittet Testa konfigurationen för redundansberedskap