AlwaysOn rendelkezésre állási csoport konfigurálása Azure-beli virtuális gépen a PowerShell használatával

Mielőtt hozzákezd, fontolja meg, hogy most már befejezheti ezt a feladatot az Azure Resource Manager-modellben. Az új üzemelő példányok esetében az Azure Resource Manager-modellt javasoljuk. Lásd SQL Server Always On rendelkezésre állási csoportok Azure-beli virtuális gépeken való használatával.

Fontos

Javasoljuk, hogy a legtöbb új üzemelő példány a Resource Manager használja. Az Azure két különböző üzembe helyezési modellel rendelkezik az erőforrások létrehozásához és Resource Manager létrehozásához. Ez a cikk a klasszikus üzembehelyezési modellt ismerteti.

Az Azure-beli virtuális gépek (VM-ek) segítségével az adatbázisgazdák csökkenthetik a magas rendelkezésre állású SQL Server költségeit. Ez az oktatóanyag bemutatja, hogyan valósíthat meg egy rendelkezésre állási csoportot az SQL Server Always On végpontok között azure-környezetben való használatával. Az oktatóanyag végén a SQL Server Always On megoldás az Azure-ban a következő elemekből áll:

  • Több alhálózatot, köztük egy előtér- és egy háttér-alhálózatot tartalmazó virtuális hálózat.
  • Tartományvezérlő egy Active Directory tartománnyal.
  • Két SQL Server virtuális gép, amelyek a háttér-alhálózatra vannak telepítve, és csatlakoznak a Active Directory tartományhoz.
  • Egy három csomópontból Windows csomóponttöbbség kvórummodellel.
  • Rendelkezésre állási csoport egy rendelkezésre állási adatbázis két szinkron véglegesítési replikával.

Ez a forgatókönyv jó választás az Egyszerűség kedvéért az Azure-ban, nem pedig költséghatékonysága vagy egyéb tényezők miatt. Egy két replika rendelkezésre állási csoport virtuális gépei minimálisra csökkenthetők, így megtakarítható az Azure-beli számítási órák száma, ha a tartományvezérlőt használja tanúsító kvórumfájl-megosztásként egy kétcsomópontos feladatátvevő fürtben. Ez a módszer 1-rel csökkenti a virtuális gépek számát a fenti konfigurációból.

Ez az oktatóanyag bemutatja a fenti megoldás beállításához szükséges lépéseket anélkül, hogy részletezné az egyes lépéseket. Ezért a grafikus felhasználói felület konfigurációs lépései helyett PowerShell-szkriptek használatával gyorsan végigveszi az egyes lépéseket. Ez az oktatóanyag a következőket feltételezi:

