PowerShell ile Azure VM'de Always On kullanılabilirlik grubunu yapılandırma

Başlamadan önce, bu görevi artık Azure Resource Manager modelinde tamamlayabilirsiniz. Yeni dağıtımlar için Azure Resource Manager modelini öneririz. Bkz. SQL Server Azure sanal makinelerde Always On kullanılabilirlik grupları.

Önemli

Yeni dağıtımların çoğunun Resource Manager öneririz. Azure, kaynak oluşturmak ve bu kaynaklarla çalışmak için iki dağıtım modeli kullanır: Resource Manager ve klasik. Bu makale klasik dağıtım modelini incelemektedir.

Azure sanal makineleri (VM), veritabanı yöneticilerinin yüksek kullanılabilirlik ve sanal makine SQL Server yardımcı olabilir. Bu öğreticide, Bir Azure ortamında Always On'SQL Server uzarak kullanarak bir kullanılabilirlik grubu uygulama hakkında bilgi sağlanır. Öğreticinin sonunda Azure'daki SQL Server Always On çözümünüz aşağıdaki öğelerden oluşur:

  • Ön uç ve arka uç alt ağı dahil olmak üzere birden çok alt ağ içeren bir sanal ağ.
  • Active Directory etki alanına sahip bir etki alanı denetleyicisi.
  • İki SQL Server alt ağın dağıtılacağı ve Active Directory etki alanına katılmış vm'ler kullanılabilir.
  • Üç düğümlü bir Windows Düğüm Çoğunluğu çekirdek modeline sahip bir yük devretme kümesidir.
  • Kullanılabilirlik veritabanının iki zaman uyumlu işleme çoğaltması olan bir kullanılabilirlik grubu.

Bu senaryo, maliyet açısından veya diğer faktörler için değil, Azure'da basitliği için iyi bir seçimdir. Örneğin, iki düğümlü bir yük devretme kümesinde çekirdek dosya paylaşımı tanığı olarak etki alanı denetleyicisini kullanarak Azure'da işlem saatlerinden tasarruf etmek için iki çoğaltmalı bir kullanılabilirlik grubu için VM sayısını en aza saldırabilirsiniz. Bu yöntem, yukarıdaki yapılandırmadan VM sayısını bir azaltır.

Bu öğretici, her adımın ayrıntılarını ayrıntıya girmeden yukarıda açıklanan çözümü ayarlamak için gereken adımları göstermek için tasarlanmıştır. Bu nedenle, GUI yapılandırma adımlarını sağlamak yerine PowerShell betiklerini kullanır ve her adımda hızla ilerler. Bu öğreticide, aşağıdakiler varsay varsaydır:

Bağlan Azure aboneliğinize bağlanın ve sanal ağı oluşturun

  1. Yerel bilgisayarınızda bir PowerShell penceresinde Azure modülünü içeri aktarın, yayımlama ayarları dosyasını makinenize indirin ve indirilen yayımlama ayarlarını içeri aktararak PowerShell oturumlarınızı Azure aboneliğinize bağlayın.

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

    Get-AzurePublishSettingsFile komutu, Azure ile otomatik olarak bir yönetim sertifikası üretir ve bunu makinenize indirir. Bir tarayıcı otomatik olarak açılır ve Azure aboneliğiniz için Microsoft hesabı bilgilerini girmeniz istenir. İndirilen .publishsettings dosyası, Azure aboneliğinizi yönetmek için ihtiyacınız olan tüm bilgileri içerir. Bu dosyayı yerel bir dizine kaydeddikten sonra Import-AzurePublishSettingsFile komutunu kullanarak içeri aktarın .

    Not

    .publishsettings dosyası, Azure aboneliklerinizi ve hizmetlerinizi yönetmek için kullanılan kimlik bilgilerinizi (kodlanmamış) içerir. Bu dosyanın en iyi güvenlik uygulaması, dosyayı geçici olarak kaynak dizinlerinin dışında (örneğin, Libraries\Documents klasöründe) depolamak ve ardından içeri aktarma işlemi tamam olduktan sonra silmektir. .publishsettings dosyasına erişim elde eden kötü amaçlı bir kullanıcı Azure hizmetlerinizi düzenleyebilir, oluşturabilir ve silebilir.

  2. Bulut IT altyapınızı oluşturmak için kullanabileceğiniz bir dizi değişken tanımlayın.

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

    Komutlarının daha sonra başarılı olmasını sağlamak için aşağıdakilere dikkatin:

    • Bulut $storageAccountNameve $dcServiceName , sırasıyla bulut depolama hesabını ve bulut sunucusunu İnternet'e tanımlamak için kullanıldıklarından, bu değişkenlerin benzersiz olması gerekir.
    • Değişkenler için belirttiğiniz adlar $affinityGroupName$virtualNetworkName daha sonra kullanmak üzere sanal ağ yapılandırma belgesinde yapılandırılır.
    • $sqlImageName, 2012 Service Pack 1 SQL Server vm görüntüsünün güncelleştirilmiş adını Enterprise Sürümü.
    • Kolaylık olması için Contoso!000 , öğreticinin tamamına kullanılan parolayla aynıdır.
  3. Bir benzeşm grubu oluşturun.

    New-AzureAffinityGroup `
        -Name $affinityGroupName `
        -Location $location `
        -Description $affinityGroupDescription `
        -Label $affinityGroupLabel
    
  4. Yapılandırma dosyasını içeri aktararak bir sanal ağ oluşturun.

    Set-AzureVNetConfig `
        -ConfigurationPath $networkConfigPath
    

    Yapılandırma dosyası aşağıdaki XML belgesini içerir. Kısaca, ContosoAG adlı benzeşm grubunda ContosoNET adlı bir sanal ağ belirtir. Adres alanı 10.10.0.0/16'dır ve sırasıyla ön alt ağ ve arka alt ağ olan 10.10.1.0/24 ve 10.10.2.0/24 alt ağı vardır. Ön alt ağ, Microsoft SharePoint gibi istemci uygulamalarını SharePoint. Arka alt ağ, sanal SQL Server yer atır. Daha önce $affinityGroupName ve$virtualNetworkName değiştirirsiniz, ayrıca aşağıdaki adları da değiştirebilirsiniz.

    <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. Oluşturduğunuz benzeşim grubuyla ilişkili bir depolama hesabı oluşturun ve bunu aboneliğinizin geçerli depolama hesabı olarak ayarlayın.

    New-AzureStorageAccount `
        -StorageAccountName $storageAccountName `
        -Label $storageAccountLabel `
        -AffinityGroup $affinityGroupName
    Set-AzureSubscription `
        -SubscriptionName (Get-AzureSubscription).SubscriptionName `
        -CurrentStorageAccount $storageAccountName
    
  6. Yeni bulut hizmeti ve kullanılabilirlik kümesinde etki alanı denetleyicisi sunucusunu oluşturun.

    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
    

    Bu kanallı komutlar şunları yapar:

    • New-AzureVMConfig bir VM yapılandırması oluşturur.
    • Add-AzureProvisioningConfig, tek başına bir sunucu için yapılandırma Windows verir.
    • Add-AzureDataDisk , Active Directory verilerini depolamak için kullanabileceğiniz veri diskini önbelleğe alma seçeneği Yok olarak ayarlanmış şekilde ekler.
    • New-AzureVM yeni bir bulut hizmeti oluşturur ve yeni bulut hizmetine yeni Azure VM'lerini oluşturur.
  7. Yeni VM'nin tam olarak sağlanmasını bekleyin ve uzak masaüstü dosyasını çalışma dizininize indirin. Yeni Azure VM'nin sağlanması uzun zaman alalı olduğundan, while döngü kullanıma hazır olana kadar yeni VM'yi yoklamaya devam eder.

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

Etki alanı denetleyicisi sunucusu artık başarıyla sağlanmıştır. Ardından, bu etki alanı denetleyicisi sunucusunda Active Directory etki alanını yapılandırabilirsiniz. Yerel bilgisayarınızda PowerShell penceresini açık bırakın. Bunu daha sonra iki vm oluşturmak için SQL Server kullanacağız.

