(0) exportieren Drucken
Alle erweitern

Lernprogramm: AlwaysOn-Verfügbarkeitsgruppen in Azure (PowerShell)

Letzte Aktualisierung: Oktober 2013

noteHinweis
Das benutzeroberflächenbasierte Lernprogramm für das gleiche Szenario finden Sie unter Testumgebung: Erstellen einer AlwaysOn-Verfügbarkeitsgruppe in Azure von Anfang bis Ende.

Mit virtuellen Azure-Computern (VMs) haben Datenbankadministratoren die Möglichkeit, niedrigere Kosten für ein hoch verfügbares SQL Server-System zu implementieren. In diesem Lernprogramm erfahren Sie, wie Sie eine Verfügbarkeitsgruppe mit SQL Server AlwaysOn von Anfang bis Ende in einer Azure-Umgebung implementieren. Nach Abschluss des Lernprogramms besteht die SQL Server AlwaysOn-Lösung in Azure aus den folgenden Elementen:

  • Einem virtuellen Netzwerk, das mehrere Subnetze, einschließlich eines Front-End- und eines Back-End-Subnetzes, enthält

  • Einem Domänencontroller mit einer Active Directory-Domäne (AD)

  • Zwei virtuellen SQL Server-Computern, die im Back-End-Subnetz bereitgestellt und mit der AD-Domäne verknüpft wurden

  • Einem WSFC-Cluster mit 3 Knoten und dem Quorummodell Knotenmehrheit

  • Einer Verfügbarkeitsgruppe mit zwei synchronem Commit-Replikaten einer Verfügbarkeitsdatenbank

Dieses Szenario wird aufgrund seiner Einfachheit, nicht wegen seiner Wirtschaftlichkeit oder anderer Faktoren in Azure ausgewählt. Sie können beispielsweise die Anzahl der virtuellen Computer für eine Verfügbarkeitsgruppe mit zwei Replikaten minimieren, um in Azure Serverstunden zu sparen, indem Sie den Domänencontroller als Quorumdateifreigabenzeugen in einem WSFC-Cluster mit zwei Knoten verwenden. Mit dieser Methode wird die Anzahl der virtuellen Computer im Vergleich zur obigen Konfiguration um einen verringert.