Csatlakozás azure-előfizetéshez, és hozza létre a virtuális hálózatot

  1. A helyi számítógépen egy PowerShell-ablakban importálja az Azure-modult, töltse le a közzétételi beállítások fájlját a gépre, és csatlakoztassa a PowerShell-munkamenetet az Azure-előfizetéséhez a letöltött közzétételi beállítások importálása segítségével.

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

    A Get-AzurePublishSettingsFile parancs automatikusan létrehoz egy felügyeleti tanúsítványt az Azure-ral, és letölti a gépre. A böngésző automatikusan megnyílik, és a rendszer felkéri, hogy adja meg Microsoft-fiók Azure-előfizetéséhez szükséges hitelesítő adatokat. A letöltött .publishsettings fájl tartalmazza az Azure-előfizetés kezeléséhez szükséges összes információt. Miután mentette ezt a fájlt egy helyi könyvtárba, importálja az Import-AzurePublishSettingsFile paranccsal .

    Megjegyzés

    A .publishsettings fájl tartalmazza az Azure-előfizetések és -szolgáltatások felügyeletéhez használt hitelesítő adatokat (nem kódolva). A fájl biztonsági okokból ajánlott ideiglenesen a forráskönyvtárakon kívül (például a Libraries\Documents mappában) tárolni, majd az importálás befejezése után törölni. Egy rosszindulatú felhasználó, aki hozzáférést kap a .publishsettings fájlhoz, szerkesztheti, létrehozhatja és törölheti az Azure-szolgáltatásokat.

  2. Definiálhat változókat, amelyek segítségével létrehozhatja a felhőalapú it-infrastruktúrát.

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

    Ügyeljen a következőkre, hogy a parancsok később sikeresek legyenek:

    • A $storageAccountName és$dcServiceName egyedinek kell lennie, mert a felhőbeli tárfiók és a felhőkiszolgáló azonosítására szolgálnak az interneten.
    • A változókhoz megadott $affinityGroupName és $virtualNetworkName a később használni kívánt virtuális hálózati konfigurációs dokumentumban vannak konfigurálva.
    • $sqlImageName a 2012 1. szervizcsomaggal SQL Server virtuálisgép-rendszerkép frissített nevét Enterprise kiadás.
    • Az egyszerűség kedvéért a Contoso!000 ugyanaz a jelszó, mint a teljes oktatóanyagban.
  3. Hozzon létre egy affinitáscsoportot.

    New-AzureAffinityGroup `
        -Name $affinityGroupName `
        -Location $location `
        -Description $affinityGroupDescription `
        -Label $affinityGroupLabel
    
  4. Hozzon létre egy virtuális hálózatot egy konfigurációs fájl importálása segítségével.

    Set-AzureVNetConfig `
        -ConfigurationPath $networkConfigPath
    

    A konfigurációs fájl a következő XML-dokumentumot tartalmazza. Röviden, megad egy ContosoNET nevű virtuális hálózatot a ContosoAG nevű affinitáscsoportban. A címtere 10.10.0.0/16 , valamint két alhálózata van: 10.10.1.0/24 és 10.10.2.0/24, amelyek az előtér- és a háttér-alhálózatok. Az előtér-alhálózaton ügyfélalkalmazásokat, például Microsoft-alkalmazásokat SharePoint. A háttér-alhálózatba fogja a virtuális gépeket SQL Server helyezze. Ha korábban módosítja a $affinityGroupName és $virtualNetworkName , akkor az alábbi megfelelő neveket is módosítania kell.

    <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. Hozzon létre egy tárfiókot, amely a létrehozott affinitáscsoporthoz van társítva, és állítsa be aktuális tárfiókként az előfizetésében.

    New-AzureStorageAccount `
        -StorageAccountName $storageAccountName `
        -Label $storageAccountLabel `
        -AffinityGroup $affinityGroupName
    Set-AzureSubscription `
        -SubscriptionName (Get-AzureSubscription).SubscriptionName `
        -CurrentStorageAccount $storageAccountName
    
  6. Hozza létre a tartományvezérlő kiszolgálót az új felhőszolgáltatásban és rendelkezésre állási csoportban.

    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
    

    Ezek az átkért parancsok a következőket tehetünk:

    • A New-AzureVMConfig létrehoz egy virtuálisgép-konfigurációt.
    • Az Add-AzureProvisioningConfig egy önálló kiszolgáló konfigurációs paramétereit Windows biztosítja.
    • Az Add-AzureDataDisk hozzáadja az adatlemezt, amely a Active Directory tárolására fog használni, és a gyorsítótárazás beállítása Nincs.
    • A New-AzureVM létrehoz egy új felhőszolgáltatást, és létrehozza az új Azure-beli virtuális gépet az új felhőszolgáltatásban.
  7. Várja meg, amíg az új virtuális gép teljesen ki lesz építve, és töltse le a távoli asztali fájlt a munkakönyvtárba. Mivel az új Azure-beli virtuális gép kiépítése hosszú időt vesz igénybe, while a hurok továbbra is lekérdezi az új virtuális gépet, amíg az készen nem áll a használatra.

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

A tartományvezérlő kiszolgálója sikeresen ki lett építve. Ezután konfigurálja a Active Directory ezen a tartományvezérlő kiszolgálón. Hagyja megnyitva a PowerShell-ablakot a helyi számítógépen. Később ismét használni fogja a két virtuális gép SQL Server létrehozásához.