Etki alanı denetleyicisini yapılandırma

  1. Bağlan masaüstü dosyasını başlatarak etki alanı denetleyicisi sunucusuna bağlanabilirsiniz. Makine yöneticisinin AzureAdmin kullanıcı adını ve yeni VM'yi oluşturulduğunda belirttiğiniz Contoso!000 parolasını kullanın.

  2. Yönetici modunda bir PowerShell penceresi açın.

  3. M sürücüsündeDCPROMO.EXE dizinleri ile corp.contoso.com etki alanını ayarlamak için aşağıdaki komutu çalıştırın.

    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"
    

    Komut tamam olduktan sonra VM otomatik olarak yeniden başlatılır.

  4. Bağlan masaüstü dosyasını başlatarak etki alanı denetleyicisi sunucusuna yeniden bağlanabilirsiniz. Bu kez CORP\Administrator olarak oturum açın.

  5. Yönetici modunda bir PowerShell penceresi açın ve aşağıdaki komutu kullanarak Active Directory PowerShell modülünü içeri aktarın:

    Import-Module ActiveDirectory
    
  6. Etki alanına üç kullanıcı eklemek için aşağıdaki komutları çalıştırın.

    $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, hizmet örnekleri, yük devretme kümesi SQL Server kullanılabilirlik grubu ile ilgili her şeyi yapılandırmak için kullanılır. CORP\SQLSvc1 ve CORP\SQLSvc2, iki sanal SQL Server sanal SQL Server kullanılır.

  7. Ardından, CORP\Install'a etki alanında bilgisayar nesneleri oluşturma izinlerini vermek için aşağıdaki komutları çalıştırı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
    

    Yukarıda belirtilen GUID, bilgisayar nesne türü için GUID'tir. CORP\Install hesabı, yük devretme kümesi için Etkin Doğrudan nesneleri oluşturmak için Tüm Özellikleri Oku ve Bilgisayar Nesneleri Oluştur iznine sahip olmalıdır. Tüm Özellikleri Oku izni varsayılan olarak CORP\Install'a zaten verilmiştir, bu nedenle açıkça izin vermek zorunda değildir. Yük devretme kümesi oluşturmak için gereken izinler hakkında daha fazla bilgi için bkz. Yük Devretme Kümesi Adım Adım Kılavuzu: Active Directory'de Hesapları Yapılandırma.

    Active Directory ve kullanıcı nesnelerini yapılandırmayı tamam istediğinize göre iki sanal SQL Server bu etki alanına katabilirsiniz.

Sanal SQL Server oluşturma

  1. Yerel bilgisayarınızda açık olan PowerShell penceresini kullanmaya devam edin. Aşağıdaki ek değişkenleri tanımlayın:

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

    10.10.0.4 IP adresi genellikle Azure sanal ağ 10.10.0.0/16 alt ağın ilk SANAL MAKINESIne atanır. IPCONFIG'yi çalıştırarak bunun etki alanı denetleyicinizin adresi olduğunu doğrulamanız gerekir.

  2. Yük devretme kümesinde ContosoQuorum adlı ilk VM'yi oluşturmak için aşağıdaki kanallı komutları çalıştırın:

    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
    

    Yukarıdaki komutla ilgili olarak aşağıdakilere dikkat:

    • New-AzureVMConfig , istenen kullanılabilirlik kümesi adıyla bir VM yapılandırması oluşturur. Sonraki VM'ler aynı kullanılabilirlik kümesi adıyla oluşturularak aynı kullanılabilirlik kümesine katılmalarını sağlar.
    • Add-AzureProvisioningConfig , VM'yi oluşturduğunuz Active Directory etki alanına ekler.
    • Set-AzureSubnet , VM'yi arka alt ağlara yer alır.
    • New-AzureVM yeni bir bulut hizmeti oluşturur ve yeni bulut hizmetine yeni Azure VM'lerini oluşturur. DnsSettings parametresi, yeni bulut hizmeti sunucuları için DNS sunucusunun 10.10.0.4 IP adresine sahip olduğunu belirtir. Bu, etki alanı denetleyicisi sunucusunun IP adresidir. Bu parametre, bulut hizmette yeni VM'lerin Active Directory etki alanına başarıyla katılmasını sağlamak için gereklidir. Bu parametre olmadan, VM'niz sağlandıktan sonra etki alanı denetleyicisi sunucusunu birincil DNS sunucusu olarak kullanmak için VM'nizin IPv4 ayarlarını el ile ayarlamalı ve sonra VM'yi Active Directory etki alanına katmalısınız.
  3. ContosoSQL1 ve ContosoSQL2 adlı sanal SQL Server oluşturmak için aşağıdaki kanallı komutları çalıştırın.

    # 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
    

    Yukarıdaki komutlarla ilgili olarak aşağıdakilere dikkat:

    • New-AzureVMConfig, etki alanı denetleyicisi sunucusuyla aynı kullanılabilirlik kümesi adını kullanır ve sanal makine galerisinde SQL Server 2012 Service Pack 1 Enterprise Sürümü görüntüsünü kullanır. Ayrıca işletim sistemi diskini yalnızca okuma önbelleğine ayarlar (yazma önbelleği yoktur). Veritabanı dosyalarını VM'ye iliştirdiğiniz ayrı bir veri diske geçirmenizi ve okuma veya yazma önbelleğiyle yapılandırmanız önerilir. Ancak, bir sonraki en iyi şey işletim sistemi diskini okuma önbelleğini kaldıralamayabilirsiniz çünkü işletim sistemi diskini yazma önbelleğini kaldırmaktır.
    • Add-AzureProvisioningConfig , VM'yi oluşturduğunuz Active Directory etki alanına ekler.
    • Set-AzureSubnet , VM'yi arka alt ağlara yer alır.
    • Add-AzureEndpoint, istemci uygulamalarının bu hizmet örneklerine İnternet'te SQL Server erişim uç noktaları ekler. ContosoSQL1 ve ContosoSQL2'ye farklı bağlantı noktaları verilir.
    • New-AzureVM, ContosoQuorum SQL Server bulut hizmette yeni bir sanal makine oluşturur. Vm'leri aynı kullanılabilirlik kümesinde yer almak için aynı bulut hizmetine depolamalısiniz.
  4. Her VM'nin tam olarak sağlanmasını ve her VM'nin uzak masaüstü dosyasını çalışma dizininize indirmesini bekleyin. döngüsü for üç yeni VM'de döngüye girip komutları her biri için üst düzey köşeli ayraç içinde yürütür.

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

    Sanal SQL Server artık sağlandı ve çalışıyor, ancak varsayılan seçeneklerle SQL Server ile birlikte yüklenir.