In diesem Lernprogramm sollen die Schritte gezeigt werden, die zum Einrichten der oben beschriebenen Lösungen erforderlich sind, ohne auf alle Details der einzelnen Schritte einzugehen. Statt Ihnen die GUI-Konfigurationsschritte zu zeigen, wird daher PowerShell-Skripterstellung verwendet, um Sie rasch durch die einzelnen Schritte zu führen. Es wird Folgendes angenommen:

  1. Importieren Sie in einem PowerShell-Fenster auf dem lokalen Computer das Azure-Modul, laden Sie eine Veröffentlichungseinstellungsdatei auf Ihren Computer herunter, und stellen Sie eine Verbindung zwischen der PowerShell-Sitzung und Ihrem Azure-Abonnement her, 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-AzurePublishgSettingsFile generiert automatisch ein Verwaltungszertifikat mit Azure und lädt es auf den Computer herunter. Ein Browser wird automatisch geöffnet, und Sie werden aufgefordert, die Microsoft-Kontoanmeldeinformationen für das Azure-Abonnement einzugeben. Die heruntergeladene PUBLISHINGSETTINGS-Datei enthält alle Informationen, die Sie zum Verwalten des Azure-Abonnements benötigen. Nachdem Sie diese Datei in einem lokalen Verzeichnis gespeichert haben, importieren Sie sie mithilfe des Befehls Import-AzurePublishSettingsFile.

    securityHinweis zur Sicherheit
    Die Datei publishsettings enthält die (nicht codierten) Anmeldeinformationen, die zur Verwaltung der Azure-Abonnements und -Dienste verwendet werden. Die bewährte Sicherheitsmethode für diese Datei besteht darin, sie vorübergehend außerhalb von Quellverzeichnissen (z. B. im Ordner Libraries\Documents) zu speichern und nach dem Import zu löschen. Ein böswilliger Benutzer, der Zugriff auf die Datei publishsettings erlangt, kann die Azure-Dienste erstellen, bearbeiten und löschen.

  2. Definieren Sie eine Reihe von Variablen, die Sie verwenden, um die Cloud-IT-Infrastruktur zu erstellen.

    $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\" 
    

    Beachten Sie Folgendes, um sicherzustellen, dass die Befehle später erfolgreich ausgeführt werden:

    • Die Variablen $storageAccountName und $dcServiceName müssen eindeutig sein, da sie verwendet werden, um das Cloudspeicherkonto bzw. den Cloudserver im Internet zu identifizieren.

    • Die Namen, die für die Variablen $affinityGroupName und $virtualNetworkName angegeben wurden, werden im Dokument zur Konfiguration des virtuellen Netzwerks konfiguriert, das Sie später verwenden.

    • $sqlImageName gibt den aktualisierten Namen des Images des virtuellen Computers an, das SQL Server 2012 Service Pack 1 Enterprise Edition enthält.

    • Zur Vereinfachung wird das Kennwort Contoso!000 während des gesamten Lernprogramms verwendet.

  3. Erstellen Sie eine Affinitätsgruppe.

    New-AzureAffinityGroup `
        -Name $affinityGroupName `
        -Location $location `
        -Description $affinityGroupDescription `
        -Label $affinityGroupLabel
    
  4. Erstellen Sie ein virtuelles Netzwerk, indem Sie eine Konfigurationsdatei importieren.

    Set-AzureVNetConfig `
        -ConfigurationPath $networkConfigPath
    

    Die Konfigurationsdatei enthält das folgende XML-Dokument. Kurz gefasst gibt sie ein virtuelles Netzwerk mit dem Namen ContosoNET in der Affinitätsgruppe ContosoAG an, und sie enthält den Adressraum 10.10.0.0/16 und zwei Subnetze, 10.10.1.0/24 und 10.10.2.0/24, die das Frontend- und das Backend-Subnetz sind. Das Front-End-Subnetz ist der Teil, in dem Sie Clientanwendungen wie Microsoft SharePoint platzieren können, und im Back-End-Subnetz platzieren Sie die virtuellen SQL Server-Computer. Wenn Sie an früherer Stelle die Variablen $affinityGroupName und $virtualNetworkName geändert haben, müssen Sie auch die entsprechenden Namen unten ändern.

    <NetworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://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>
    
  5. Erstellen Sie ein Speicherkonto, das der erstellten Affinitätsgruppe zugeordnet ist, und legen Sie es als aktuelles Speicherkonto im Abonnement fest.

    New-AzureStorageAccount `
        -StorageAccountName $storageAccountName `
        -Label $storageAccountLabel `
        -AffinityGroup $affinityGroupName 
    Set-AzureSubscription `
        -SubscriptionName (Get-AzureSubscription).SubscriptionName `
        -CurrentStorageAccount $storageAccountName
    
  6. Erstellen Sie den DC-Server im neuen Cloud-Dienst und in der Verfügbarkeitsgruppe.

    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 $virtualNetworkName
    

    Diese Reihe von weitergeleiteten Befehlen führt die folgenden Schritte aus:

    • New-AzureVMConfig erstellt eine Konfiguration virtueller Computer.

    • 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; die Option für die Zwischenspeicherung ist auf Nonefestgelegt.

    • New-AzureVM erstellt einen neuen Cloud-Dienst und erstellt den neuen virtuellen Azure-Computer im neuen Cloud-Dienst.

  7. Warten Sie, bis der neue virtuelle Computer vollständig bereitgestellt ist, und laden Sie die Remotedesktopdatei in das Arbeitsverzeichnis herunter. Da die Bereitstellung des neuen virtuellen Azure-Computers eine lange Zeit in Anspruch nimmt, fragt die WHILE-Schleife den neuen virtuellen Computer so lange ab, bis er zur Verwendung bereit 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 DC-Server ist jetzt erfolgreich bereitgestellt. Anschließend konfigurieren Sie die Active Directory-Domäne auf diesem DC-Server. Lassen Sie das PowerShell-Fenster auf dem lokalen Computer geöffnet. Sie verwenden es später erneut, um die beiden virtuellen SQL Server-Computer zu erstellen.

  1. Stellen Sie eine Verbindung zum DC-Server her, indem Sie die Remotedesktopdatei starten. Verwenden Sie den Benutzernamen AzureAdmin und das Kennwort Contoso!000 des Computeradministrators, die Sie beim Erstellen des neuen virtuellen Computers angegeben haben.

  2. Öffnen Sie ein Windows PowerShell-Fenster im Administratormodus.

  3. Führen Sie den folgenden DCPROMO.EXE-Befehl aus, um die corp.contoso.com-Domäne einzurichten. Die Datenverzeichnisse befinden sich auf dem Laufwerk M.

    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"
    

    Sobald der Befehl abgeschlossen ist, startet der virtuelle Computer automatisch neu.

  4. Stellen Sie erneut eine Verbindung zum DC-Server her, indem Sie die Remotedesktopdatei starten. Melden Sie sich dieses Mal als CORP\Administrator an.

  5. Öffnen Sie ein PowerShell-Fenster im Administratormodus und importieren Sie das Active Directory-PowerShell-Modul mit dem folgenden Befehl:

    Import-Module ActiveDirectory
    
  6. Fü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 $true
    

    CORP\Install wird verwendet, um alle Elemente im Zusammenhang mit den SQL Server-Dienstinstanzen, dem WSFC-Cluster und der Verfügbarkeitsgruppe zu konfigurieren. CORP\SQLSvc1 und CORP\SQLSvc2 werden als SQL Server-Dienstkonten für die beiden virtuellen SQL Server-Computer verwendet.

  7. Führen Sie dann die folgenden Befehle aus, um CORP\Install die Berechtigungen zum Erstellen 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 $acl 
    

    Die oben angegebene GUID ist die GUID für den Computerobjekttyp. Das CORP\Install-Konto erfordert die Berechtigungen Read All Properties und Create Computer Objects, um die Active Directory-Objekte für den WSFC-Cluster zu erstellen. Die Berechtigung Read All Properties ist CORP\Install bereits standardmäßig erteilt, sodass sie nicht ausdrücklich erteilt werden muss. Weitere Informationen zu den Berechtigungen, die erforderlich sind, um den WSFC-Cluster erstellen, finden Sie unter Schrittweise Anleitung für Failovercluster: Konfigurieren von Konten in Active Directory.