A tartományvezérlő konfigurálása

  1. Csatlakozás a távoli asztali fájl elindításával a tartományvezérlő kiszolgálóra. Használja a gép rendszergazdájának AzureAdmin felhasználónevét és a Contoso!000 jelszót, amelyet az új virtuális gép létrehozásakor adott meg.

  2. Nyisson meg egy PowerShell-ablakot rendszergazdai módban.

  3. Futtassa a DCPROMO.EXE parancsot a corp.contoso.com tartomány beállítására az M meghajtón található adat-könyvtárakkal.

    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"
    

    A parancs befejeződés után a virtuális gép automatikusan újraindul.

  4. Csatlakozás a távoli asztali fájl elindításával indítsa el újra a tartományvezérlő kiszolgálót. Ezúttal jelentkezzen be CORP\Rendszergazda felhasználóként.

  5. Nyisson meg egy PowerShell-ablakot rendszergazdai módban, és importálja Active Directory PowerShell-modult a következő paranccsal:

    Import-Module ActiveDirectory
    
  6. Az alábbi parancsok futtatásával adjon hozzá három felhasználót a tartományhoz.

    $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
    

    A CORP\Install a SQL Server szolgáltatáspéldányokhoz, a feladatátvevő fürthöz és a rendelkezésre állási csoporthoz kapcsolódó összes beállítás konfigurálható. A két virtuális gép SQL Server szolgáltatásfiókja a CORP\SQLSvc1 SQL Server és a CORP\SQLSvc2.

  7. Ezután futtassa a következő parancsokat, hogy a CORP\Install engedélyt adjon a számítógép-objektumok létrehozására a tartományban.

    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
    

    A fent megadott GUID a számítógép objektumtípusának GUID-ja. A CORP\Install fióknak szüksége van az Összes tulajdonság olvasása és a Számítógép-objektumok létrehozása engedélyre a feladatátvevő fürt aktív közvetlen objektumának létrehozásához. Az Összes tulajdonság olvasása engedély alapértelmezés szerint már meg van adva a CORP\Install számára, így nem kell explicit módon engedélyeznie. A feladatátvevő fürt létrehozásához szükséges engedélyekkel kapcsolatos további információkért lásd: Feladatátvevő fürt részletes útmutatója: Fiókok konfigurálása a Active Directory.

    Most, hogy befejezte az Active Directory és a felhasználói objektumok konfigurálását, két virtuális SQL Server fog létrehozni, és ehhez a tartományhoz fogja őket illeszteni.

A virtuális SQL Server létrehozása

  1. Használja tovább a helyi számítógépen megnyitott PowerShell-ablakot. Adja meg a következő további változókat:

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

    A 10.10.0.4 IP-cím általában az Azure-beli virtuális hálózat 10.10.0.0/16 alhálózatán létrehozott első virtuális géphez van rendelve. Az IPCONFIG futtatásával ellenőrizze, hogy ez-e a tartományvezérlő kiszolgálójának címe.

  2. Futtassa a következő parancsokat a feladatátvevő fürt első virtuális gépének létrehozásához ContosoQuorum névvel:

    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
    

    Figyelje meg a következőt a fenti paranccsal kapcsolatban:

    • A New-AzureVMConfig létrehoz egy virtuálisgép-konfigurációt a kívánt rendelkezésre állási készlet nevével. Az ezt követő virtuális gépek ugyanazokkal a rendelkezésre állásihalmaz-névvel lesznek létrehozva, hogy ugyanathoz a rendelkezésre állási készlethez csatlakoznak.
    • Az Add-AzureProvisioningConfig a létrehozott Active Directory csatlakozik a virtuális géphez.
    • A Set-AzureSubnet a háttérbeli alhálózatba elhelyezi a virtuális gépet.
    • A New-AzureVM létrehoz egy új felhőszolgáltatást, és létrehozza az új Azure-beli virtuális gépet az új felhőszolgáltatásban. A DnsSettings paraméter megadja, hogy az új felhőszolgáltatás kiszolgálóinak DNS-kiszolgálója a 10.10.0.4 IP-címmel rendelkezik. Ez a tartományvezérlő kiszolgálójának IP-címe. Erre a paraméterre azért van szükség, hogy a felhőszolgáltatás új virtuális gépei sikeresen csatlakozzanak a Active Directory tartományhoz. E paraméter nélkül manuálisan kell beállítania az IPv4-beállításokat a virtuális gépen, hogy a tartományvezérlő kiszolgálót használja elsődleges DNS-kiszolgálóként a virtuális gép kiépítése után, majd csatlakozzon a virtuális géphez a Active Directory tartományhoz.
  3. Futtassa a következő parancsokat a ContosoSQL1 és a ContosoSQL2 nevű SQL Server létrehozásához.

    # 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
    

    A fenti parancsokkal kapcsolatban vegye figyelembe a következőket:

    • A New-AzureVMConfig ugyanazt a rendelkezésre állási csoportnevet használja, mint a tartományvezérlő kiszolgálója, és a SQL Server 2012 Service Pack 1 Enterprise kiadás rendszerképet használja a virtuálisgép-katalógusban. Emellett az operációsrendszer-lemezt írási/olvasási gyorsítótárazásra állítja (írási gyorsítótárazás nélkül). Javasoljuk, hogy az adatbázisfájlokat a virtuális géphez csatolva egy külön adatlemezre miháljon, és konfigurálja olvasási vagy írási gyorsítótárazás nélkül. A következő legjobb megoldás azonban az írási gyorsítótárazás eltávolítása az operációsrendszer-lemezről, mert az operációsrendszer-lemezen nem távolítható el az olvasási gyorsítótárazás.
    • Az Add-AzureProvisioningConfig a létrehozott Active Directory csatlakozik a virtuális géphez.
    • A Set-AzureSubnet a háttérbeli alhálózatba elhelyezi a virtuális gépet.
    • Az Add-AzureEndpoint hozzáférési végpontokat ad hozzá, így az ügyfélalkalmazások hozzáférhetnek ezekhez SQL Server szolgáltatáspéldányokhoz az interneten. A ContosoSQL1 és a ContosoSQL2 különböző portokat kap.
    • A New-AzureVM létrehozza az SQL Server virtuális gépet ugyanabban a felhőszolgáltatásban, mint a ContosoQuorum. A virtuális gépeket ugyanabban a felhőszolgáltatásban kell eltennie, ha azt szeretné, hogy ugyanabban a rendelkezésre állási készletben legyen.
  4. Várja meg, amíg az egyes virtuális gépek teljesen ki lesznek építve, és minden virtuális gép letölti a távoli asztali fájlját a munkakönyvtárba. A for hurok végigjárást végez a három új virtuális gépen, és mindegyikhez végrehajtja a parancsokat a felső szintű gólyos zárójelben.

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

    A SQL Server virtuális gépek ki vannak építve és futnak, de az alapértelmezett beállításokkal SQL Server vannak telepítve.

