Sdílet prostřednictvím


Konfigurace skupiny dostupnosti AlwaysOn na virtuálním počítači Azure pomocí PowerShellu

Než začnete, zvažte, že teď můžete tuto úlohu dokončit v modelu Azure Resource Manageru. Pro nová nasazení doporučujeme model Azure Resource Manageru. Viz skupiny dostupnosti AlwaysOn SQL Serveru na virtuálních počítačích Azure.

Důležité

Doporučujeme, aby většina nových nasazení používala model Resource Manageru. Azure má dva různé modely nasazení pro vytváření prostředků a práci s nimi: Resource Manager a klasický model. Tento článek se věnuje použití klasického modelu nasazení.

Virtuální počítače Azure můžou správcům databází pomoct snížit náklady na systém SQL Server s vysokou dostupností. V tomto návodu se dozvíte, jak implementovat skupinu dostupnosti pomocí funkce SQL Server Always On v prostředí Azure od začátku do konce. Na konci kurzu se vaše řešení AlwaysOn SQL Serveru v Azure skládá z následujících prvků:

  • Virtuální síť, která obsahuje více podsítí, včetně front-endu a back-endové podsítě.
  • Řadič domény s doménou služby Active Directory.
  • Dva virtuální počítače s SQL Serverem nasazené do back-endové podsítě a připojené k doméně služby Active Directory.
  • Cluster Windows se třemi uzly pro převzetí služeb při selhání s kvórovým modelem Většina uzlů.
  • Skupina dostupnosti se dvěma synchronními replikami databáze dostupnosti.

Tento scénář je dobrou volbou pro jednoduchost v Azure, ne pro nákladovou efektivitu ani jiné faktory. Můžete například minimalizovat počet virtuálních počítačů pro skupinu dostupnosti se dvěma replikami, abyste ušetřili výpočetní hodiny v Azure, tak že použijete řadič domény jako svědka sdílené složky kvora v clusteru pro převzetí služeb při selhání se dvěma uzly. Tato metoda snižuje počet virtuálních počítačů o jeden z výše uvedených konfigurací.

Tento kurz vám ukáže kroky potřebné k nastavení výše popsaného řešení, aniž byste museli podrobně popisovat jednotlivé kroky. Místo toho, aby poskytoval konfigurační kroky grafického uživatelského rozhraní, používá skriptování PowerShellu k rychlému procházení jednotlivých kroků. V tomto kurzu se předpokládá následující:

