Richten Sie mithilfe von Amazon FSx eine Multi-AZ-Infrastruktur für einen SQL Server Always On FCI ein - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Richten Sie mithilfe von Amazon FSx eine Multi-AZ-Infrastruktur für einen SQL Server Always On FCI ein

Erstellt von Manish Garg (AWS), T.V.R.L.Phani Kumar Dadi (AWS), Nishad Mankar (AWS) und RAJNEESH TYAGI (AWS)

aws-windows-failover-clusterCode-Repository: -automation

Umgebung: PoC oder Pilot

Quelle: Lokale SQL Server-Datenbank

Ziel: Microsoft SQL Server auf EC2

R-Typ: Rehost

Arbeitslast: Microsoft

Technologien: Migration; Infrastruktur; DevOps

AWS-Services: Von AWS verwaltetes Microsoft AD; Amazon EC2; Amazon FSx; AWS Systems Manager

Übersicht

Wenn Sie eine große Anzahl von Microsoft SQL Server Always On Failover Cluster Instances (FCIs) schnell migrieren müssen, kann Ihnen dieses Muster helfen, die Bereitstellungszeit zu minimieren. Durch die Verwendung von Automatisierung und Amazon FSx for Windows File Server werden manueller Aufwand, von Menschen verursachte Fehler und der Zeitaufwand für die Bereitstellung einer großen Anzahl von Clustern reduziert.

Dieses Muster richtet die Infrastruktur für SQL Server-FCIs in einer Multi-Availability Zone (Multi-AZ) -Bereitstellung auf Amazon Web Services (AWS) ein. Die Bereitstellung der für diese Infrastruktur erforderlichen AWS-Services wird mithilfe von CloudFormationAWS-Vorlagen automatisiert. Die Installation von SQL Server und die Erstellung von Clusterknoten auf einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance werden mithilfe von PowerShell Befehlen durchgeführt.

Diese Lösung verwendet ein hochverfügbares Multi-AZ Amazon FSx for Windows-Dateisystem als gemeinsamen Zeugen für die Speicherung der SQL Server-Datenbankdateien. Das Amazon FSx-Dateisystem und EC2-Windows-Instances, die SQL Server hosten, sind mit derselben AWS Directory Service for Microsoft Active Directory-Domäne (AWS Managed Microsoft AD) verknüpft.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • Ein AWS-Benutzer mit ausreichenden Berechtigungen zur Bereitstellung von Ressourcen mithilfe von CloudFormation AWS-Vorlagen

  • AWS Directory Service für Microsoft Active Directory

  • Anmeldeinformationen in AWS Secrets Manager zur Authentifizierung bei AWS Managed Microsoft AD in einem Schlüssel-Wert-Paar:

    • ADDomainName: <Domain Name>

    • ADDomainJoinUserName: <Domain Username>

    • ADDomainJoinPassword: <Domain User Password>

    • TargetOU: <Target OU Value>

    Hinweis: Sie verwenden denselben Schlüsselnamen in der AWS Systems Manager Manager-Automatisierung für die AWS Managed Microsoft AD-Join-Aktivität.

  • SQL Server-Mediendateien für die SQL Server-Installation und die Erstellung von Windows-Service- oder Domänenkonten, die bei der Clustererstellung verwendet werden

  • Eine virtuelle private Cloud (VPC) mit zwei öffentlichen Subnetzen in separaten Availability Zones, zwei privaten Subnetzen in den Availability Zones, einem Internet-Gateway, NAT-Gateways, Routentabellenzuordnungen und einem Jump-Server

Produktversionen

  • Windows Server 2012 R2 und Microsoft SQL Server 2016

Architektur

Quelltechnologie-Stack

  • Lokaler SQL Server mit FCIs, die ein gemeinsam genutztes Laufwerk verwenden

Zieltechnologie-Stack

  • AWS EC2-Instanzen

  • Amazon FSx für Windows File Server

  • Runbook zur AWS Systems Manager Automation

  • Netzwerkkonfigurationen (VPC, Subnetze, Internet-Gateway, NAT-Gateways, Jump-Server, Sicherheitsgruppen)

  • AWS Secrets Manager

  • AWS Managed Microsoft AD

  • Amazon EventBridge

  • AWS Identity and Access Management (IAM)

Zielarchitektur

Das folgende Diagramm zeigt ein AWS-Konto in einer einzelnen AWS-Region mit einer VPC, die zwei Availability Zones umfasst, zwei öffentliche Subnetze mit NAT-Gateways, einem Jump-Server im ersten öffentlichen Subnetz, zwei privaten Subnetzen mit jeweils einer EC2-Instance für einen SQL Server-Knoten in einer Knotensicherheitsgruppe und einem Amazon FSx-Dateisystem, das eine Verbindung zu jedem der SQL Server-Knoten herstellt. AWS Directory Service, Amazon EventBridge, AWS Secrets Manager und AWS Systems Manager sind ebenfalls enthalten.

Multi-AZ-Architektur mit Ressourcen in öffentlichen und privaten Subnetzen mit Knotensicherheitsgruppen.

Automatisierung und Skalierung

  • Sie können AWS Systems Manager verwenden, um AWS Managed Microsoft AD beizutreten und die SQL Server-Installation durchzuführen.

Tools

AWS-Services

  • AWS CloudFormation hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.

  • AWS Directory Service bietet mehrere Möglichkeiten, Microsoft Active Directory (AD) mit anderen AWS-Services wie Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) für SQL Server und Amazon FSx for Windows File Server zu verwenden.

  • Amazon Elastic Compute Cloud (Amazon EC2) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.

  • Amazon EventBridge ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS-Lambda-Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen AWS-Konten.

  • AWS Identity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • AWS Secrets Manager hilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Passwörter, durch einen API-Aufruf an Secrets Manager zu ersetzen, um das Geheimnis programmgesteuert abzurufen.

  • AWS Systems Manager unterstützt Sie bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der AWS-Cloud ausgeführt werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS-Ressourcen sicher und skalierbar zu verwalten.

Andere Tools

  • PowerShellist ein Automatisierungs- und Konfigurationsverwaltungsprogramm von Microsoft, das unter Windows, Linux und macOS läuft. Dieses Muster verwendet PowerShell Skripts.

Code-Repository

Der Code für dieses Muster ist im Repository GitHub aws-windows-failover-cluster-automation verfügbar.

Bewährte Methoden

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie den Systems Manager CloudFormation Manager-Stack bereit.

  1. Melden Sie sich bei Ihrem AWS-Konto an und öffnen Sie die AWS-Managementkonsole.

  2. Navigieren Sie zur CloudFormation Konsole und erstellen Sie den Systems Manager CloudFormation Manager-Stack, indem Sie die ssm.yaml Vorlage hochladen. Geben Sie Werte für die folgenden Parameter an:

    • StateUnJoinAssociationLoggingBucketName— Geben Sie einen Namen für den S3-Bucket an, den die Vorlage zu Protokollierungszwecken erstellt.

    • ssmAssociationAd UnjoinName — Geben Sie einen Namen für die Ressource an. AWS::SSM::Association

    • SSM AutomationDocumentName — Geben Sie einen Namen für das Systems Manager Automation-Runbook ein.

    • EventBridgeName— Geben Sie einen Namen für den EventBridge Event-Bus ein.

  3. Stellen Sie den Systems Manager CloudFormation Manager-Stack bereit, indem Sie die ssm.yaml CloudFormation Vorlage starten. Die Vorlage erstellt das Systems Manager Atomation Runbook, das initiiert wird, wenn eine neue EC2-Instance mit dem Tag gestartet wird. ADJoined: FSXADD Das Automation-Runbook fügt die Instance dem AWS Managed Microsoft AD-Verzeichnis hinzu.

AWS DevOps, DevOps Ingenieur

Stellen Sie den Infrastruktur-Stack bereit.

Erstellen Sie nach erfolgreicher Bereitstellung des Systems Manager infra Manager-Stacks den Stack, der EC2-Instance-Knoten, Sicherheitsgruppen, das Dateisystem Amazon FSx for Windows File Server und die IAM-Rolle umfasst.

  1. Navigieren Sie zur CloudFormation Konsole und starten Sie die Vorlage. infra-cf.yaml Um diesen Stack bereitzustellen, sind die folgenden Parameter erforderlich:

    • ActiveDirectoryId— ID für AWS Managed Microsoft AD

    • ADDnsIpAddresses1— Primäre DNS-IP-Adresse von AWS Managed Microsoft AD

    • ADDnsIpAddresses2— Sekundäre DNS-IP-Adresse von AWS Managed Microsoft AD

    • FSxSecurityGroupName— Name der Amazon FSx-Sicherheitsgruppe

    • FSxWindowsFileSystemName— Name des Amazon FSx-Laufwerks

    • ImageID— ID des Windows 2012 R2-Basisimages oder Amazon Machine Image (AMI), das zur Erstellung des SQL Server-Instanzknotens verwendet wurde

    • KeyPairName— Schlüssel-Wert-Paar, das für den Zugriff an die EC2-Instanzknoten angehängt werden soll

    • Node1SecurityGroupName— Name der ersten Knoten-Sicherheitsgruppe

    • Node2SecurityGroupName— Name der Sicherheitsgruppe für den zweiten Knoten

    • OUSecretName— Name des Geheimnisses, das die AWS Managed Microsoft AD-Informationen enthält

    • PrivateSubnet1— ID des ersten privaten Subnetzes

    • PrivateSubnet2— ID des zweiten privaten Subnetzes

    • SqlFSxFCIName— Name des Tags, das auf die primären und sekundären Knoten sowie auf Amazon FSx angewendet wurde.

    • SqlFSxServerNetBIOSName1— Name des primären EC2-Instance-Knotens (maximal 15 Zeichen)

    • SqlFSxServerNetBIOSName2— Name des sekundären EC2-Instanzknotens (maximal 15 Zeichen)

    • VPC— VPC-ID

    • WorkloadInstanceType— Typ der EC2-Instanz

    Stellen Sie den infra Stack bereit. Der Stapel erstellt alle Infrastrukturkomponenten, die für die Einrichtung von Windows SQL Server FCI erforderlich sind.

  2. Nachdem die EC2-Instance-Knoten gestartet wurden, wird das Systems Manager Automation-Dokument aufgerufen, um diese Instances mit AWS Managed Microsoft AD zu verbinden. Sie können den Fortschritt auf der Automationsseite der Systems Manager Manager-Konsole verfolgen.

AWS DevOps, DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Installieren Sie die Windows-Tools.

  1. Melden Sie sich bei der primären EC2-Instanz an, bei der es sich um Knoten 1 handelt. Führen Sie das folgende Skript aus, um die Windows-Funktionen (Active Directory und FCI Tools) zu installieren PowerShell .

    Install-WindowsFeature -Name RSAT-AD-Powershell,Failover-Clustering -IncludeManagementTools Install-WindowsFeature -Name RSAT-Clustering,RSAT-ADDS-Tools,RSAT-AD-Powershell,RSAT-DHCP,RSAT-DNS-Server
  2. Melden Sie sich bei der sekundären EC2-Instanz an, bei der es sich um Knoten 2 handelt, und führen Sie dasselbe Skript aus, um Funktionen auf Knoten 2 zu aktivieren.

AWS DevOps, DevOps Ingenieur, DBA

Stellen Sie die Cluster-Computerobjekte in den Active Directory-Domänendiensten vorab bereit.

Folgen Sie den Anweisungen in der Windows Server-Dokumentation, um das Clusternamenobjekt (CNO) in den Active Directory-Domänendiensten (AD DS) und ein virtuelles Computerobjekt (VCO) für eine Clusterrolle vorab bereitzustellen.

AWS DevOps, DBA, Ingenieur DevOps

Erstellen Sie das WSFC.

Gehen Sie wie folgt vor, um den Windows Server Failover Clustering (WSFC) -Cluster zu erstellen:

  1. Melden Sie sich bei der primären EC2-Instanz an, bei der es sich um Knoten 1 handelt. Führen Sie den folgenden Code aus, um die Amazon FSx-Dateifreigabe zu erstellen und vollen Zugriff auf das aufgeführte AD-Servicekonto zu gewähren.

    Invoke-Command -ComputerName "<FSx Windows Remote PowerShell Endpoint>" -ConfigurationName FSxRemoteAdmin -scriptblock { New-FSxSmbShare -Name "SQLDB" -Path "D:\share" -Description "SQL Databases Share" -ContinuouslyAvailable $true -FolderEnumerationMode AccessBased -EncryptData $true grant-fsxsmbshareaccess -name SQLDB -AccountName "<domain\user>" -accessRight Full }

    Mit diesem Befehl wird auch die kontinuierlich verfügbare Dateifreigabe (CA) erstellt, die für die Verwendung durch Microsoft SQL Server optimiert ist.

  2. Führen Sie den folgenden Befehl aus, um den Failovercluster auf der primären Instanz (Knoten 1) zu erstellen.

    New-Cluster -Name <CNO Name> -Node  <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>

    Der Befehl erfordert die folgenden Parameter:

    • Name— Der Name des Clusters (CNO)

    • Node— Die Namen der primären bzw. sekundären Knoten

    • StaticAddress— Die sekundären IP-Adressen der primären bzw. sekundären Knoten

    Wichtig: Ein Domänenadministrator oder ein regulärer Benutzer benötigt Administratorrechte für beide Knoten, um den Windows Server Failover Clustering (WSFC) -Cluster zu erstellen. Andernfalls schlägt der vorherige Befehl fehl und gibt die Meldung, zurück. You do not have administrator privilege on servers

  3. Führen Sie nach der Erstellung des Clusters den folgenden Befehl aus, um den File Share Witness anzuhängen.

    Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
AWS DevOps, DBA, Ingenieur DevOps

Installieren Sie den SQL Server-Failover-Cluster.

Nachdem der WSFC-Cluster eingerichtet ist, installieren Sie den SQL Server-Cluster auf der primären Instanz (node1).

  1. Erstellen Sie im Laufwerk T auf beiden Knoten Ordner tempdb. log Die Ordner werden in den PowerShell Befehlen verwendet.

  2. Nachdem Sie die SQL Server-Mediendateien für die SQL Server-Installation auf beiden Knoten kopiert haben, führen Sie den folgenden PowerShell Befehl auf Knoten 1 aus, um SQL Server auf Knoten 1 zu installieren.