A feladatátvevő fürt virtuális gépének inicializálása

Ebben a szakaszban módosítania kell a feladatátvevő fürtben használt három kiszolgálót, valamint a SQL Server használni. Ezek konkrétan a következők:

  • Minden kiszolgáló: Telepítenie kell a Feladatátvételi fürtszolgáltatást .

  • Minden kiszolgáló: A CORP\Install adatokat kell hozzáadnia a számítógép rendszergazdájaként.

  • Csak a ContosoSQL1 és a ContosoSQL2 esetén: Az alapértelmezett adatbázisban rendszergazdai szerepkörként kell hozzáadnia a CORP\Install szerepkört.

  • Csak a ContosoSQL1 és a ContosoSQL2 esetében: Az NT AUTHORITY\System adatokat a következő engedélyekkel kell hozzáadnia bejelentkezésként:

    • Bármely rendelkezésre állási csoport megváltoztatása
    • Csatlakozás SQL
    • Kiszolgáló állapotának megtekintése
  • Csak a ContosoSQL1 és a ContosoSQL2 esetében: A TCP protokoll már engedélyezve van az SQL Server virtuális gépen. A tűzfalat azonban továbbra is meg kell nyitnia a távoli SQL Server.

Most már készen áll a kezdésre. A ContosoQuorumtól kezdve kövesse az alábbi lépéseket:

  1. Csatlakozás a ContosoQuorumhoz a távoli asztali fájlok elindításával. Használja a gép rendszergazdájának AzureAdmin felhasználónevét és a Contoso!000 jelszót, amelyet a virtuális gépek létrehozásakor adott meg.

  2. Ellenőrizze, hogy a számítógépek sikeresen csatlakoztak-e a corp.contoso.com.

  3. A folytatás előtt várja SQL Server, amíg a telepítés befejezi az automatizált inicializálási feladatok futtatását.

  4. Nyisson meg egy PowerShell-ablakot rendszergazdai módban.

  5. Telepítse a Windows Feladatátvételi fürtszolgáltatást.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering
    
  6. Adja hozzá a CORP\Install parancsot helyi rendszergazdaként.

    net localgroup administrators "CORP\Install" /Add
    
  7. Jelentkezzen ki a ContosoQuorumból. Ezzel a kiszolgálóval már végzett.

    logoff.exe
    