Připojení k předplatnému Azure a vytvoření virtuální sítě

  1. V okně PowerShellu na místním počítači naimportujte modul Azure, stáhněte soubor nastavení publikování do počítače a připojte relaci PowerShellu k vašemu předplatnému Azure importováním stažených nastavení publikování.

    Import-Module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Azure\Azure.psd1"
    Get-AzurePublishSettingsFile
    Import-AzurePublishSettingsFile <publishsettingsfilepath>
    

    Příkaz Get-AzurePublishSettingsFile automaticky vygeneruje certifikát pro správu s Azure a stáhne ho do počítače. Prohlížeč se otevře automaticky a zobrazí se výzva k zadání přihlašovacích údajů účtu Microsoft pro vaše předplatné Azure. Stažený soubor .publishsettings obsahuje všechny informace, které potřebujete ke správě předplatného Azure. Po uložení tohoto souboru do místního adresáře ho naimportujte pomocí příkazu Import-AzurePublishSettingsFile.

    Poznámka:

    Soubor .publishsettings obsahuje vaše přihlašovací údaje (nekódované), které slouží ke správě předplatných a služeb Azure. Osvědčeným postupem zabezpečení pro tento soubor je dočasné uložení mimo zdrojové adresáře (například ve složce Knihovny\Dokumenty) a jeho odstranění po dokončení importu. Uživatel se zlými úmysly, který získá přístup k souboru .publishsettings, může upravovat, vytvářet a odstraňovat služby Azure.

  2. Definujte řadu proměnných, které použijete k vytvoření cloudové IT infrastruktury.

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

    Věnujte pozornost následujícímu, abyste zajistili, že příkazy budou později úspěšné:

    • Proměnné $storageAccountName a $dcServiceName musí být jedinečné, protože slouží k identifikaci účtu cloudového úložiště a cloudového serveru na internetu.
    • Názvy, které zadáte pro proměnné $affinityGroupName a $virtualNetworkName, se konfigurují v dokumentu konfigurace virtuální sítě, který použijete později.
    • $sqlImageName určuje aktualizovaný název image virtuálního počítače, která obsahuje SQL Server 2012 Service Pack 1 Enterprise Edition.
    • Pro zjednodušení Contoso!000 je stejné heslo, které se používá v celém kurzu.
  3. Vytvořte zájmovou skupinu.

    New-AzureAffinityGroup `
        -Name $affinityGroupName `
        -Location $location `
        -Description $affinityGroupDescription `
        -Label $affinityGroupLabel
    
  4. Vytvořte virtuální síť importem konfiguračního souboru.

    Set-AzureVNetConfig `
        -ConfigurationPath $networkConfigPath
    

    Konfigurační soubor obsahuje následující dokument XML. Stručně řečeno, určuje virtuální síť s názvem ContosoNET ve skupině vztahů s názvem ContosoAG. Má adresní prostor 10.10.0.0/16 a má dvě podsítě, 10.10.1.0/24 a 10.10.2.0/24, což jsou přední a zadní podsíť. Frontová podsíť je místo, kde můžete umístit klientské aplikace, jako je Microsoft SharePoint. Podsíť back je místo, kam umístíte virtuální počítače s SQL Serverem. Pokud změníte $affinityGroupName a $virtualNetworkName proměnných dříve, musíte také změnit odpovídající názvy níže.

    <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>
    ```xml
    
    
  5. Vytvořte účet úložiště přidružený ke skupině vztahů, kterou jste vytvořili, a nastavte ho jako aktuální účet úložiště ve vašem předplatném.

    New-AzureStorageAccount `
        -StorageAccountName $storageAccountName `
        -Label $storageAccountLabel `
        -AffinityGroup $affinityGroupName
    Set-AzureSubscription `
        -SubscriptionName (Get-AzureSubscription).SubscriptionName `
        -CurrentStorageAccount $storageAccountName
    
  6. Vytvořte server doménového řadiče v nové cloudové službě a skupině dostupnosti.

    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
    

    Tyto řetězené příkazy provádějí následující úkoly:

    • New-AzureVMConfig vytvoří konfiguraci virtuálního počítače.
    • add-AzureProvisioningConfig poskytuje konfigurační parametry samostatného windows serveru.
    • Add-AzureDataDisk přidá datový disk, který použijete k ukládání dat služby Active Directory, s možností ukládání do mezipaměti nastavenou na Hodnotu Žádné.
    • new-AzureVM vytvoří novou cloudovou službu a vytvoří nový virtuální počítač Azure v nové cloudové službě.
  7. Počkejte, až se nový virtuální počítač plně zřídí, a stáhněte si soubor vzdálené plochy do pracovní složky. Vzhledem k tomu, že zřízení nového virtuálního počítače Azure trvá dlouho, smyčka while pokračuje v dotazování na nový virtuální počítač, dokud nebude připravený k použití.

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

Server řadiče domény je teď úspěšně zřízený. Dále nakonfigurujete doménu služby Active Directory na tomto serveru řadiče domény. Nechte okno PowerShellu otevřené na místním počítači. Později ho znovu použijete k vytvoření dvou virtuálních počítačů s SQL Serverem.

Konfigurace řadiče domény

  1. Připojte se k serveru řadiče domény spuštěním souboru pro vzdálenou plochu. Použijte uživatelské jméno správce počítače AzureAdmin a heslo Contoso!000, které jste zadali při vytváření nového virtuálního počítače.

  2. Otevřete okno PowerShellu v režimu správce.

  3. Spuštěním následujícího příkazu DCPROMO.EXE nastavte corp.contoso.com doménu s datovými adresáři na jednotce 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"
    

    Po dokončení příkazu se virtuální počítač automaticky restartuje.

  4. Znovu se připojte k serveru řadiče domény spuštěním souboru vzdálené plochy. Tentokrát se přihlaste jako CORP\Administrator.

  5. Otevřete okno PowerShellu v režimu správce a pomocí následujícího příkazu naimportujte modul Active Directory PowerShell:

    Import-Module ActiveDirectory
    
  6. Spuštěním následujících příkazů přidejte do domény tři uživatele.

    $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 slouží ke konfiguraci všeho, co souvisí s instancemi služby SQL Serveru, clusterem s podporou převzetí služeb při selhání a skupinou dostupnosti. CORP\SQLSvc1 a CORP\SQLSvc2 se používají jako účty služby SQL Serveru pro dva virtuální počítače s SQL Serverem.

  7. Dále spusťte následující příkazy, abyste CORP\Install dali oprávnění k vytváření objektů počítačů v doméně.

    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
    

    Identifikátor GUID zadaný výše je identifikátor GUID pro typ objektu počítače. Účet CORP\Install potřebuje oprávnění Read All Properties a Create Computer Objects k vytvoření objektů Active Directory pro cluster s podporou převzetí služeb při selhání. Oprávnění Číst všechny vlastnosti je již ve výchozím nastavení uděleno uživateli CORP\Install, takže jej nemusíte udělovat explicitně. Další informace o oprávněních potřebných k vytvoření clusteru s podporou převzetí služeb při selhání najdete v podrobné příručce k clusteru s podporou převzetí služeb při selhání: Konfigurace účtů ve službě Active Directory.

    Teď, když jste dokončili konfiguraci služby Active Directory a uživatelských objektů, vytvoříte dva virtuální počítače s SQL Serverem a připojíte je k této doméně.

Vytvoření virtuálních počítačů s SQL Serverem

  1. Pokračujte v používání okna PowerShellu, které je otevřené na místním počítači. Definujte následující další proměnné:

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

    IP adresa 10.10.0.4 je obvykle přiřazena prvnímu virtuálnímu počítači, který vytvoříte v 10.10.0.0/16 podsíti virtuální sítě Azure. Měli byste ověřit, že se jedná o adresu vašeho serveru řadiče domény spuštěním IPCONFIG.

  2. Spuštěním následujících přesměrovaných příkazů vytvořte první virtuální počítač v clusteru s podporou převzetí služeb při selhání, pojmenovaný ContosoQuorum:

    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
    

    Všimněte si následujících informací o výše uvedeném příkazu:

    • New-AzureVMConfig vytvoří konfiguraci virtuálního počítače s požadovaným názvem skupiny dostupnosti. Následující virtuální počítače se vytvoří se stejným názvem skupiny dostupnosti, aby byly připojené ke stejné skupině dostupnosti.
    • Add-AzureProvisioningConfig připojí virtuální počítač k doméně Active Directory, kterou jste vytvořili.
    • Set-AzureSubnet umístí virtuální počítač do podsítě back.
    • new-AzureVM vytvoří novou cloudovou službu a vytvoří nový virtuální počítač Azure v nové cloudové službě. Parametr DnsSetting s určuje, že server DNS pro servery v nové cloudové službě má IP adresu 10.10.0.4. Toto je IP adresa serveru řadiče domény. Tento parametr je potřeba k tomu, aby se nové virtuální počítače v cloudové službě úspěšně připojily k doméně služby Active Directory. Bez tohoto parametru musíte ručně nastavit nastavení IPv4 ve virtuálním počítači tak, aby po zřízení virtuálního počítače používalo server řadiče domény jako primární server DNS a potom virtuální počítač připojte k doméně služby Active Directory.
  3. Spuštěním následujících předávaných příkazů vytvořte virtuální počítače s SQL Serverem ContosoSQL1 a ContosoSQL2.

    # 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
    

    Mějte na paměti následující příkazy uvedené výše:

    • New-AzureVMConfig používá stejný název sady dostupnosti jako server řadiče domény a používá image SQL Serveru 2012 Service Pack 1 Enterprise Edition v galerii virtuálních počítačů. Nastaví také disk operačního systému na mezipaměť pro čtení (bez ukládání zápisu do mezipaměti). Doporučujeme migrovat soubory databáze na samostatný datový disk, který připojíte k virtuálnímu počítači, a nakonfigurovat ho bez ukládání do mezipaměti pro čtení nebo zápis. Nicméně, dalším nejlepším krokem je zakázat mezipaměť zápisu na disku operačního systému, protože mezipaměť pro čtení na něm zakázat nemůžete.
    • Add-AzureProvisioningConfig připojí virtuální počítač k doméně Active Directory, kterou jste vytvořili.
    • Set-AzureSubnet umístí virtuální počítač do podsítě back.
    • Add-AzureEndpoint přidá přístupové koncové body, aby klientské aplikace mohly přistupovat k těmto instancím služeb SQL Serveru na Internetu. ContosoSQL1 a ContosoSQL2 mají různé porty.
    • new-AzureVM vytvoří nový virtuální počítač s SQL Serverem ve stejné cloudové službě jako ContosoQuorum. Pokud chcete, aby byly virtuální počítače ve stejné skupině dostupnosti, musíte umístit do stejné cloudové služby.
  4. Počkejte, až budou všechny virtuální počítače plně zprovozněny a stáhnou své soubory vzdálené plochy do vašeho pracovního adresáře. Smyčka for prochází třemi novými virtuálními stroji a spouští příkazy nejvyšší úrovně ve složených závorkách pro každý z nich.

    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"
    }
    

    Virtuální počítače s SQL Serverem jsou teď zřízené a spuštěné, ale instalují se s SQL Serverem s výchozími možnostmi.

Inicializace virtuálních počítačů clusteru s podporou převzetí služeb při selhání

V této části je potřeba upravit tři servery, které budete používat v clusteru s podporou převzetí služeb při selhání a instalaci SQL Serveru. Konkrétně:

  • Všechny servery: Musíte nainstalovat funkci clusteringu s podporou převzetí služeb při selhání.

  • Všechny servery: Musíte přidat CORP\Install jako správce počítače.

  • Jenom ContosoSQL1 a ContosoSQL2: Musíte přidat CORP\Install jako roli správce systému ve výchozí databázi.

  • Jenom ContosoSQL1 a ContosoSQL2: Musíte přidat NT AUTHORITY\System jako přihlášení s následujícími oprávněními:

    • Změna jakékoli skupiny dostupnosti
    • Připojit SQL
    • Zobrazení stavu serveru
  • Jenom ContosoSQL1 a ContosoSQL2: Na virtuálním počítači s SQL Serverem je už povolený protokol TCP. Přesto ale potřebujete otevřít bránu firewall pro vzdálený přístup k SQL Serveru.

Teď jste připraveni začít. Počínaje ContosoQuorum, postupujte podle následujících kroků:

  1. Připojte se k ContosoQuorum pomocí otevření souborů vzdálené plochy. Použijte uživatelské jméno správce počítače AzureAdmin a heslo Contoso!000, které jste zadali při vytváření virtuálních počítačů.

  2. Ověřte, zda byly počítače úspěšně připojeny k corp.contoso.com.

  3. Než budete pokračovat, počkejte, až instalace SQL Serveru dokončí spuštění automatizovaných inicializačních úloh.

  4. Otevřete okno PowerShellu v režimu správce.

  5. Nainstalujte funkci Windows Failover Clustering.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering
    
  6. Přidejte CORP\Install jako místního správce.

    net localgroup administrators "CORP\Install" /Add
    
  7. Odhlaste se z ContosoQuorumu. Teď jste s tímto serverem hotovi.

    logoff.exe
    

Dále inicializuje ContosoSQL1 a ContosoSQL2. Postupujte podle následujících kroků, které jsou identické pro oba virtuální počítače s SQL Serverem.

  1. Připojte se ke dvěma SQL Server VM spuštěním souborů pro připojení ke vzdálené ploše. Použijte uživatelské jméno správce počítače AzureAdmin a heslo Contoso!000, které jste zadali při vytváření virtuálních počítačů.

  2. Ověřte, zda byly počítače úspěšně připojeny k corp.contoso.com.

  3. Než budete pokračovat, počkejte, až instalace SQL Serveru dokončí spuštění automatizovaných inicializačních úloh.

  4. Otevřete okno PowerShellu v režimu správce.

  5. Nainstalujte funkci clusteringu pro převzetí služeb při selhání systému Windows.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering
    
  6. Přidejte CORP\Install jako místního správce.

    net localgroup administrators "CORP\Install" /Add
    
  7. Importujte modul PowerShellu SQL Serveru.

    Set-ExecutionPolicy -Execution RemoteSigned -Force
    Import-Module -Name "sqlps" -DisableNameChecking
    
  8. Přidejte CORP\Install jako roli správce systému pro výchozí instanci SQL Serveru.

    net localgroup administrators "CORP\Install" /Add
    Invoke-SqlCmd -Query "EXEC sp_addsrvrolemember 'CORP\Install', 'sysadmin'" -ServerInstance "."
    
  9. Přidejte NT AUTHORITY\System jako přihlášení se třemi výše uvedenými oprávněními.

    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. Otevřete bránu firewall pro vzdálený přístup k SQL Serveru.

     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. Odhlaste se z obou virtuálních počítačů.

     logoff.exe
    

Nakonec jste připraveni nakonfigurovat skupinu dostupnosti. K provádění všech prací na ContosoSQL1použijete poskytovatele PowerShell pro SQL Server.

Konfigurace skupiny dostupnosti

  1. Znovu se připojte k ContosoSQL1 otevřením souborů vzdálené plochy. Místo přihlášení pomocí účtu počítače se přihlaste pomocí CORP\Install.

  2. Otevřete okno PowerShellu v režimu správce.

  3. Definujte následující proměnné:

    $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. Importujte poskytovatele PowerShellu SQL Serveru.

    Set-ExecutionPolicy RemoteSigned -Force
    Import-Module "sqlps" -DisableNameChecking
    
  5. Změňte účet služby SQL Serveru pro ContosoSQL1 na 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. Změňte účet služby SQL Serveru pro ContosoSQL2 na 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. Stáhněte si CreateAzureFailoverCluster.ps1 z Vytvoření clusteru s podporou převzetí služeb při selhání pro skupiny dostupnosti AlwaysOn na virtuálním počítači Azure do místního pracovního adresáře. Tento skript použijete k vytvoření funkčního clusteru při selhání. Důležité informace o tom, jak clusterování s podporou převzetí služeb při selhání ve Windows komunikuje se sítí Azure, viz Vysoká dostupnost a zotavení po havárii pro SQL Server ve službě Azure Virtual Machines.

  8. Přejděte do pracovního adresáře a vytvořte cluster pro přepnutí při selhání se staženým skriptem.

    Set-ExecutionPolicy Unrestricted -Force
    .\CreateAzureFailoverCluster.ps1 -ClusterName "$clusterName" -ClusterNode "$server1","$server2","$serverQuorum"
    
  9. Povolte skupiny dostupnosti AlwaysOn pro výchozí instance SQL Serveru na ContosoSQL1 a 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. Vytvořte záložní adresář a udělte oprávnění pro účty služby SQL Serveru. Tento adresář použijete k přípravě databáze dostupnosti na sekundární replice.

    $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. Vytvořte databázi na ContosoSQL1 s názvem MyDB1, proveďte úplnou zálohu i zálohování protokolů a obnovte je na ContosoSQL2 s možností WITH NORECOVERY.

    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. Vytvořte koncové body skupiny dostupnosti na virtuálních počítačích s SQL Serverem a nastavte správná oprávnění ke koncovým bodům.

    $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. Vytvořte dostupnostní repliky.

    $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. Nakonec vytvořte skupinu dostupnosti a připojte sekundární repliku ke skupině dostupnosti.

    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
    

Další kroky

Teď jste úspěšně implementovali SQL Server AlwaysOn vytvořením skupiny dostupnosti v Azure. Informace o konfiguraci posluchače pro tuto skupinu dostupnosti najdete v tématu Konfigurace interního vyrovnávače zatížení pro posluchače Always On ve skupinách dostupnosti v Azure.

Další informace o používání SQL Serveru v Azure najdete v tématu SQL Serveru na virtuálních počítačích Azure.