D:\setup.exe /Q ` /ACTION=InstallFailoverCluster ` /IACCEPTSQLSERVERLICENSETERMS ` /FEATURES="SQL,IS,BC,Conn" ` /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server” ` /INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" ` /RSINSTALLMODE="FilesOnlyMode" ` /INSTANCEID="MSSQLSERVER" ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /INSTANCEDIR="C:\Program Files\Microsoft SQL Server" ` /ENU="True" ` /ERRORREPORTING=0 ` /SQMREPORTING=0 ` /SAPWD=“<Domain User password>” ` /SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" ` /SQLSYSADMINACCOUNTS="<domain\username>" ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="<domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server" ` /SQLUSERDBDIR="\\<FSX DNS name>\share\data" ` /SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" ` /SQLTEMPDBDIR="T:\tempdb" ` /SQLTEMPDBLOGDIR="T:\log" ` /SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, Ingenieur DevOps

Fügen Sie dem Cluster einen sekundären Knoten hinzu.

Führen Sie den folgenden PowerShell Befehl aus, um SQL Server zum sekundären Knoten (Knoten 2) hinzuzufügen.

D:\setup.exe /Q ` /ACTION=AddNode ` /IACCEPTSQLSERVERLICENSETERMS ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /CONFIRMIPDEPENDENCYCHANGE=1 ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, Ingenieur DevOps

Testen Sie den SQL Server FCI.

  1. Starten Sie auf der Windows-Instanz für einen der Knoten in den Verwaltungstools den Failovercluster-Manager.

  2. Navigieren Sie zu Knoten und vergewissern Sie sich, dass der Knotenstatus Status Running lautet.

  3. Wählen Sie Rollen aus, öffnen Sie das Kontextmenü (mit der rechten Maustaste) für SQL Server (MSSQLSERVER) und wählen Sie Move and Select Node aus.

  4. Nach der Knotenauswahl sollte SQL Server auf dem anderen Knoten ausgeführt werden.

DBA, Ingenieur DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Ressourcen bereinigen.

Verwenden Sie den CloudFormation AWS-Stack-Löschvorgang, um die Ressourcen zu bereinigen:

  1. Öffnen Sie die CloudFormation AWS-Konsole.

  2. Wählen Sie auf der Seite Stacks den infra Stack aus. Der Stack muss aktuell ausgeführt werden.

  3. Wählen Sie im Stack-Detailbereich Delete (Löschen) aus.

  4. Wählen Sie Delete stack (Stack löschen) aus, wenn Sie dazu aufgefordert werden.

  5. Wiederholen Sie die Schritte 2 bis 4 für den ssm Stapel.

Nachdem das Löschen des Stacks abgeschlossen ist, befinden sich die Stapel im DELETE_COMPLETE Status. Stapel im DELETE_COMPLETE Status werden standardmäßig nicht in der CloudFormation Konsole angezeigt. Um gelöschte Stacks anzuzeigen, müssen Sie den Stack-Ansichtsfilter ändern, wie unter Gelöschte Stacks auf der CloudFormation AWS-Konsole anzeigen beschrieben.

Wenn das Löschen fehlgeschlagen ist, befindet sich ein Stack im DELETE_FAILED Status. Lösungen finden Sie in der CloudFormation Dokumentation unter Fehler beim Löschen des Stacks.

AWS DevOps, DBA, Ingenieur DevOps

Fehlerbehebung

ProblemLösung

CloudFormation AWS-Vorlagenfehler

Wenn die CloudFormation Vorlage während der Bereitstellung fehlschlägt, gehen Sie wie folgt vor:

  1. Öffnen Sie die CloudFormation AWS-Konsole.

  2. Wählen Sie auf der Seite Stacks in der CloudFormation Konsole den Stack aus.

  3. Wählen Sie Ereignisse und überprüfen Sie den Stack-Status.

Fehler beim Verbinden mit AWS Managed Microsoft AD

Gehen Sie wie folgt vor, um die Verbindungsprobleme zu beheben:

  1. Öffnen Sie die Systems Manager-Konsole.

  2. Wählen Sie die Bereitstellungsregion aus.

  3. Wählen Sie im linken Bereich Automation aus und suchen Sie das ausgefallene Automatisierungs-Runbook.

  4. Öffnen Sie das Automatisierungs-Runbook und suchen Sie nach dem Ausführungsstatus und den Ausführungsschritten.

  5. Untersuchen Sie die Details des fehlgeschlagenen Schritts, um den genauen Fehler oder Misserfolg zu ermitteln.

Zugehörige Ressourcen