Ezután inicializálja a ContosoSQL1 ésa ContosoSQL2 adatbázist. Kövesse az alábbi lépéseket, amelyek mindkét virtuális gép SQL Server azonosak.

  1. Csatlakozás virtuális géphez SQL Server a távoli asztali fájlok elindításával. Használja a gép rendszergazdájának AzureAdmin felhasználónevét és a Contoso!000 jelszót, amelyet a virtuális gépek létrehozásakor adott meg.

  2. Ellenőrizze, hogy a számítógépek sikeresen csatlakoztak-e a corp.contoso.com.

  3. A folytatás előtt várja SQL Server, amíg a telepítés befejezi az automatizált inicializálási feladatok futtatását.

  4. Nyisson meg egy PowerShell-ablakot rendszergazdai módban.

  5. Telepítse a Windows Feladatátvételi fürtszolgáltatást.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering
    
  6. Adja hozzá a CORP\Install parancsot helyi rendszergazdaként.

    net localgroup administrators "CORP\Install" /Add
    
  7. Importálja a SQL Server PowerShell-szolgáltatót.

    Set-ExecutionPolicy -Execution RemoteSigned -Force
    Import-Module -Name "sqlps" -DisableNameChecking
    
  8. Adja hozzá a CORP\Install szerepkört rendszergazdai szerepkörként az alapértelmezett SQL Server példányhoz.

    net localgroup administrators "CORP\Install" /Add
    Invoke-SqlCmd -Query "EXEC sp_addsrvrolemember 'CORP\Install', 'sysadmin'" -ServerInstance "."
    
  9. Adja hozzá az NT AUTHORITY\System et bejelentkezésként a fent leírt három engedéllyel.

    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. Nyissa meg a tűzfalat a 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. Jelentkezzen ki mindkét virtuális gépről.

     logoff.exe
    

Végül készen áll a rendelkezésre állási csoport konfigurálásra. Az összes feladatot a SQL Server PowerShell-szolgáltatóval végezheti el a ContosoSQL1-ben.

A rendelkezésre állási csoport konfigurálása

  1. Csatlakozás a ContosoSQL1-hez a távoli asztali fájlok elindításával. A számítógépfiókkal való bejelentkezés helyett jelentkezzen be a CORP\Install használatával.

  2. Nyisson meg egy PowerShell-ablakot rendszergazdai módban.

  3. Adja meg a következő változókat:

    $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. Importálja a SQL Server PowerShell-szolgáltatót.

    Set-ExecutionPolicy RemoteSigned -Force
    Import-Module "sqlps" -DisableNameChecking
    
  5. Módosítsa a ContosoSQL1 SQL Server-szolgáltatásfiókját a következőre: 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. Módosítsa a ContosoSQL2 SQL Server-szolgáltatásfiókját a következőre: 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. Töltse CreateAzureFailoverCluster.ps1 azure-beli virtuális gépen található Always On rendelkezésre állási csoportok feladatátvevő fürt létrehozásacímtárból a helyi munkakönyvtárba. Ezt a szkriptet fogja használni egy működő feladatátvevő fürt létrehozásához. A feladatátvételi fürtszolgáltatás és az Azure-hálózat Windows kapcsolatos fontos információkért lásd: Magas rendelkezésre állás és vészhelyreállítás SQL Server Azure Virtual Machines.

  8. Váltsa át a munkakönyvtárat, és hozza létre a feladatátvevő fürtöt a letöltött szkript használatával.

    Set-ExecutionPolicy Unrestricted -Force
    .\CreateAzureFailoverCluster.ps1 -ClusterName "$clusterName" -ClusterNode "$server1","$server2","$serverQuorum"
    
  9. Engedélyezze az Always On rendelkezésre állási csoportokat az alapértelmezett SQL Server a ContosoSQL1 ésa ContosoSQL2 szolgáltatásban.

    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. Hozzon létre egy biztonsági mentési könyvtárat, és adjon engedélyeket a SQL Server-szolgáltatásfiókok számára. Ezzel a címtárval fogja előkészíteni a rendelkezésre állási adatbázist a másodlagos replikán.

    $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. Hozzon létre egy MyDB1 nevű adatbázist a ContosoSQL1-ben, készítsen teljes biztonsági mentést és naplómentéseket, és állítsa vissza őket a ContosoSQL2-n a WITH NORECOVERY beállítással.

    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. Hozza létre a rendelkezésre állási csoport végpontját a SQL Server virtuális gépeken, és állítsa be a megfelelő engedélyeket a végpontokra.

    $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. Hozza létre a rendelkezésre állási replikákat.

    $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. Végül hozza létre a rendelkezésre állási csoportot, és csatlakozzon a másodlagos replikához a rendelkezésre állási csoporthoz.

    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
    

Következő lépések

Sikeresen megvalósította az Always On SQL Server egy rendelkezésre állási csoport létrehozásával az Azure-ban. A rendelkezésre állási csoport figyelőinek konfigurálásról lásd: ILB-figyelő konfigurálása Always On rendelkezésre állási csoportokhoz az Azure-ban.

Az Azure-beli virtuális gépek SQL Server további információkért lásd: SQL Server Azure-beli virtuális gépeken.