Nachdem Sie die Konfiguration von Active Directory und der Benutzerobjekte abgeschlossen haben, erstellen Sie zwei virtuelle SQL Server-Computer und verknüpfen Sie sie mit dieser Domäne.

  1. Verwenden Sie weiter das PowerShell-Fenster, das auf dem lokalen Computer geöffnet ist. Definieren Sie zusätzlich die folgenden 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 dem ersten virtuellen Computer zugewiesen, den Sie im Subnetz 10.10.0.0/16 des virtuellen Azure-Netzwerks erstellen. Sie sollten überprüfen, ob dies die Adresse des DC-Servers ist, indem Sie IPCONFIG ausführen.

  2. Führen Sie die folgenden weitergeleiteten Befehle aus, um den ersten virtuellen im WSFC-Cluster mit dem Namen 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 $dnsSettings
    

    Beachten Sie Folgendes bezüglich des obigen Befehls:

    • New-AzureVMConfig erstellt eine Konfiguration virtueller Computer mit dem gewünschten Verfügbarkeitsgruppennamen. Die folgenden virtuellen Computer werden mit demselben Verfügbarkeitsgruppennamen erstellt, damit sie mit derselben Verfügbarkeitsgruppe verknüpft werden.

    • Add-AzureProvisioningConfig verknüpft den virtuellen Computer mit der Active Directory-Domäne, die Sie erstellt haben.

    • Set-AzureSubnet platziert den virtuellen Computer im Back-Subnetz.

    • New-AzureVM erstellt einen neuen Cloud-Dienst und erstellt den neuen virtuellen Azure-Computer im neuen Cloud-Dienst. Der Parameter DnsSettings gibt an, dass der DNS-Server für die Server im neuen Cloud-Dienst über die IP-Adresse 10.10.0.4 verfügt, die der IP-Adresse des DC-Servers entspricht. Dieser Parameter ist erforderlich, damit die neuen virtuellen Computer im Cloud-Dienst erfolgreich mit der Active Directory-Domäne verknüpft werden können. Ohne diesen Parameter müssen Sie die IPv4-Einstellungen des virtuellen Computers manuell festlegen, um den DC-Server als primären DNS-Server zu verwenden, nachdem der virtuelle Computer wurde, und dann den virtuellen Computer mit der Active Directory-Domäne verknüpfen.

  3. Führen Sie die folgenden weitergeleiteten Befehle aus, um die virtuellen SQL Server-Computer mit den 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 $sqlServiceName
    

    Beachten Sie Folgendes bezüglich der obigen Befehle:

    • New-AzureVMConfig verwendet den gleichen Verfügbarkeitsgruppennamen wie der DC-Server und das Image der SQL Server 2012 Service Pack 1 Enterprise Edition im Katalog der virtuellen Computer. Zudem wird der Betriebssystemdatenträger nur auf Lesen (nicht Schreiben) des Zwischenspeichers festgelegt. Es wird empfohlen, dass Sie die Datenbankdateien zu einem separaten Datenträger migrieren, den Sie an den virtuellen Computer anfügen und ohne Lesen oder Schreiben des Zwischenspeichers konfigurieren. Als zweitbeste Möglichkeit kann das Schreiben im Zwischenspeicher auf dem Betriebssystemdatenträger entfernt werden, da das Lesen des Zwischenspeichers auf dem Betriebssystemdatenträger nicht entfernt werden kann.

    • Add-AzureProvisioningConfig verknüpft den virtuellen Computer mit der Active Directory-Domäne, die Sie erstellt haben.

    • Set-AzureSubnet platziert den virtuellen Computer im Back-Subnetz.

    • Add-AzureEndpoint fügt Zugriffsendpunkte hinzu, damit Clientanwendungen auf diese SQL Server-Dienstinstanzen im Internet zugreifen können. ContosoSQL1 und ContosoSQL2 werden unterschiedliche Ports zugewiesen.

    • New-AzureVM erstellt den neuen virtuellen SQL Server-Computer im gleichen Cloud-Dienst wie ContosoQuorum. Sie müssen die virtuellen Computer im gleichen Cloud-Dienst platzieren, wenn sie in der gleichen Verfügbarkeitsgruppe enthalten sein sollen.

  4. Warten Sie, bis jeder virtuelle Computer vollständig bereitgestellt ist, und laden Sie die zugehörige Remotedesktopdatei in das Arbeitsverzeichnis herunter. Die for-Schleife durchläuft die drei neuen virtuellen Computer und führt für jeden von ihnen die Befehle in den geschweiften Klammern der obersten Ebene 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 virtuellen SQL Server-Computer sind jetzt bereitgestellt und werden ausgeführt, aber sie sind mit SQL Server mit Standardoptionen installiert.