Yük devretme kümesi VM'lerini başlatma

Bu bölümde, yük devretme kümesinde ve yük devretme kümesinde kullanabileceğiniz üç sunucu üzerinde değişiklik SQL Server gerekir. Özellikle:

  • Tüm sunucular: Yük Devretme Kümeleme özelliğini yüklemeniz gerekir.

  • Tüm sunucular: CORP \Install'i makine yöneticisi olarak eklemeniz gerekir.

  • Yalnızca ContosoSQL1 ve ContosoSQL2: Corp\Install'ı varsayılan veritabanına sysadmin rolü olarak eklemeniz gerekir.

  • Yalnızca ContosoSQL1 ve ContosoSQL2: Nt AUTHORITY\System'i aşağıdaki izinlerle oturum açma olarak eklemeniz gerekir:

    • Kullanılabilirlik gruplarını değiştirme
    • Bağlan SQL
    • Sunucu durumunu görüntüleme
  • Yalnızca ContosoSQL1 ve ContosoSQL2: TCP protokolü sanal makinede SQL Server etkindir. Ancak, güvenlik duvarlarının uzaktan erişimi için güvenlik duvarını SQL Server.

Artık başlamaya hazır mısınız? ContosoQuorum'dan itibaren aşağıdaki adımları izleyin:

  1. Bağlan masaüstü dosyalarını başlatarak ContosoQuorum'a bağlanabilirsiniz. Makine yöneticisinin AzureAdmin kullanıcı adını ve sanal makineleri oluşturulduğunda belirttiğiniz Contoso!000 parolasını kullanın.

  2. Bilgisayarların corp.contoso.com'a başarıyla katıldığını doğrulayın.

  3. Devam etmeden SQL Server başlatma görevlerinin çalıştırıla bitmeden önce yükleme işleminin tamamlayana kadar bekleyin.

  4. Yönetici modunda bir PowerShell penceresi açın.

  5. Yük Devretme Windows özelliğini yükleyin.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering
    
  6. CORP\Install'i yerel yönetici olarak ekleyin.

    net localgroup administrators "CORP\Install" /Add
    
  7. ContosoQuorum'da oturum açma. Bu sunucuyla artık hiçbir şey yapmayabilirsiniz.

    logoff.exe
    

