Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bevor Sie beginnen, sollten Sie berücksichtigen, dass Sie diese Aufgabe jetzt im Azure-Ressourcen-Manager-Modell ausführen können. Wir empfehlen das Azure Resource Manager-Modell für neue Bereitstellungen. Siehe SQL Server AlwaysOn-Verfügbarkeitsgruppen auf virtuellen Azure-Computern.
Von großer Bedeutung
Wir empfehlen, dass bei den meisten neuen Bereitstellungen das Resource Manager-Modell verwendet wird. Azure verfügt über zwei verschiedene Bereitstellungsmodelle für das Erstellen und Verwenden von Ressourcen: das Resource Manager-Modell und das klassische Bereitstellungsmodell. Dieser Artikel befasst sich mit der Verwendung des klassischen Bereitstellungsmodells.
Virtuelle Azure-Computer (VMs) können Datenbankadministratoren dabei helfen, die Kosten eines SQL Server-Systems mit hoher Verfügbarkeit zu senken. In diesem Lernprogramm erfahren Sie, wie Sie eine Verfügbarkeitsgruppe mithilfe von SQL Server Always On end-to-End in einer Azure-Umgebung implementieren. Am Ende des Lernprogramms besteht Ihre SQL Server Always On-Lösung in Azure aus den folgenden Elementen:
- Ein virtuelles Netzwerk, das mehrere Subnetze enthält, einschließlich eines Front-End- und eines Back-End-Subnetzes.
- Ein Domänencontroller mit einer Active Directory-Domäne.
- Zwei SQL Server-VMs, die im Back-End-Subnetz bereitgestellt und der Active Directory-Domäne beigetreten sind.
- Ein Drei-Knoten-Windows-Failovercluster mit dem Knotenmehrheits-Quorummodell.
- Eine Verfügbarkeitsgruppe mit zwei synchronen Commit-Replikaten einer Verfügbarkeitsdatenbank.
Dieses Szenario ist eine gute Wahl für seine Einfachheit in Azure, nicht für seine Kosteneffizienz oder andere Faktoren. Sie können beispielsweise die Anzahl der virtuellen Maschinen für eine Verfügbarkeitsgruppe mit zwei Replikaten minimieren, um Rechenstunden in Azure zu sparen, indem Sie den Domänencontroller als Quorum-Dateifreigabe-Zeuge in einem Zwei-Knoten-Failover-Cluster verwenden. Diese Methode reduziert die Anzahl der virtuellen Computer um eine von der obigen Konfiguration.
Dieses Lernprogramm soll Ihnen die Schritte zeigen, die zum Einrichten der oben beschriebenen Lösung erforderlich sind, ohne die Details der einzelnen Schritte zu erarbeiten. Anstatt daher die GUI-Konfigurationsschritte bereitzustellen, wird powerShell-Skripting verwendet, um Sie schnell durch jeden Schritt zu führen. In diesem Lernprogramm wird folgendes vorausgesetzt:
- Sie verfügen bereits über ein Azure-Konto mit dem Abonnement des virtuellen Computers.
- Sie haben die Azure PowerShell-Cmdlets installiert.
- Sie verfügen bereits über ein solides Verständnis von AlwaysOn-Verfügbarkeitsgruppen für lokale Lösungen. Weitere Informationen finden Sie unter Always On-Verfügbarkeitsgruppen (SQL Server).
Herstellen einer Verbindung mit Ihrem Azure-Abonnement und Erstellen des virtuellen Netzwerks
Importieren Sie in einem PowerShell-Fenster auf Ihrem lokalen Computer das Azure-Modul, laden Sie die Veröffentlichungseinstellungsdatei auf Ihren Computer herunter, und verbinden Sie Ihre PowerShell-Sitzung mit Ihrem Azure-Abonnement, indem Sie die heruntergeladenen Veröffentlichungseinstellungen importieren.
Import-Module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Azure\Azure.psd1" Get-AzurePublishSettingsFile Import-AzurePublishSettingsFile <publishsettingsfilepath>Der Befehl "Get-AzurePublishSettingsFile " generiert automatisch ein Verwaltungszertifikat mit Azure und lädt es auf Ihren Computer herunter. Ein Browser wird automatisch geöffnet, und Sie werden aufgefordert, die Anmeldeinformationen des Microsoft-Kontos für Ihr Azure-Abonnement einzugeben. Die heruntergeladene PUBLISHSETTINGS-Datei enthält alle Informationen, die Sie zum Verwalten Ihres Azure-Abonnements benötigen. Nachdem Sie diese Datei in einem lokalen Verzeichnis gespeichert haben, importieren Sie sie mithilfe des Befehls "Import-AzurePublishSettingsFile ".
Hinweis
Die Publishsettings-Datei enthält Ihre Anmeldeinformationen (nicht codiert), die zum Verwalten Ihrer Azure-Abonnements und -Dienste verwendet werden. Die bewährte Methode für die Sicherheit für diese Datei besteht darin, sie vorübergehend außerhalb Der Quellverzeichnisse (z. B. im Ordner "Bibliotheken\Dokumente") zu speichern und nach Abschluss des Imports zu löschen. Ein böswilliger Benutzer, der Zugriff auf die Publishsettings-Datei erhält, kann Ihre Azure-Dienste bearbeiten, erstellen und löschen.
Definieren Sie eine Reihe von Variablen, die Sie zum Erstellen Ihrer Cloud-IT-Infrastruktur verwenden.
$location = "West US" $affinityGroupName = "ContosoAG" $affinityGroupDescription = "Contoso SQL HADR Affinity Group" $affinityGroupLabel = "IaaS BI Affinity Group" $networkConfigPath = "C:\scripts\Network.netcfg" $virtualNetworkName = "ContosoNET" $storageAccountName = "<uniquestorageaccountname>" $storageAccountLabel = "Contoso SQL HADR Storage Account" $storageAccountContainer = "https://" + $storageAccountName + ".blob.core.windows.net/vhds/" $winImageName = (Get-AzureVMImage | where {$_.Label -like "Windows Server 2008 R2 SP1*"} | sort PublishedDate -Descending)[0].ImageName $sqlImageName = (Get-AzureVMImage | where {$_.Label -like "SQL Server 2012 SP1 Enterprise*"} | sort PublishedDate -Descending)[0].ImageName $dcServerName = "ContosoDC" $dcServiceName = "<uniqueservicename>" $availabilitySetName = "SQLHADR" $vmAdminUser = "AzureAdmin" $vmAdminPassword = "Contoso!000" $workingDir = "c:\scripts\"Achten Sie auf Folgendes, um sicherzustellen, dass Ihre Befehle später erfolgreich sind:
- Variablen $storageAccountName und $dcServiceName müssen eindeutig sein, da sie verwendet werden, um Ihr Cloudspeicherkonto bzw. Cloudserver im Internet zu identifizieren.
- Die Namen, die Sie für Variablen $affinityGroupName und $virtualNetworkName angeben, werden im Dokument für die virtuelle Netzwerkkonfiguration konfiguriert, das Sie später verwenden werden.
- $sqlImageName gibt den aktualisierten Namen des VM-Images an, das SQL Server 2012 Service Pack 1 Enterprise Edition enthält.
- Aus Gründen der Einfachheit ist Contoso!000 dasselbe Kennwort, das im gesamten Lernprogramm verwendet wird.
Erstellen Sie eine Affinitätsgruppe.
New-AzureAffinityGroup ` -Name $affinityGroupName ` -Location $location ` -Description $affinityGroupDescription ` -Label $affinityGroupLabelErstellen Sie ein virtuelles Netzwerk, indem Sie eine Konfigurationsdatei importieren.
Set-AzureVNetConfig ` -ConfigurationPath $networkConfigPathDie Konfigurationsdatei enthält das folgende XML-Dokument. Kurz gesagt, es gibt ein virtuelles Netzwerk namens ContosoNET in der Affinitätsgruppe namens ContosoAG an. Sie verfügt über den Adressraum 10.10.0.0/16 und verfügt über zwei Subnetze, 10.10.1.0/24 und 10.10.2.0/24, die das Front-Subnetz bzw. das Back-Subnetz sind. Das Front-Subnetz ist der Ort, an dem Sie Clientanwendungen wie Microsoft SharePoint platzieren können. Das Back-Subnetz ist der Ort, an dem Sie die SQL Server-VMs platzieren. Wenn Sie die $affinityGroupName und $virtualNetworkName Variablen früher ändern, müssen Sie auch die entsprechenden Namen unten ändern.
<NetworkConfiguration xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns="https://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration"> <VirtualNetworkConfiguration> <Dns /> <VirtualNetworkSites> <VirtualNetworkSite name="ContosoNET" AffinityGroup="ContosoAG"> <AddressSpace> <AddressPrefix>10.10.0.0/16</AddressPrefix> </AddressSpace> <Subnets> <Subnet name="Front"> <AddressPrefix>10.10.1.0/24</AddressPrefix> </Subnet> <Subnet name="Back"> <AddressPrefix>10.10.2.0/24</AddressPrefix> </Subnet> </Subnets> </VirtualNetworkSite> </VirtualNetworkSites> </VirtualNetworkConfiguration> </NetworkConfiguration> ```xmlErstellen Sie ein Speicherkonto, das der von Ihnen erstellten Affinitätsgruppe zugeordnet ist, und legen Sie es als das aktuelle Speicherkonto in Ihrem Abonnement fest.
New-AzureStorageAccount ` -StorageAccountName $storageAccountName ` -Label $storageAccountLabel ` -AffinityGroup $affinityGroupName Set-AzureSubscription ` -SubscriptionName (Get-AzureSubscription).SubscriptionName ` -CurrentStorageAccount $storageAccountNameErstellen Sie den Domänencontrollerserver im neuen Clouddienst und verfügbarkeitssatz.
New-AzureVMConfig ` -Name $dcServerName ` -InstanceSize Medium ` -ImageName $winImageName ` -MediaLocation "$storageAccountContainer$dcServerName.vhd" ` -DiskLabel "OS" | Add-AzureProvisioningConfig ` -Windows ` -DisableAutomaticUpdates ` -AdminUserName $vmAdminUser ` -Password $vmAdminPassword | New-AzureVM ` -ServiceName $dcServiceName ` –AffinityGroup $affinityGroupName ` -VNetName $virtualNetworkNameDiese Weitergeleiteten Befehle führen die folgenden Aktionen aus:
- New-AzureVMConfig erstellt eine VM-Konfiguration .
- Add-AzureProvisioningConfig gibt die Konfigurationsparameter eines eigenständigen Windows-Servers an.
- Add-AzureDataDisk fügt den Datenträger hinzu, den Sie zum Speichern von Active Directory-Daten verwenden, wobei die Zwischenspeicherungsoption auf "Keine" festgelegt ist.
- New-AzureVM erstellt einen neuen Clouddienst und erstellt die neue Azure-VM im neuen Clouddienst.
Warten Sie, bis die neue VM vollständig bereitgestellt wird, und laden Sie die Remotedesktopdatei in Ihr Arbeitsverzeichnis herunter. Da die neue Azure-VM eine lange Zeit für die Bereitstellung benötigt, fragt die
whileSchleife die neue VM weiterhin ab, bis sie einsatzbereit ist.$VMStatus = Get-AzureVM -ServiceName $dcServiceName -Name $dcServerName While ($VMStatus.InstanceStatus -ne "ReadyRole") { write-host "Waiting for " $VMStatus.Name "... Current Status = " $VMStatus.InstanceStatus Start-Sleep -Seconds 15 $VMStatus = Get-AzureVM -ServiceName $dcServiceName -Name $dcServerName } Get-AzureRemoteDesktopFile ` -ServiceName $dcServiceName ` -Name $dcServerName ` -LocalPath "$workingDir$dcServerName.rdp"
Der Domänencontrollerserver wurde jetzt erfolgreich bereitgestellt. Als Nächstes konfigurieren Sie die Active Directory-Domäne auf diesem Domänencontrollerserver. Lassen Sie das PowerShell-Fenster auf Ihrem lokalen Computer geöffnet. Sie verwenden es später erneut, um die beiden SQL Server-VMs zu erstellen.
Konfigurieren des Domänencontrollers
Stellen Sie eine Verbindung mit dem Domänencontrollerserver her, indem Sie die Remotedesktopdatei starten. Verwenden Sie den Benutzernamen "AzureAdmin" und das Kennwort "Contoso!000", den Sie beim Erstellen der neuen VM angegeben haben.
Öffnen Sie ein PowerShell-Fenster im Administratormodus.
Führen Sie den folgenden DCPROMO.EXE Befehl aus, um die corp.contoso.com Domäne mit den Datenverzeichnissen auf Laufwerk M einzurichten.
dcpromo.exe ` /unattend ` /ReplicaOrNewDomain:Domain ` /NewDomain:Forest ` /NewDomainDNSName:corp.contoso.com ` /ForestLevel:4 ` /DomainNetbiosName:CORP ` /DomainLevel:4 ` /InstallDNS:Yes ` /ConfirmGc:Yes ` /CreateDNSDelegation:No ` /DatabasePath:"C:\Windows\NTDS" ` /LogPath:"C:\Windows\NTDS" ` /SYSVOLPath:"C:\Windows\SYSVOL" ` /SafeModeAdminPassword:"Contoso!000"Nach Abschluss des Befehls wird der virtuelle Computer automatisch neu gestartet.
Stellen Sie erneut eine Verbindung mit dem Domänencontrollerserver her, indem Sie die Remotedesktopdatei starten. Melden Sie sich dieses Mal als CORP\Administrator an.
Öffnen Sie ein PowerShell-Fenster im Administratormodus, und importieren Sie das Active Directory PowerShell-Modul mithilfe des folgenden Befehls:
Import-Module ActiveDirectoryFühren Sie die folgenden Befehle aus, um der Domäne drei Benutzer hinzuzufügen.
$pwd = ConvertTo-SecureString "Contoso!000" -AsPlainText -Force New-ADUser ` -Name 'Install' ` -AccountPassword $pwd ` -PasswordNeverExpires $true ` -ChangePasswordAtLogon $false ` -Enabled $true New-ADUser ` -Name 'SQLSvc1' ` -AccountPassword $pwd ` -PasswordNeverExpires $true ` -ChangePasswordAtLogon $false ` -Enabled $true New-ADUser ` -Name 'SQLSvc2' ` -AccountPassword $pwd ` -PasswordNeverExpires $true ` -ChangePasswordAtLogon $false ` -Enabled $trueCORP\Install wird verwendet, um alles im Zusammenhang mit den SQL Server-Dienstinstanzen, dem Failovercluster und der Verfügbarkeitsgruppe zu konfigurieren. CORP\SQLSvc1 und CORP\SQLSvc2 werden als SQL Server-Dienstkonten für die beiden SQL Server-VMs verwendet.
Führen Sie als Nächstes die folgenden Befehle aus, um CORP\Install die Berechtigungen zur Erstellung von Computerobjekten in der Domäne zu erteilen.
Cd ad: $sid = new-object System.Security.Principal.SecurityIdentifier (Get-ADUser "Install").SID $guid = new-object Guid bf967a86-0de6-11d0-a285-00aa003049e2 $ace1 = new-object System.DirectoryServices.ActiveDirectoryAccessRule $sid,"CreateChild","Allow",$guid,"All" $corp = Get-ADObject -Identity "DC=corp,DC=contoso,DC=com" $acl = Get-Acl $corp $acl.AddAccessRule($ace1) Set-Acl -Path "DC=corp,DC=contoso,DC=com" -AclObject $aclDie oben angegebene GUID ist die GUID für den Computerobjekttyp. Das Corp\Install-Konto benötigt die Berechtigung " Alle Eigenschaften lesen " und " Computerobjekte erstellen ", um die Active Direct-Objekte für den Failovercluster zu erstellen. Die Berechtigung " Alle eigenschaften lesen " ist standardmäßig bereits für CORP\Install angegeben, sodass Sie sie nicht explizit erteilen müssen. Weitere Informationen zu Berechtigungen, die zum Erstellen des Failoverclusters erforderlich sind, finden Sie in der schrittweisen Anleitung zum Konfigurieren von Konten in Active Directory.
Nachdem Sie die Konfiguration von Active Directory und den Benutzerobjekten abgeschlossen haben, erstellen Sie zwei SQL Server-VMs und verbinden sie mit dieser Domäne.
Erstellen der SQL Server-VMs
Verwenden Sie weiterhin das PowerShell-Fenster, das auf Ihrem lokalen Computer geöffnet ist. Definieren Sie die folgenden zusätzlichen Variablen:
$domainName= "corp" $FQDN = "corp.contoso.com" $subnetName = "Back" $sqlServiceName = "<uniqueservicename>" $quorumServerName = "ContosoQuorum" $sql1ServerName = "ContosoSQL1" $sql2ServerName = "ContosoSQL2" $availabilitySetName = "SQLHADR" $dataDiskSize = 100 $dnsSettings = New-AzureDns -Name "ContosoBackDNS" -IPAddress "10.10.0.4"Die IP-Adresse 10.10.0.4 wird in der Regel der ersten VM zugewiesen, die Sie im Subnetz 10.10.0.0/16 Ihres virtuellen Azure-Netzwerks erstellen. Überprüfen Sie, ob dies die Adresse Ihres Domänencontrollerservers ist, indem Sie IPCONFIG ausführen.
Führen Sie die folgenden weitergeleiteten Befehle aus, um den ersten virtuellen Computer im Failovercluster namens ContosoQuorum zu erstellen:
New-AzureVMConfig ` -Name $quorumServerName ` -InstanceSize Medium ` -ImageName $winImageName ` -MediaLocation "$storageAccountContainer$quorumServerName.vhd" ` -AvailabilitySetName $availabilitySetName ` -DiskLabel "OS" | Add-AzureProvisioningConfig ` -WindowsDomain ` -AdminUserName $vmAdminUser ` -Password $vmAdminPassword ` -DisableAutomaticUpdates ` -Domain $domainName ` -JoinDomain $FQDN ` -DomainUserName $vmAdminUser ` -DomainPassword $vmAdminPassword | Set-AzureSubnet ` -SubnetNames $subnetName | New-AzureVM ` -ServiceName $sqlServiceName ` –AffinityGroup $affinityGroupName ` -VNetName $virtualNetworkName ` -DnsSettings $dnsSettingsBeachten Sie Folgendes in Bezug auf den obigen Befehl:
- New-AzureVMConfig erstellt eine VM-Konfiguration mit dem gewünschten Verfügbarkeitssatznamen. Die nachfolgenden virtuellen Computer werden mit demselben Verfügbarkeitssatznamen erstellt, sodass sie mit demselben Verfügbarkeitssatz verknüpft sind.
- Add-AzureProvisioningConfig verknüpft den virtuellen Computer mit der von Ihnen erstellten Active Directory-Domäne.
- Set-AzureSubnet platziert den virtuellen Computer im Hintergrundsubnetz.
- New-AzureVM erstellt einen neuen Clouddienst und erstellt die neue Azure-VM im neuen Clouddienst. Der Parameter DnsSettings gibt an, dass der DNS-Server für die Server im neuen Clouddienst die IP-Adresse 10.10.0.4 aufweist. Dies ist die IP-Adresse des Domänencontrollerservers. Dieser Parameter ist erforderlich, um die neuen VMs im Clouddienst zu aktivieren, um erfolgreich der Active Directory-Domäne beizutreten. Ohne diesen Parameter müssen Sie die IPv4-Einstellungen in Ihrer VM manuell festlegen, um den Domänencontrollerserver nach der Bereitstellung des virtuellen Computers als primären DNS-Server zu verwenden und dann der VM zur Active Directory-Domäne beizutreten.
Führen Sie die folgenden weitergeleiteten Befehle aus, um die SQL Server-VMs mit dem Namen ContosoSQL1 und ContosoSQL2 zu erstellen.
# Create ContosoSQL1... New-AzureVMConfig ` -Name $sql1ServerName ` -InstanceSize Large ` -ImageName $sqlImageName ` -MediaLocation "$storageAccountContainer$sql1ServerName.vhd" ` -AvailabilitySetName $availabilitySetName ` -HostCaching "ReadOnly" ` -DiskLabel "OS" | Add-AzureProvisioningConfig ` -WindowsDomain ` -AdminUserName $vmAdminUser ` -Password $vmAdminPassword ` -DisableAutomaticUpdates ` -Domain $domainName ` -JoinDomain $FQDN ` -DomainUserName $vmAdminUser ` -DomainPassword $vmAdminPassword | Set-AzureSubnet ` -SubnetNames $subnetName | Add-AzureEndpoint ` -Name "SQL" ` -Protocol "tcp" ` -PublicPort 1 ` -LocalPort 1433 | New-AzureVM ` -ServiceName $sqlServiceName # Create ContosoSQL2... New-AzureVMConfig ` -Name $sql2ServerName ` -InstanceSize Large ` -ImageName $sqlImageName ` -MediaLocation "$storageAccountContainer$sql2ServerName.vhd" ` -AvailabilitySetName $availabilitySetName ` -HostCaching "ReadOnly" ` -DiskLabel "OS" | Add-AzureProvisioningConfig ` -WindowsDomain ` -AdminUserName $vmAdminUser ` -Password $vmAdminPassword ` -DisableAutomaticUpdates ` -Domain $domainName ` -JoinDomain $FQDN ` -DomainUserName $vmAdminUser ` -DomainPassword $vmAdminPassword | Set-AzureSubnet ` -SubnetNames $subnetName | Add-AzureEndpoint ` -Name "SQL" ` -Protocol "tcp" ` -PublicPort 2 ` -LocalPort 1433 | New-AzureVM ` -ServiceName $sqlServiceNameBeachten Sie Folgendes in Bezug auf die oben aufgeführten Befehle:
- New-AzureVMConfig verwendet denselben Verfügbarkeitssatznamen wie der Domänencontrollerserver und verwendet das SQL Server 2012 Service Pack 1 Enterprise Edition-Image im Katalog des virtuellen Computers. Außerdem wird die Festplatte des Betriebssystems auf reines Lese-Caching (kein Schreib-Caching) festgelegt. Es wird empfohlen, die Datenbankdateien auf einen separaten Datenträger zu migrieren, den Sie an die VM anfügen, und es ohne Lese- oder Schreibzwischenspeicherung zu konfigurieren. Das nächste Beste ist jedoch, die Schreibzwischenspeicherung auf dem Betriebssystemdatenträger zu entfernen, da Sie keine Lesezwischenspeicherung auf dem Betriebssystemdatenträger entfernen können.
- Add-AzureProvisioningConfig verknüpft den virtuellen Computer mit der von Ihnen erstellten Active Directory-Domäne.
- Set-AzureSubnet platziert den virtuellen Computer im Hintergrundsubnetz.
- Add-AzureEndpoint fügt Zugriffsendpunkte hinzu, damit Clientanwendungen auf diese SQL Server-Diensteinstanzen im Internet zugreifen können. Unterschiedliche Ports werden ContosoSQL1 und ContosoSQL2 zugewiesen.
- New-AzureVM erstellt die neue SQL Server-VM im selben Clouddienst wie ContosoQuorum. Sie müssen die virtuellen Computer im selben Clouddienst platzieren, wenn sie sich in demselben Verfügbarkeitssatz befinden sollen.
Warten Sie, bis jeder virtuelle Computer vollständig bereitgestellt wird, und warten Sie, bis jeder virtuelle Computer seine Remotedesktopdatei in Ihr Arbeitsverzeichnis herunterladen kann. Die
forSchleife durchläuft die drei neuen virtuellen Maschinen und führt die Befehle in den geschweiften Klammern der obersten Ebene für jede von ihnen aus.Foreach ($VM in $VMs = Get-AzureVM -ServiceName $sqlServiceName) { write-host "Waiting for " $VM.Name "..." # Loop until the VM status is "ReadyRole" While ($VM.InstanceStatus -ne "ReadyRole") { write-host " Current Status = " $VM.InstanceStatus Start-Sleep -Seconds 15 $VM = Get-AzureVM -ServiceName $VM.ServiceName -Name $VM.InstanceName } write-host " Current Status = " $VM.InstanceStatus # Download remote desktop file Get-AzureRemoteDesktopFile -ServiceName $VM.ServiceName -Name $VM.InstanceName -LocalPath "$workingDir$($VM.InstanceName).rdp" }Die SQL Server-VMs werden jetzt bereitgestellt und ausgeführt, aber sie werden mit SQL Server mit Standardoptionen installiert.
Initialisieren Sie die VMs des Failoverclusters
In diesem Abschnitt müssen Sie die drei Server ändern, die Sie im Failovercluster und in der SQL Server-Installation verwenden. Dies gilt insbesondere in folgenden Fällen:
Alle Server: Sie müssen das Failover-Clustering-Feature installieren.
Alle Server: Sie müssen CORP\Install als Computeradministrator hinzufügen.
Nur ContosoSQL1 und ContosoSQL2: Sie müssen CORP \Install als Sysadmin-Rolle in der Standarddatenbank hinzufügen.
Nur ContosoSQL1 und ContosoSQL2: Sie müssen NT AUTHORITY\System als Anmeldung mit den folgenden Berechtigungen hinzufügen:
- Ändern einer Beliebigen Verfügbarkeitsgruppe
- SQL verbinden
- Serverstatus anzeigen
Nur ContosoSQL1 und ContosoSQL2: Das TCP-Protokoll ist bereits auf der SQL Server-VM aktiviert. Sie müssen die Firewall jedoch weiterhin für den Remotezugriff von SQL Server öffnen.
Jetzt können Sie beginnen. Führen Sie ab ContosoQuorum die folgenden Schritte aus:
Stellen Sie eine Verbindung mit ContosoQuorum her, indem Sie die Remotedesktopdateien starten. Verwenden Sie den Benutzernamen "AzureAdmin " und das Kennwort "Contoso!000", den Sie beim Erstellen der virtuellen Computer angegeben haben.
Stellen Sie sicher, dass die Computer erfolgreich mit corp.contoso.com verbunden wurden.
Warten Sie, bis die SQL Server-Installation die Ausführung der automatisierten Initialisierungsaufgaben abgeschlossen hat, bevor Sie fortfahren.
Öffnen Sie ein PowerShell-Fenster im Administratormodus.
Installieren Sie die Windows-Failoverclustering-Funktion.
Import-Module ServerManager Add-WindowsFeature Failover-ClusteringFügen Sie CORP\Install als lokaler Administrator hinzu.
net localgroup administrators "CORP\Install" /AddMelden Sie sich bei ContosoQuorum ab. Sie sind jetzt mit diesem Server fertig.
logoff.exe
Initialisieren Sie als Nächstes ContosoSQL1 und ContosoSQL2. Führen Sie die folgenden Schritte aus, die für beide SQL Server-VMs identisch sind.
Stellen Sie eine Verbindung mit den beiden SQL Server-VMs her, indem Sie die Remotedesktopdateien starten. Verwenden Sie den Benutzernamen "AzureAdmin " und das Kennwort "Contoso!000", den Sie beim Erstellen der virtuellen Computer angegeben haben.
Stellen Sie sicher, dass die Computer erfolgreich mit corp.contoso.com verbunden wurden.
Warten Sie, bis die SQL Server-Installation die Ausführung der automatisierten Initialisierungsaufgaben abgeschlossen hat, bevor Sie fortfahren.
Öffnen Sie ein PowerShell-Fenster im Administratormodus.
Installieren Sie das Windows-Feature für Failover-Clustering.
Import-Module ServerManager Add-WindowsFeature Failover-ClusteringFügen Sie CORP\Install als lokaler Administrator hinzu.
net localgroup administrators "CORP\Install" /AddImportieren Sie den SQL Server PowerShell-Anbieter.
Set-ExecutionPolicy -Execution RemoteSigned -Force Import-Module -Name "sqlps" -DisableNameCheckingFügen Sie CORP\Install als sysadmin-Rolle für die Standardmäßige SQL Server-Instanz hinzu.
net localgroup administrators "CORP\Install" /Add Invoke-SqlCmd -Query "EXEC sp_addsrvrolemember 'CORP\Install', 'sysadmin'" -ServerInstance "."Fügen Sie NT AUTHORITY\System als Anmeldung mit den oben beschriebenen drei Berechtigungen hinzu.
Invoke-SqlCmd -Query "CREATE LOGIN [NT AUTHORITY\SYSTEM] FROM WINDOWS" -ServerInstance "." Invoke-SqlCmd -Query "GRANT ALTER ANY AVAILABILITY GROUP TO [NT AUTHORITY\SYSTEM] AS SA" -ServerInstance "." Invoke-SqlCmd -Query "GRANT CONNECT SQL TO [NT AUTHORITY\SYSTEM] AS SA" -ServerInstance "." Invoke-SqlCmd -Query "GRANT VIEW SERVER STATE TO [NT AUTHORITY\SYSTEM] AS SA" -ServerInstance "."Öffnen Sie die Firewall für den Remotezugriff von SQL Server.
netsh advfirewall firewall add rule name='SQL Server (TCP-In)' program='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\sqlservr.exe' dir=in action=allow protocol=TCPMelden Sie sich bei beiden virtuellen Computern ab.
logoff.exe
Schließlich können Sie die Verfügbarkeitsgruppe konfigurieren. Sie verwenden den SQL Server PowerShell-Anbieter, um alle Arbeiten an ContosoSQL1 auszuführen.
Konfigurieren der Verfügbarkeitsgruppe
Stellen Sie erneut eine Verbindung mit ContosoSQL1 her, indem Sie die Remotedesktopdateien starten. Statt sich mit dem Computerkonto anzumelden, melden Sie sich mit CORP\Install an.
Öffnen Sie ein PowerShell-Fenster im Administratormodus.
Definieren Sie die folgenden Variablen:
$server1 = "ContosoSQL1" $server2 = "ContosoSQL2" $serverQuorum = "ContosoQuorum" $acct1 = "CORP\SQLSvc1" $acct2 = "CORP\SQLSvc2" $password = "Contoso!000" $clusterName = "Cluster1" $timeout = New-Object System.TimeSpan -ArgumentList 0, 0, 30 $db = "MyDB1" $backupShare = "\\$server1\backup" $quorumShare = "\\$server1\quorum" $ag = "AG1"Importieren Sie den SQL Server PowerShell-Anbieter.
Set-ExecutionPolicy RemoteSigned -Force Import-Module "sqlps" -DisableNameCheckingÄndern Sie das SQL Server-Dienstkonto für ContosoSQL1 in CORP\SQLSvc1.
$wmi1 = new-object ("Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer") $server1 $wmi1.services | where {$_.Type -eq 'SqlServer'} | foreach{$_.SetServiceAccount($acct1,$password)} $svc1 = Get-Service -ComputerName $server1 -Name 'MSSQLSERVER' $svc1.Stop() $svc1.WaitForStatus([System.ServiceProcess.ServiceControllerStatus]::Stopped,$timeout) $svc1.Start(); $svc1.WaitForStatus([System.ServiceProcess.ServiceControllerStatus]::Running,$timeout)Ändern Sie das SQL Server-Dienstkonto für ContosoSQL2 in CORP\SQLSvc2.
$wmi2 = new-object ("Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer") $server2 $wmi2.services | where {$_.Type -eq 'SqlServer'} | foreach{$_.SetServiceAccount($acct2,$password)} $svc2 = Get-Service -ComputerName $server2 -Name 'MSSQLSERVER' $svc2.Stop() $svc2.WaitForStatus([System.ServiceProcess.ServiceControllerStatus]::Stopped,$timeout) $svc2.Start(); $svc2.WaitForStatus([System.ServiceProcess.ServiceControllerStatus]::Running,$timeout)Laden Sie CreateAzureFailoverCluster.ps1 aus Erstellen Failovercluster für Always On-Verfügbarkeitsgruppen in Azure VM in das lokale Arbeitsverzeichnis herunter. Sie nutzen dieses Skript, um einen funktionsfähigen Failover-Cluster zu erstellen. Wichtige Informationen zur Interaktion von Windows-Failoverclustering mit dem Azure-Netzwerk finden Sie unter Hohe Verfügbarkeit und Notfallwiederherstellung für SQL Server auf virtuellen Azure-Computern.
Wechseln Sie zu Ihrem Arbeitsverzeichnis, und erstellen Sie den Failovercluster mit dem heruntergeladenen Skript.
Set-ExecutionPolicy Unrestricted -Force .\CreateAzureFailoverCluster.ps1 -ClusterName "$clusterName" -ClusterNode "$server1","$server2","$serverQuorum"Aktivieren Sie AlwaysOn-Verfügbarkeitsgruppen für die standardmäßigen SQL Server-Instanzen in ContosoSQL1 und ContosoSQL2.
Enable-SqlAlwaysOn ` -Path SQLSERVER:\SQL\$server1\Default ` -Force Enable-SqlAlwaysOn ` -Path SQLSERVER:\SQL\$server2\Default ` -NoServiceRestart $svc2.Stop() $svc2.WaitForStatus([System.ServiceProcess.ServiceControllerStatus]::Stopped,$timeout) $svc2.Start(); $svc2.WaitForStatus([System.ServiceProcess.ServiceControllerStatus]::Running,$timeout)Erstellen Sie ein Sicherungsverzeichnis, und erteilen Sie Berechtigungen für die SQL Server-Dienstkonten. Sie verwenden dieses Verzeichnis, um die Verfügbarkeitsdatenbank für das sekundäre Replikat vorzubereiten.
$backup = "C:\backup" New-Item $backup -ItemType directory net share backup=$backup "/grant:$acct1,FULL" "/grant:$acct2,FULL" icacls.exe "$backup" /grant:r ("$acct1" + ":(OI)(CI)F") ("$acct2" + ":(OI)(CI)F")Erstellen Sie eine Datenbank auf ContosoSQL1 namens MyDB1, übernehmen Sie sowohl eine vollständige Sicherung als auch eine Protokollsicherung, und stellen Sie sie auf ContosoSQL2 mit der OPTION WITH NORECOVERY wieder her.
Invoke-SqlCmd -Query "CREATE database $db" Backup-SqlDatabase -Database $db -BackupFile "$backupShare\db.bak" -ServerInstance $server1 Backup-SqlDatabase -Database $db -BackupFile "$backupShare\db.log" -ServerInstance $server1 -BackupAction Log Restore-SqlDatabase -Database $db -BackupFile "$backupShare\db.bak" -ServerInstance $server2 -NoRecovery Restore-SqlDatabase -Database $db -BackupFile "$backupShare\db.log" -ServerInstance $server2 -RestoreAction Log -NoRecoveryErstellen Sie die Verfügbarkeitsgruppenendpunkte auf den SQL Server-VMs, und legen Sie die richtigen Berechtigungen für die Endpunkte fest.
$endpoint = New-SqlHadrEndpoint MyMirroringEndpoint ` -Port 5022 ` -Path "SQLSERVER:\SQL\$server1\Default" Set-SqlHadrEndpoint ` -InputObject $endpoint ` -State "Started" $endpoint = New-SqlHadrEndpoint MyMirroringEndpoint ` -Port 5022 ` -Path "SQLSERVER:\SQL\$server2\Default" Set-SqlHadrEndpoint ` -InputObject $endpoint ` -State "Started" Invoke-SqlCmd -Query "CREATE LOGIN [$acct2] FROM WINDOWS" -ServerInstance $server1 Invoke-SqlCmd -Query "GRANT CONNECT ON ENDPOINT::[MyMirroringEndpoint] TO [$acct2]" -ServerInstance $server1 Invoke-SqlCmd -Query "CREATE LOGIN [$acct1] FROM WINDOWS" -ServerInstance $server2 Invoke-SqlCmd -Query "GRANT CONNECT ON ENDPOINT::[MyMirroringEndpoint] TO [$acct1]" -ServerInstance $server2Erstellen Sie die Verfügbarkeitsreplikate.
$primaryReplica = New-SqlAvailabilityReplica ` -Name $server1 ` -EndpointURL "TCP://$server1.corp.contoso.com:5022" ` -AvailabilityMode "SynchronousCommit" ` -FailoverMode "Automatic" ` -Version 11 ` -AsTemplate $secondaryReplica = New-SqlAvailabilityReplica ` -Name $server2 ` -EndpointURL "TCP://$server2.corp.contoso.com:5022" ` -AvailabilityMode "SynchronousCommit" ` -FailoverMode "Automatic" ` -Version 11 ` -AsTemplateErstellen Sie schließlich die Verfügbarkeitsgruppe, und verbinden Sie das sekundäre Replikat mit der Verfügbarkeitsgruppe.
New-SqlAvailabilityGroup ` -Name $ag ` -Path "SQLSERVER:\SQL\$server1\Default" ` -AvailabilityReplica @($primaryReplica,$secondaryReplica) ` -Database $db Join-SqlAvailabilityGroup ` -Path "SQLSERVER:\SQL\$server2\Default" ` -Name $ag Add-SqlAvailabilityDatabase ` -Path "SQLSERVER:\SQL\$server2\Default\AvailabilityGroups\$ag" ` -Database $db
Nächste Schritte
Sie haben sql Server Always On jetzt erfolgreich implementiert, indem Sie eine Verfügbarkeitsgruppe in Azure erstellen. Informationen zum Konfigurieren eines Listeners für diese Verfügbarkeitsgruppe finden Sie unter Konfigurieren eines ILB-Listeners für AlwaysOn-Verfügbarkeitsgruppen in Azure.
Weitere Informationen zur Verwendung von SQL Server in Azure finden Sie unter SQL Server auf virtuellen Azure-Computern.