In diesem Abschnitt müssen Sie die drei Server ändern, die Sie im WSFC-Cluster und in der SQL Server-Installation verwenden. Dies gilt insbesondere in folgenden Fällen:

  • (Alle Server) Sie müssen die Funktion Failover Clustering 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 Anmeldenamen mit folgenden Berechtigungen hinzufügen:

    • Beliebige Verfügbarkeitsgruppe ändern

    • SQL verbinden

    • Serverstatus anzeigen

  • (Nur ContosoSQL1 und ContosoSQL2) Das TCP-Protokoll ist bereits auf dem virtuellen SQL Server-Computer aktiviert. Sie müssen jedoch noch die Firewall für den Remotezugriff von SQL Server öffnen.

Jetzt können Sie beginnen. Beginnen Sie mit ContosoQuorum und führen Sie die folgenden Schritte durch:

  1. Stellen Sie eine Verbindung mit ContosoQuorum her, indem Sie die Remotedesktopdateien starten. Verwenden Sie den Benutzernamen AzureAdmin und das Kennwort Contoso!000 des Computeradministrators, die Sie beim Erstellen der virtuellen Computer angegeben haben.

  2. Stellen Sie sicher, dass die Verknüpfung der Computer mit corp.contoso.com erfolgreich war.

  3. Warten Sie, bis die automatischen Initialisierungsaufgaben der SQL Server-Installation abgeschlossen sind, bevor Sie fortfahren.

  4. Öffnen Sie ein Windows PowerShell-Fenster im Administratormodus.

  5. Installieren Sie die Windows-Funktion Failoverclustering.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering 
    
  6. Fügen Sie CORP\Install als lokalen Administrator hinzu.

    net localgroup administrators "CORP\Install" /Add
    
  7. Melden Sie sich bei ContosoQuorum ab. Sie sind jetzt diesem Server fertig.

    logoff.exe 
    