Ardından ContosoSQL1 veContosoSQL2'i başlatalım. Her iki vm için de aynı olan aşağıdaki SQL Server izleyin.

  1. Bağlan masaüstü dosyalarını SQL Server vm'lere bağlanabilirsiniz. Makine yöneticisinin AzureAdmin kullanıcı adını ve sanal makineleri oluşturulduğunda belirttiğiniz Contoso!000 parolasını kullanın.

  2. Bilgisayarların corp.contoso.com'a başarıyla katıldığını doğrulayın.

  3. Devam etmeden SQL Server başlatma görevlerinin çalıştırıla bitmeden önce yükleme işleminin tamamlayana kadar bekleyin.

  4. Yönetici modunda bir PowerShell penceresi açın.

  5. Yük Devretme Windows özelliğini yükleyin.

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering
    
  6. CORP\Install'i yerel yönetici olarak ekleyin.

    net localgroup administrators "CORP\Install" /Add
    
  7. PowerShell SQL Server'i içeri aktarın.

    Set-ExecutionPolicy -Execution RemoteSigned -Force
    Import-Module -Name "sqlps" -DisableNameChecking
    
  8. Varsayılan uygulama örneği için sysadmin rolü olarak CORP\Install SQL Server ekleyin.

    net localgroup administrators "CORP\Install" /Add
    Invoke-SqlCmd -Query "EXEC sp_addsrvrolemember 'CORP\Install', 'sysadmin'" -ServerInstance "."
    
  9. Nt AUTHORITY\System'i yukarıda açıklanan üç izinle oturum açma olarak ekleyin.

    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. Güvenlik duvarında uzaktan erişim için güvenlik duvarını 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. Her iki VM'de de oturum açma.

     logoff.exe
    

Son olarak, kullanılabilirlik grubunu yapılandırmaya hazır oluruz. ContosoSQL1'SQL Server tüm çalışmaları gerçekleştirmek için powershell sağlayıcısını kullanacağız.

Kullanılabilirlik grubunu yapılandırma

  1. Bağlan masaüstü dosyalarını başlatarak ContosoSQL1'e yeniden bağlanabilirsiniz. Makine hesabını kullanarak oturum açma yerine CORP\Install kullanarak oturum açın.

  2. Yönetici modunda bir PowerShell penceresi açın.

  3. Aşağıdaki değişkenleri tanımlayın:

    $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. PowerShell SQL Server'i içeri aktarın.

    Set-ExecutionPolicy RemoteSigned -Force
    Import-Module "sqlps" -DisableNameChecking
    
  5. ContosoSQL1 SQL Server hizmet hesabını CORP\SQLSvc1 olarak değiştirme.

    $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. ContosoSQL2 SQL Server hesabı corp\SQLSvc2 olarak değişir.

    $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. Azure CreateAzureFailoverCluster.ps1Always On Kullanılabilirlik Grupları için Yük Devretme Kümesi Oluşturma'dan yerel çalışma dizinine bir dosya indirin. İşlevsel bir yük devretme kümesi oluşturmanıza yardımcı olması için bu betiği kullanabilirsiniz. Yük Devretme Kümeleme Windows Azure ağıyla nasıl etkileşim kurduğu hakkında önemli bilgiler için bkz. Azure SQL Server için yüksek kullanılabilirlik ve olağanüstü durum Sanal Makineler.

  8. Çalışma dizininize geçin ve indirilen betikle yük devretme kümesi oluşturun.

    Set-ExecutionPolicy Unrestricted -Force
    .\CreateAzureFailoverCluster.ps1 -ClusterName "$clusterName" -ClusterNode "$server1","$server2","$serverQuorum"
    
  9. ContosoSQL1 ve ContosoSQL2'de varsayılan SQL Server için Always On kullanılabilirlik gruplarını etkinleştirin.

    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. Bir yedekleme dizini oluşturun ve hizmet hesapları için SQL Server verin. İkincil çoğaltmada kullanılabilirlik veritabanını hazırlamak için bu dizini kullanırsınız.

    $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. ContosoSQL1 üzerinde MyDB1 adlı bir veritabanı oluşturun, hem tam yedekleme hem de günlük yedeklemesi yapın ve NORECOVERY ILEbunları ContosoSQL2'ye geri yükleyin.

    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. Vm'lerde kullanılabilirlik grubu SQL Server uç noktaları oluşturun ve uç noktalar üzerinde uygun izinleri ayarlayın.

    $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. Kullanılabilirlik çoğaltmalarını oluşturun.

    $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. Son olarak, kullanılabilirlik grubunu oluşturun ve ikincil çoğaltmayı kullanılabilirlik grubuna katılın.

    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
    

Sonraki adımlar

Azure'da bir kullanılabilirlik grubu SQL Server Always On'a başarıyla uygulamaya geçtiniz. Bu kullanılabilirlik grubuna bir dinleyici yapılandırmak için bkz. Azure'da Always On kullanılabilirlik grupları için ILB dinleyicisi yapılandırma.

Azure'da sanal makineleri SQL Server diğer bilgiler için bkz. SQL Server Azure sanal makinelerini kullanma.