Mit Always On-Verfügbarkeitsgruppen von Microsoft SQL Server können Sie Datenbanken über mehrere SQL Server Enterprise-Instanzen hinweg replizieren.
Ähnlich wie SQL Server-Failover-Clusterinstanzen verwenden AlwaysOn-Verfügbarkeitsgruppen Windows Server Failover Clustering (WSFC) zur Implementierung von Hochverfügbarkeit. Die beiden Funktionen unterscheiden sich jedoch in folgenden Punkten:
Always On-Verfügbarkeitsgruppen | Failover-Clusterinstanzen | |
---|---|---|
Umfang des Failovers | Gruppe von Datenbanken | Instanz |
Speicher | Nicht freigegeben | Freigegeben |
Einen detaillierteren Vergleich finden Sie unter Vergleich von Failover-Clusterinstanzen und Verfügbarkeitsgruppen.
AlwaysOn-Verfügbarkeitsgruppen unterstützen mehrere Verfügbarkeitsmodi. In dieser Anleitung wird gezeigt, wie Sie Always On-Verfügbarkeitsgruppen im synchronen Commit-Modus bereitstellen können, um Hochverfügbarkeit für eine oder mehrere Datenbanken zu implementieren.
Bei der Einrichtung erstellen Sie drei VM-Instanzen. Die VM-Instanzen node-1
und node-2
dienen als Clusterknoten und führen SQL Server aus.
Die dritte VM-Instanz witness
wird verwendet, um ein Quorum in einem Failover-Szenario zu erreichen.
Die drei VM-Instanzen werden auf drei Zonen verteilt und teilen sich ein gemeinsames Subnetz.
Mit einer SQL Server-AlwaysOn-Verfügbarkeitsgruppe wird eine Beispieldatenbank bookshelf
synchron über die beiden SQL Server-Instanzen repliziert.
In einer lokalen Windows-Clusterumgebung lösen ARP-Ankündigungen (Address Resolution Protocol) einen IP-Adressen-Failover aus. Trusted Cloudignoriert jedoch ARP-Ankündigungen. Daher müssen Sie eine der beiden folgenden Optionen implementieren: einen internen Load Balancer und einen verteilten Netzwerknamen (Distributed Network Name, DNN) verwenden.
In diesem Artikel wird davon ausgegangen, dass Sie Active Directory bereits in Trusted Cloud by S3NSbereitgestellt haben und Grundkenntnisse in Sachen SQL Server, Active Directory und Compute Engine haben. Weitere Informationen zu Active Directory auf Trusted Cloudfinden Sie im Abschnitt Vorbereitung.
Mit einer SQL Server-AlwaysOn-Verfügbarkeitsgruppe wird eine Beispieldatenbank bookshelf
synchron über die beiden SQL Server-Instanzen repliziert. Ein DNN-Listener (Distributed Network Name) vor dem Cluster bietet einen einzelnen Endpunkt für SQL Server-Clients.
Weitere Informationen zu DNN finden Sie unter DNN-Listener für eine Verfügbarkeitsgruppe konfigurieren.
Dieses Diagramm enthält Folgendes:
- Zwei VM-Instanzen in derselben Region und in verschiedenen Zonen für den Failover-Cluster mit den Namen
node-1
undnode-2
. Einer hostet das primäre Replikat der SQL Server-Datenbank, während der andere Knoten das sekundäre Replikat hostet. - Eine dritte VM namens
witness
dient als Dateifreigabezeuge, um eine Tiebreak-Abstimmung zu ermöglichen und ein Quorum für das Failover zu erreichen. - Ein DNN-Listener vor dem Cluster bietet einen einzelnen Endpunkt für SQL Server-Clients.
Lernziele
- Stellen Sie eine WSFC bereit, die aus zwei SQL Server-VM-Instanzen und einer dritten VM-Instanz besteht, die als Dateifreigabenzeuge dient.
- Erstellen Sie eine Verfügbarkeitsgruppe mit synchronem Commit.
- Konfigurieren Sie einen verteilten Netzwerknamen (Distributed Network Name, DNN), um Traffic mit SQL Server an Ihre Verfügbarkeitsgruppe weiterzuleiten.
- Um zu prüfen, ob der Cluster funktioniert, simulieren Sie ein Failover.
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Trusted Cloud by S3NSverwendet, darunter:
Sie können mithilfe des Preisrechners eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.
Hinweise
Für die Aufgaben in dieser Anleitung müssen Sie Folgendes beachten:
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
- Sie haben eine Active Directory-Domain mit mindestens einem Domaincontroller. Mit Managed Microsoft AD können Sie Active Directory-Domains erstellen. Alternativ können Sie eine benutzerdefinierte Active Directory-Umgebung in Compute Engine bereitstellen und eine private DNS-Weiterleitungszone einrichten, die DNS-Abfragen an Ihre Domain-Controller weiterleitet.
-
Sie haben einen Active Directory-Nutzer, der berechtigt ist, Computern der Domain beizutreten und sich über RDP anzumelden. Wenn Sie Managed Microsoft AD verwenden, können Sie den
setupadmin
-Nutzer verwenden. Weitere Informationen zum Bereitstellen von Active Directory-Nutzerkonten finden Sie unter Active Directory-Nutzerkonten bereitstellen. - Ein Trusted Cloud -Projekt und eine Virtual Private Cloud (VPC) mit Verbindung zu Ihren Active Directory-Domaincontrollern.
- Ein Subnetz, das für die VM-Instanzen des Windows Server-Failover-Clusters verwendet werden soll. Nach Abschluss dieser Anleitung können Sie weitere Kosten durch Löschen von erstellten Ressourcen vermeiden. Weitere Informationen finden Sie unter Bereinigen.
Projekt und Netzwerk vorbereiten
Wenn Sie Ihre SQL Server Always On-Verfügbarkeitsgruppen bereitstellen möchten, müssen Sie IhrTrusted Cloud -Projekt und Ihre VPC für die Bereitstellung vorbereiten. In den folgenden Abschnitten wird ausführlich beschrieben, wie Sie dabei vorgehen.
Projekt und Region konfigurieren
So bereiten Sie Ihr Trusted Cloud -Projekt für die Bereitstellung von SQL Server AlwaysOn-Verfügbarkeitsgruppen vor:
Öffnen Sie in der Trusted Cloud Console Cloud Shell. Klicken Sie hierzu auf die Schaltfläche Cloud Shell aktivieren
.
Initialisieren Sie die folgenden Variablen.
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Ersetzen Sie Folgendes:
VPC_NAME
: Der Name Ihrer VPCSUBNET_NAME
: Der Name Ihres Subnetzes
Legen Sie Ihre standardmäßige Projekt-ID fest.
gcloud config set project
PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Projekts. Trusted CloudLegen Sie Ihre Standardregion fest.
gcloud config set compute/region
REGION
Ersetzen Sie
REGION
durch die ID der Region, in der die Bereitstellung erfolgen soll.
Firewallregeln erstellen
Damit Clients eine Verbindung zu SQL Server herstellen und die Kommunikation zwischen den Clusterknoten möglich ist, müssen Sie mehrere Firewallregeln erstellen. Sie können Netzwerk-Tags verwenden, um die Erstellung dieser Firewallregeln zu vereinfachen:
- Die beiden Clusterknoten werden mit dem Tag
wsfc-node
gekennzeichnet. - Alle Server, einschließlich des
witness
, werden mit dem Tagwsfc
gekennzeichnet.
So erstellen Sie Firewallregeln, die diese Netzwerk-Tags verwenden:
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie Firewallregeln, um Traffic zwischen Clusterknoten zuzulassen.
SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\)) gcloud compute firewall-rules create allow-all-between-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp,udp,icmp \ --enable-logging \ --source-tags=wsfc \ --target-tags=wsfc \ --network=$VPC_NAME \ --priority 10000 gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp:1433 \ --enable-logging \ --source-ranges=$SUBNET_CIDR \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
VM-Instanzen erstellen
Erstellen und stellen Sie zwei VM-Instanzen für den Failover-Cluster bereit. Immer wenn eine dieser VMs das primäre Replikat der SQL Server-Datenbank hostet, hostet der andere Knoten das sekundäre Replikat. Die beiden VM-Instanzen müssen:
- Failoverclustering und SQL Server installiert haben.
- Compute Engine-WSFC-Unterstützung aktiviert haben.
Sie verwenden ein SQL Server-Premium-Image, auf dem SQL Server 2022 vorinstalliert ist.
Für eine Tiebreak-Abstimmung und zur Erfüllung eines Quorums für das Failover-Szenario stellen Sie eine dritte VM bereit, die als Dateifreigabezeuge verwendet wird. Führen Sie dazu die folgenden Schritte aus:
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie ein Spezialisierungsskript für die WSFC-Knoten. Dieses Skript installiert die erforderlichen Windows-Features und erstellt Firewallregeln für WSFC und SQL Server.
cat << "EOF" > specialize-node.ps1 $ErrorActionPreference = "stop" # Install required Windows features Install-WindowsFeature Failover-Clustering -IncludeManagementTools Install-WindowsFeature RSAT-AD-PowerShell # Open firewall for WSFC netsh advfirewall firewall add rule name="Allow WSFC health check" dir=in action=allow protocol=TCP localport=59998 # Open firewall for SQL Server netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433 # Open firewall for SQL Server replication netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022 # Format data disk Get-Disk | Where partitionstyle -eq 'RAW' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Data' -Confirm:$false # Create data and log folders for SQL Server md d:\Data md d:\Logs EOF
Erstellen Sie die VM-Instanzen. Fügen Sie auf den beiden VMs, die als Clusterknoten dienen, ein zusätzliches Datenlaufwerk hinzu und aktivieren Sie das Windows Server Failover Clustering. Setzen Sie dazu den Metadatenschlüssel
enable-wsfc
auftrue
:REGION=$(gcloud config get-value compute/region) ZONE1=
ZONE1
ZONE2=ZONE2
ZONE3=ZONE3
PD_SIZE=200 MACHINE_TYPE=n2-standard-8 gcloud compute instances create node-1 \ --zone $ZONE1 \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2022-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --boot-disk-device-name "node-1" \ --create-disk=name=node-1-datadisk,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create node-2 \ --zone $ZONE2 \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2022-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --boot-disk-device-name "node-2" \ --create-disk=name=node-2-datadisk,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create "witness" \ --zone $ZONE3 \ --machine-type e2-medium \ --subnet $SUBNET_NAME \ --image-family=windows-2022 \ --image-project=windows-cloud \ --tags wsfc \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"Ersetzen Sie ZONE1, ZONE2 und ZONE3 durch die Zonen, die Sie verwenden.
Führen Sie für jede der drei VM-Instanzen folgende Schritte aus, um sie jeweils mit Active Directory zu verknüpfen:
Überwachen Sie den Initialisierungsprozess der VM. Rufen Sie dazu die Ausgabe des seriellen Ports auf.
gcloud compute instances tail-serial-port-output
NAME
Ersetzen Sie
NAME
durch den Namen der VM-Instanz.Warten Sie einige Minuten, bis die Ausgabe
Instance setup finished
angezeigt wird, und drücken Sie dann STRG+C. Jetzt kann die VM-Instanz verwendet werden.Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.
Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM her und melden Sie sich mit dem Nutzernamen und dem Passwort an, den bzw. das Sie im vorherigen Schritt erstellt haben.
Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Verbinden Sie den Computer mit Ihrer Active Directory-Domain und starten Sie ihn neu.
Add-Computer -Domain
DOMAIN -Restart
Ersetzen Sie
DOMAIN
durch den DNS-Namen Ihrer Active Directory-Domain.Geben Sie die Anmeldedaten eines Kontos ein, das berechtigt ist, eine VM mit der Domain zu verbinden.
Warten Sie, bis die VM neu gestartet wurde. Sie haben die VM-Instanz jetzt mit Active Directory verknüpft.
Failovercluster bereitstellen
Sie können jetzt mit den VM-Instanzen einen Windows Server Failover Cluster und SQL Server bereitstellen. In den folgenden Abschnitten wird ausführlich beschrieben, wie Sie dabei vorgehen.
SQL Server vorbereiten
Erstellen Sie mit den folgenden Schritten ein neues Nutzerkonto in Active Directory für SQL Server.
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
node-1
her. Melden Sie sich mit Ihrem Domainnutzerkonto an. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Erstellen Sie ein Domainnutzerkonto für SQL Server und den SQL-Agent und weisen Sie ein Passwort zu:
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true
Führen Sie die folgenden Schritte sowohl für node-1
als auch für node-2
aus, um SQL Server zu konfigurieren:
- Öffnen Sie den SQL Server-Konfigurations-Manager.
- Wählen Sie im Navigationsbereich die Option SQL Server-Dienste aus.
- Klicken Sie in der Liste der Dienste mit der rechten Maustaste auf SQL Server (MSSQLSERVER) und wählen Sie Eigenschaften.
Ändern Sie unter Anmeldung als das Konto:
- Kontoname:
DOMAIN\sql_server
, wobeiDOMAIN
der NetBIOS-Name Ihrer Active Directory-Domain ist. - Passwort:Geben Sie das Passwort ein, das Sie zuvor ausgewählt haben.
- Kontoname:
Klicken Sie auf OK.
Wenn Sie aufgefordert werden, SQL Server neu zu starten, wählen Sie Ja.
SQL Server wird jetzt unter einem Domainnutzerkonto ausgeführt.
Dateifreigaben erstellen
Erstellen Sie zwei Dateifreigaben auf der VM-Instanz witness
, damit sie SQL Server-Back-ups speichern und als Dateifreigabenzeuge fungieren kann:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zu
witness
her. Melden Sie sich mit Ihrem Domainnutzerkonto an. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Erstellen Sie eine Zeugendateifreigabe und gewähren Sie sich und den beiden Clusterknoten Zugriff auf die Dateifreigabe.
New-Item "C:\QWitness" –type directory icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)' icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)' New-SmbShare ` -Name QWitness ` -Path "C:\QWitness" ` -Description "SQL File Share Witness" ` -FullAccess $env:username,node-1$,node-2$
Erstellen Sie eine weitere Dateifreigabe zum Speichern von Back-ups und gewähren Sie SQL Server uneingeschränkten Zugriff:
New-Item "C:\Backup" –type directory New-SmbShare ` -Name Backup ` -Path "C:\Backup" ` -Description "SQL Backup" ` -FullAccess $env:USERDOMAIN\sql_server
Failovercluster erstellen
So erstellen Sie den Failover-Cluster:
- Kehren Sie zur Remote Desktop-Sitzung auf
node-1
zurück. - Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
- Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Erstellen Sie einen neuen Cluster:
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -ManagementPointNetworkType Distributed
Kehren Sie zur PowerShell-Sitzung auf
witness
zurück und gewähren Sie dem virtuellen Computerobjekt des Clusters die Berechtigung für den Zugriff auf die Dateifreigabe.icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'sql-cluster$' ` -AccessRight Full ` -Force
Kehren Sie zur PowerShell-Sitzung auf
node-1
zurück und konfigurieren Sie den Cluster so, dass die Dateifreigabe aufwitness
als Clusterquorum verwendet wird.Set-ClusterQuorum -FileShareWitness \\witness\QWitness
Prüfen Sie, ob der Cluster erfolgreich erstellt wurde.
Test-Cluster
Möglicherweise werden einige Warnungen angezeigt, die ignoriert werden können:
WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings.. WARNING: Network - Validate Network Communication: The test reported some warnings.. WARNING: Test Result: HadUnselectedTests, ClusterConditionallyApproved Testing has completed for the tests you selected. You should review the warnings in the Report. A cluster solution is supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
Sie können auch das Failovercluster-Manager-MMC-Snap-In starten, um den Zustand des Clusters zu prüfen. Führen Sie dazu
cluadmin.msc
aus.Wenn Sie Managed AD verwenden, fügen Sie das vom Windows-Cluster verwendete Computerkonto der Gruppe Cloud Service Domain Join-Konten hinzu, damit der Computer sich mit der Domain verknüpfen kann.
Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members sql-cluster$
Aktivieren Sie Always On-Verfügbarkeitsgruppen auf beiden Knoten.
Enable-SqlAlwaysOn -ServerInstance node-1 -Force Enable-SqlAlwaysOn -ServerInstance node-2 -Force
Verfügbarkeitsgruppe erstellen
Sie erstellen jetzt eine Beispieldatenbank bookshelf
, fügen sie in eine neue Verfügbarkeitsgruppe namens bookshelf-ag
ein und konfigurieren die Hochverfügbarkeit.
Datenbank erstellen
Neue Datenbank erstellen. Für diese Anleitung muss die Datenbank keine Daten enthalten.
- Kehren Sie zur Remote Desktop-Sitzung auf
node-1
zurück. - Öffnen Sie SQL Server Management Studio.
- Prüfen Sie im Dialogfeld Mit Server verbinden, ob der Servername auf
node-1
festgelegt ist, und wählen Sie Verbinden aus. - Wählen Sie im Menü Datei > Neu > Abfrage mit aktueller Verbindung aus.
Fügen Sie das folgende SQL-Skript in den Editor ein:
-- Create a sample database CREATE DATABASE bookshelf ON PRIMARY ( NAME = 'bookshelf', FILENAME='d:\Data\bookshelf.mdf', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB) LOG ON ( NAME = 'bookshelf_log', FILENAME='d:\Logs\bookshelf.ldf', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB) GO USE [bookshelf] SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO -- Create sample table CREATE TABLE [dbo].[Books] ( [Id] [bigint] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Author] [nvarchar](max) NULL, [PublishedDate] [datetime] NULL, [ImageUrl] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [CreatedById] [nvarchar](max) NULL, CONSTRAINT [PK_dbo.Books] PRIMARY KEY CLUSTERED ([Id] ASC) WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO -- Create a backup EXEC dbo.sp_changedbowner @loginame = 'sa', @map = false; ALTER DATABASE [bookshelf] SET RECOVERY FULL; GO BACKUP DATABASE bookshelf to disk = '\\witness\Backup\bookshelf.bak' WITH INIT GO
Das Skript erstellt eine neue Datenbank mit einer einzelnen Tabelle und führt ein erstes Back-up in
witness
durch.Wählen Sie Ausführen, um das SQL-Skript auszuführen.
Hochverfügbarkeit konfigurieren
Sie können jetzt Hochverfügbarkeit für die Verfügbarkeitsgruppe entweder mit T-SQL oder Server Management Studio konfigurieren.
T-SQL verwenden
Führen Sie die folgenden Schritte aus, um die Hochverfügbarkeit für die Verfügbarkeitsgruppe mit T-SQL zu konfigurieren:
Stellen Sie eine Verbindung zu
node-1
her und führen Sie dann das folgende Skript aus, um die Verfügbarkeitsgruppebookshelf-ag
zu erstellen.CREATE LOGIN [
NET_DOMAIN
\sql_server] FROM WINDOWS; GO USE [bookshelf]; CREATE USER [NET_DOMAIN
\sql_server] FOR LOGIN [NET_DOMAIN
\sql_server]; GO USE [master]; CREATE ENDPOINT bookshelf_endpoint STATE=STARTED AS TCP (LISTENER_PORT=5022) FOR DATABASE_MIRRORING (ROLE=ALL); GO GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN
\sql_server] GOStellen Sie eine Verbindung zu
node-2
her und führen Sie das folgende Skript aus.CREATE LOGIN [
NET_DOMAIN
\sql_server] FROM WINDOWS; GO CREATE ENDPOINT bookshelf_endpoint STATE=STARTED AS TCP (LISTENER_PORT=5022) FOR DATABASE_MIRRORING (ROLE=ALL); GO GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN
\sql_server] GOFühren Sie auf
node-1
das folgende Skript aus, um die Verfügbarkeitsgruppebookshelf-ag
zu erstellen.USE master; GO CREATE AVAILABILITY GROUP [bookshelf-ag] WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY, CLUSTER_TYPE = WSFC, DB_FAILOVER = ON ) FOR DATABASE [bookshelf] REPLICA ON N'node-1' WITH ( ENDPOINT_URL = 'TCP://node-1:5022', AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = AUTOMATIC, BACKUP_PRIORITY = 50, SEEDING_MODE = AUTOMATIC, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO) ), N'node-2' WITH ( ENDPOINT_URL = 'TCP://node-2:5022', AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = AUTOMATIC, BACKUP_PRIORITY = 50, SEEDING_MODE = AUTOMATIC, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO) ); GO
Stellen Sie eine Verbindung zu
node-2
her und führen Sie dann das folgende Skript aus, um das sekundäre Replikat der Verfügbarkeitsgruppe hinzuzufügen und das automatische Seeding zu aktivieren.USE master; GO ALTER AVAILABILITY GROUP [bookshelf-ag] JOIN; ALTER AVAILABILITY GROUP [bookshelf-ag] GRANT CREATE ANY DATABASE;
Prüfen Sie den Status der Verfügbarkeitsgruppe.
SELECT * FROM sys.dm_hadr_availability_group_states; GO
Sie sollten
synchronization_health_desc
alsHEALTHY
sehen.
SQL Server Management Studio verwenden
So konfigurieren Sie die Hochverfügbarkeit für die Verfügbarkeitsgruppe mit SQL Server Management Studio:
- Klicken Sie im Fenster Object Explorer mit der rechten Maustaste auf Always On-Hochverfügbarkeit und wählen Sie dann den New Availability Group Wizard aus.
- Legen Sie auf der Seite Optionen angeben den Namen der Verfügbarkeitsgruppe auf
bookshelf-ag
fest und wählen Sie Weiter. - Wählen Sie auf der Seite Datenbanken auswählen die Datenbank
bookshelf
und dann Weiter aus. Wählen Sie auf der Seite Replikate angeben den Tab Replikate aus.
- Wählen Sie Replikat hinzufügen aus.
Geben Sie im Dialogfeld Mit Server verbinden den Servernamen
node-2
ein und wählen Sie Verbinden aus.Die Liste der Verfügbarkeitsreplikate enthält jetzt die SQL Server-Instanzen
node-1
undnode-2
.Setzen Sie den Verfügbarkeitsmodus für beide Instanzen auf Synchrounous-Commit.
Setzen Sie für beide Instanzen das automatische Failover auf Aktiviert.
Wählen Sie Weiter aus.
Wählen Sie auf der Seite Datensynchronisierung auswählen die Option Automatisches Seeding aus.
Prüfen Sie auf der Seite Validierung, ob alle Prüfungen erfolgreich abgeschlossen wurden. Sie können die Prüfung des Listeners für die Verfügbarkeitsgruppe ignorieren.
Wählen Sie auf der Seite Zusammenfassung die Option Fertigstellen aus.
Wählen Sie auf der Seite Ergebnisse die Option Schließen.
DNN-Listener für die Verfügbarkeitsgruppe konfigurieren
Ein DNN-Listener dient als einzelner Endpunkt für SQL Server-Clients. So konfigurieren Sie einen DNN-Listener:
- Kehren Sie zur PowerShell-Sitzung auf
node-1
zurück. Führen Sie das folgende Skript aus, um einen DNN-Listener zu erstellen.
$Ag='bookshelf-ag' $Port='
DNN_PORT
' $Dns='DNN_NAME
' # create the DNN resource with the port as the resource name Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag # set the DNS name of the DNN resource Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns # start the DNN resource Start-ClusterResource -Name $Port # add the Dependency from availability group resource to the DNN resource Set-ClusterResourceDependency -Resource $Ag -Dependency "[$Port]" # restart the availability group resource Stop-ClusterResource -Name $Ag Start-ClusterResource -Name $AgErsetzen Sie
DNN_PORT
durch den DNN-Listener-Port. Für den DNN-Listener-Port muss ein eindeutiger Port konfiguriert sein. Weitere Informationen finden Sie unter Überlegungen zu Ports.Ersetzen Sie
DNN_NAME
durch den Namen des DNN-Listeners.Erstellen Sie Firewallregeln für den DNN-Listener-Port sowohl in
node-1
als auch innode-2
.netsh advfirewall firewall add rule name="Allow DNN listener" dir=in action=allow protocol=TCP localport=
DNN_PORT
Failover testen
Jetzt können Sie testen, ob das Failover wie erwartet funktioniert:
- Kehren Sie zur PowerShell-Sitzung auf
witness
zurück. Führen Sie das folgende Skript aus.
while ($True){ $Conn = New-Object System.Data.SqlClient.SqlConnection $Conn.ConnectionString = "Server=
DNN_NAME
,DNN_PORT
;Integrated Security=true;Initial Catalog=master" $Conn.Open() $Cmd = New-Object System.Data.SqlClient.SqlCommand $Cmd.Connection = $Conn $Cmd.CommandText = "SELECT SERVERPROPERTY('ServerName')" $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter $Cmd $Data = New-Object System.Data.DataSet $Adapter.Fill($Data) | Out-Null $Data.Tables[0] + (Get-Date -Format "MM/dd/yyyy HH:mm:ss") Start-Sleep -Seconds 2 }Ersetzen Sie
DNN_NAME
durch den Namen des DNN-Listeners undDNN_PORT
durch den Port des DNN-Listeners.Alle zwei Sekunden stellt das Skript über den Verfügbarkeitsgruppen-Listener eine Verbindung zu SQL Server her und fragt den Servernamen ab.
Lassen Sie das Skript laufen.
Kehren Sie zur Remote Desktop-Sitzung auf
node-1
zurück, um einen Failover auszulösen.- Gehen Sie in SQL Server Management Studio zu Always On-Hochverfügbarkeit > Verfügbarkeitsgruppen > bookshelf-ag (primär) und klicken Sie mit der rechten Maustaste auf den Knoten.
- Wählen Sie Failover.
- Prüfen Sie auf der SeiteNeues primäres Replikat auswählen ob
node-2
als neues primäres Replikat ausgewählt ist und dass die Spalte Failover-BereitschaftNo data loss
angibt. Klicken Sie dann auf Weiter. - Wählen Sie auf der Seite Mit Replikat verbinden die Option Verbinden.
- Prüfen Sie im Dialogfeld Verbindung zum Server herstellen, ob der Servername
node-2
lautet, und klicken Sie auf Verbinden. - Wählen Sie Weiter und dann Fertigstellen.
- Prüfen Sie auf der Seite Ergebnisse, ob der Failover erfolgreich war.
Kehren Sie zur PowerShell-Sitzung auf
witness
zurück.Beobachten Sie die Ausgabe des laufenden Skripts. Der Servername ändert sich aufgrund des Failovers von
node-1
innode-2
.Beenden Sie das Skript durch Druck auf
Ctrl+C
.
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.