Als Nächstes initialisieren Sie ContosoSQL1 und ContosoSQL2. Führen Sie die folgenden Schritte durch, die für beide virtuelle SQL Server-Computer identisch sind.

  1. Stellen Sie eine Verbindung zu den beiden virtuellen SQL Server-Computern her, indem Sie die Remotedesktopdateien starten. Verwenden Sie den Benutzernamen AzureAdmin und das Kennwort Contoso!000 des Computeradministrators, die Sie beim Erstellen der virtuellen Computer angegeben haben.

  2. Stellen Sie sicher, dass die Verknüpfung der Computer mit corp.contoso.com erfolgreich war.

  3. Warten Sie, bis die automatischen Initialisierungsaufgaben der SQL Server-Installation abgeschlossen sind, bevor Sie fortfahren.

  4. Öffnen Sie ein Windows PowerShell-Fenster im Administratormodus.

  5. Installieren Sie die Windows-Funktion Failoverclustering.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering 
    
  6. Fügen Sie CORP\Install als lokalen Administrator hinzu.

    net localgroup administrators "CORP\Install" /Add
    
  7. Importieren Sie den SQL Server PowerShell-Anbieter.

    Set-ExecutionPolicy -Execution RemoteSigned -Force
    Import-Module -Name "sqlps" -DisableNameChecking
    
  8. Fügen Sie CORP\Install als die sysadmin-Rolle für die SQL Server-Standardinstanz hinzu.

    net localgroup administrators "CORP\Install" /Add
    Invoke-SqlCmd -Query "EXEC sp_addsrvrolemember 'CORP\Install', 'sysadmin'" -ServerInstance "."
    
  9. Fügen Sie NT AUTHORITY\System mit den drei oben beschriebenen Berechtigungen als Anmeldenamen 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 "."
    
  10. Ö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=TCP
    
  11. Melden Sie sich bei den beiden virtuellen Computern ab.

    logoff.exe
    

Jetzt sind Sie bereit, die Verfügbarkeitsgruppe zu konfigurieren. Sie verwenden den SQL Server PowerShell-Anbieter, um alle Anpassungen an ContosoSQL1 auszuführen.

  1. Stellen Sie erneut eine Verbindung mit ContosoSQL1 her, indem Sie die Remotedesktopdateien starten. Statt sich mithilfe des Computerkontos anzumelden, verwenden Sie CORP/Install.

  2. Öffnen Sie ein Windows PowerShell-Fenster im Administratormodus.

  3. 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" 
    
  4. Importieren Sie den SQL Server PowerShell-Anbieter.

    Set-ExecutionPolicy RemoteSigned -Force
    Import-Module "sqlps" -DisableNameChecking
    
  5. Ändern Sie das SQL Server-Dienstkonto für ContosoSQL1 zu 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)
    
  6. Ändern Sie das SQL Server-Dienstkonto für ContosoSQL2 zu 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)
    
  7. Laden Sie CreateAzureFailoverCluster.ps1 aus Erstellen von WSFC-Clustern für AlwaysOn-Verfügbarkeitsgruppen auf virtuellen Azure-Computern in das lokale Arbeitsverzeichnis herunter. Das Skript unterstützt Sie beim Erstellen eines funktionsfähigen WSFC-Clusters. Wichtige Informationen zur Interaktion von WSFC mit dem Azure-Netzwerk finden Sie unter Hochverfügbarkeit und Notfallwiederherstellung für SQL Server auf virtuellen Azure-Computern.

  8. Wechseln Sie zu Ihrem Arbeitsverzeichnis, und erstellen Sie den WSFC-Cluster mit dem heruntergeladenen Skript.

    Set-ExecutionPolicy Unrestricted -Force
    .\CreateAzureFailoverCluster.ps1 -ClusterName "$clusterName" -ClusterNode "$server1","$server2","$serverQuorum"
    
  9. Aktivieren Sie AlwaysOn-Verfügbarkeitsgruppen für die SQL Server-Standardinstanzen auf 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)
    
  10. Erstellen Sie ein Sicherungsverzeichnis und erteilen Sie Berechtigungen für die SQL Server-Dienstkonten. Sie verwenden dieses Verzeichnis, um die Verfügbarkeitsdatenbank auf dem sekundären 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") 
    
  11. Erstellen Sie eine Datenbank auf ContosoSQL1 mit dem Namen MyDB1, erstellen Sie eine vollständige Sicherung und eine Protokollsicherung, und stellen Sie diese mit der WITH NORECOVERY-Option auf ContosoSQL2 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 -NoRecovery 
    
  12. Erstellen Sie die Verfügbarkeitsgruppenendpunkte auf den virtuellen SQL Server-Computern, 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 $server2 
    
  13. Erstellen 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 `
        -AsTemplate 
    
  14. Erstellen Sie abschließend die Verfügbarkeitsgruppe, und verknüpfen 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
    

Sie haben SQL Server AlwaysOn jetzt erfolgreich implementiert, indem Sie eine Verfügbarkeitsgruppe in Azure erstellt haben. Weitere Informationen zum Konfigurieren eines Listeners für die Verfügbarkeitsgruppe finden Sie unter Tutorial: Listener Configuration for AlwaysOn Availability Groups in Azure.

Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft