Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przed rozpoczęciem należy wziąć pod uwagę, że możesz teraz wykonać to zadanie w modelu usługi Azure Resource Manager. Zalecamy model usługi Azure Resource Manager dla nowych wdrożeń. Zobacz grupy dostępności Always On programu SQL Server na maszynach wirtualnych platformy Azure.
Ważne
Zalecamy, aby większość nowych wdrożeń korzystała z modelu usługi Resource Manager. Platforma Azure oferuje dwa różne modele wdrażania związane z tworzeniem zasobów i pracą z nimi: model wdrażania przy użyciu usługi Azure Resource Manager i model klasyczny. Ten artykuł dotyczy klasycznego modelu wdrożenia.
Maszyny wirtualne platformy Azure mogą pomóc administratorom baz danych obniżyć koszty systemu SQL Server o wysokiej dostępności. W tym samouczku pokazano, jak zaimplementować grupę dostępności przy użyciu funkcji Always On programu SQL Server w środowisku Azure. Na końcu samouczka rozwiązanie SQL Server Always On na platformie Azure będzie składać się z następujących elementów:
- Sieć wirtualna zawierająca wiele podsieci, w tym fronton i podsieć zaplecza.
- Kontroler domeny z domeną usługi Active Directory.
- Dwie maszyny wirtualne programu SQL Server wdrożone w podsieci zaplecza i przyłączone do domeny usługi Active Directory.
- Trzywęzłowy klaster trybu failover systemu Windows z modelem kworum większości węzłów.
- Grupa dostępności z dwiema synchronicznymi replikami bazy danych dostępności.
Ten scenariusz jest dobrym wyborem dla prostoty platformy Azure, a nie ze względu na efektywność kosztową lub inne czynniki. Można na przykład zminimalizować liczbę maszyn wirtualnych dla grupy dostępności z dwiema replikami, aby zaoszczędzić na godzinach obliczeniowych na platformie Azure przy użyciu kontrolera domeny jako monitora udziału plików kworum w klastrze trybu failover z dwoma węzłami. Ta metoda zmniejsza liczbę maszyn wirtualnych o jedną z powyższej konfiguracji.
Ten samouczek ma na celu przedstawienie kroków wymaganych do skonfigurowania opisanego powyżej rozwiązania bez konieczności opracowywania szczegółów każdego kroku. Dlatego zamiast dostarczać kroki konfiguracji graficznego interfejsu użytkownika, używa skryptów programu PowerShell do szybkiego wykonania każdego kroku. Niniejszy samouczek zakłada, że:
- Masz już konto platformy Azure z subskrypcją maszyny wirtualnej.
- Zainstalowano polecenia cmdlet w programie Azure PowerShell.
- Masz już solidną wiedzę na temat grup dostępności Always On dla rozwiązań lokalnych. Aby uzyskać więcej informacji, zobacz Zawsze włączone grupy dostępności (SQL Server).
Nawiązywanie połączenia z subskrypcją platformy Azure i tworzenie sieci wirtualnej
W oknie programu PowerShell na komputerze lokalnym zaimportuj moduł platformy Azure, pobierz plik ustawień publikowania na komputer i połącz sesję programu PowerShell z subskrypcją platformy Azure, importując pobrane ustawienia publikowania.
Import-Module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Azure\Azure.psd1" Get-AzurePublishSettingsFile Import-AzurePublishSettingsFile <publishsettingsfilepath>Polecenie Get-AzurePublishSettingsFile automatycznie generuje certyfikat zarządzania za pomocą platformy Azure i pobiera go na komputer. Zostanie automatycznie otwarta przeglądarka i zostanie wyświetlony monit o wprowadzenie poświadczeń konta Microsoft dla subskrypcji platformy Azure. Pobrany plik publishsettings zawiera wszystkie informacje potrzebne do zarządzania subskrypcją platformy Azure. Po zapisaniu tego pliku w katalogu lokalnym zaimportuj go przy użyciu polecenia Import-AzurePublishSettingsFile .
Uwaga
Plik publishsettings zawiera poświadczenia (niezakodowane), które są używane do administrowania subskrypcjami i usługami platformy Azure. Najlepszym rozwiązaniem w zakresie zabezpieczeń dla tego pliku jest tymczasowe przechowywanie go poza katalogami źródłowymi (na przykład w folderze Libraries\Documents), a następnie usunięcie go po zakończeniu importowania. Złośliwy użytkownik, który uzyskuje dostęp do pliku .publishsettings, może edytować, tworzyć i usuwać usługi platformy Azure.
Zdefiniuj szereg zmiennych, których będziesz używać do tworzenia infrastruktury IT w chmurze.
$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\"Zwróć uwagę na następujące kwestie, aby upewnić się, że polecenia zostaną wykonane później:
- Zmienne $storageAccountName i $dcServiceName muszą być unikatowe, ponieważ są używane do identyfikacji odpowiednio twojego konta magazynu w chmurze i serwera w Internecie.
- Nazwy określone dla zmiennych $affinityGroupName i $virtualNetworkName są konfigurowane w dokumencie konfiguracji sieci wirtualnej, który będzie używany później.
- $sqlImageName określa zaktualizowaną nazwę obrazu maszyny wirtualnej, który zawiera program SQL Server 2012 z dodatkiem Service Pack 1 Enterprise Edition.
- Dla uproszczenia Contoso!000 jest tym samym hasłem używanym w całym samouczku.
Utwórz grupę koligacji.
New-AzureAffinityGroup ` -Name $affinityGroupName ` -Location $location ` -Description $affinityGroupDescription ` -Label $affinityGroupLabelUtwórz sieć wirtualną, importując plik konfiguracji.
Set-AzureVNetConfig ` -ConfigurationPath $networkConfigPathPlik konfiguracji zawiera następujący dokument XML. Krótko mówiąc, określa sieć wirtualną o nazwie ContosoNET w grupie koligacji o nazwie ContosoAG. Ma przestrzeń adresową 10.10.0.0/16 i ma dwie podsieci, odpowiednio 10.10.1.0/24 i 10.10.2.0/24, które są podsiecią frontonu i podsiecią zaplecza. Podsieć frontowa to miejsce, w którym można umieszczać aplikacje klienckie, takie jak Microsoft SharePoint. Podsieć wsteczna to miejsce, w którym zostaną wprowadzone maszyny wirtualne programu SQL Server. Jeśli wcześniej zmienisz zmienne $affinityGroupName i $virtualNetworkName , musisz również zmienić odpowiednie nazwy poniżej.
<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> ```xmlUtwórz konto magazynu powiązane z grupą koligacji, którą utworzyłeś, i skonfiguruj je jako bieżące konto magazynu w swojej subskrypcji.
New-AzureStorageAccount ` -StorageAccountName $storageAccountName ` -Label $storageAccountLabel ` -AffinityGroup $affinityGroupName Set-AzureSubscription ` -SubscriptionName (Get-AzureSubscription).SubscriptionName ` -CurrentStorageAccount $storageAccountNameUtwórz serwer kontrolera domen w nowej usłudze chmurowej i zestawie dostępności.
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 $virtualNetworkNameTe przekazywane polecenia wykonują następujące czynności:
- Polecenie New-AzureVMConfig tworzy konfigurację maszyny wirtualnej.
- Polecenie Add-AzureProvisioningConfig udostępnia parametry konfiguracji autonomicznego serwera z systemem Windows.
- Add-AzureDataDisk dodaje dysk danych, który będzie używany do przechowywania danych usługi Active Directory, z opcją buforowania ustawioną na Wartość Brak.
- New-AzureVM tworzy nową usługę w chmurze i tworzy nową maszynę wirtualną platformy Azure w nowej usłudze w chmurze.
Poczekaj na pełną aprowizację nowej maszyny wirtualnej i pobierz plik pulpitu zdalnego do katalogu roboczego. Ponieważ aprowizacja nowej maszyny wirtualnej platformy Azure trwa długo, pętla
whilenadal sonduje nową maszynę wirtualną, dopóki nie będzie gotowa do użycia.$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"
Serwer kontrolera domeny jest teraz pomyślnie aprowizowany. Następnie skonfigurujesz domenę usługi Active Directory na tym serwerze kontrolera domeny. Pozostaw otwarte okno programu PowerShell na komputerze lokalnym. Użyjesz go ponownie później do utworzenia dwóch maszyn wirtualnych programu SQL Server.
Konfigurowanie kontrolera domeny
Połącz się z serwerem kontrolera domeny, uruchamiając plik pulpitu zdalnego. Użyj nazwy użytkownika administratora maszyny AzureAdmin i hasła Contoso!000, która została określona podczas tworzenia nowej maszyny wirtualnej.
Otwórz okno programu PowerShell w trybie administratora.
Uruchom następujące polecenie DCPROMO.EXE , aby skonfigurować domenę corp.contoso.com z katalogami danych na dysku 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 zakończeniu polecenia maszyna wirtualna zostanie automatycznie uruchomiona ponownie.
Połącz się ponownie z serwerem kontrolera domeny, uruchamiając plik pulpitu zdalnego. Tym razem zaloguj się jako CORP\Administrator.
Otwórz okno programu PowerShell w trybie administratora i zaimportuj moduł Programu PowerShell usługi Active Directory przy użyciu następującego polecenia:
Import-Module ActiveDirectoryUruchom następujące polecenia, aby dodać trzech użytkowników do domeny.
$pwd = ConvertTo-SecureString "Contoso!000" -AsPlainText -Force New-ADUser ` -Name 'Install' ` -AccountPassword $pwd ` -PasswordNeverExpires $true ` -ChangePasswordAtLogon $false ` -Enabled $true New-ADUser ` -Name 'SQLSvc1' ` -AccountPassword $pwd ` -PasswordNeverExpires $true ` -ChangePasswordAtLogon $false ` -Enabled $true New-ADUser ` -Name 'SQLSvc2' ` -AccountPassword $pwd ` -PasswordNeverExpires $true ` -ChangePasswordAtLogon $false ` -Enabled $trueCorp\Install służy do konfigurowania wszystkich elementów związanych z wystąpieniami usług programu SQL Server, klastrem trybu failover i grupą dostępności. Corp\SQLSvc1 i CORP\SQLSvc2 są używane jako konta usług programu SQL Server dla dwóch maszyn wirtualnych programu SQL Server.
Następnie uruchom następujące polecenia, aby nadać CORP\Install uprawnienia do tworzenia obiektów komputerów w domenie.
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 $aclOkreślony powyżej identyfikator GUID jest identyfikatorem GUID dla typu obiektu komputera. Konto CORP\Install wymaga uprawnień Odczyt wszystkich właściwości oraz Tworzenie obiektów komputerów, aby utworzyć obiekty Active Directory dla klastra odporności na awarie. Uprawnienie Odczyt wszystkich właściwości jest już automatycznie nadane użytkownikowi CORP\Install, więc nie trzeba go jawnie udzielać. Aby uzyskać więcej informacji na temat uprawnień wymaganych do utworzenia klastra trybu failover, zobacz Przewodnik krok po kroku dotyczący konfigurowania kont w usłudze Active Directory.
Po zakończeniu konfigurowania usługi Active Directory i obiektów użytkownika utworzysz dwie maszyny wirtualne programu SQL Server i dołączysz je do tej domeny.
Tworzenie maszyn wirtualnych programu SQL Server
Kontynuuj korzystanie z okna programu PowerShell otwartego na komputerze lokalnym. Zdefiniuj następujące dodatkowe zmienne:
$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"Adres IP 10.10.0.4 jest zazwyczaj przypisywany do pierwszej maszyny wirtualnej utworzonej w podsieci 10.10.0.0/16 sieci wirtualnej platformy Azure. Należy sprawdzić, czy jest to adres serwera kontrolera domeny, uruchamiając polecenie IPCONFIG.
Uruchom następujące potokowe polecenia, aby utworzyć pierwszą maszynę wirtualną w klastrze przełączania awaryjnego o nazwie 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 $dnsSettingsZwróć uwagę na następujące kwestie dotyczące powyższego polecenia:
- Polecenie New-AzureVMConfig tworzy konfigurację maszyny wirtualnej o żądanej nazwie zestawu dostępności. Kolejne maszyny wirtualne zostaną utworzone przy użyciu tej samej nazwy zestawu dostępności, aby były przyłączone do tego samego zestawu dostępności.
- Polecenie Add-AzureProvisioningConfig dołącza maszynę wirtualną do utworzonej domeny usługi Active Directory.
- Set-AzureSubnet umieszcza maszynę wirtualną w podsieci zaplecza.
- New-AzureVM tworzy nową usługę w chmurze i tworzy nową maszynę wirtualną platformy Azure w nowej usłudze w chmurze. Parametr DnsSettings określa, że serwer DNS dla serwerów w nowej usłudze w chmurze ma adres IP 10.10.0.4. Jest to adres IP serwera kontrolera domeny. Ten parametr jest wymagany do umożliwienia pomyślnego przyłączenia nowych maszyn wirtualnych w usłudze w chmurze do domeny usługi Active Directory. Bez tego parametru należy ręcznie ustawić ustawienia IPv4 na maszynie wirtualnej, aby użyć serwera kontrolera domeny jako podstawowego serwera DNS po aprowizacji maszyny wirtualnej, a następnie dołączyć maszynę wirtualną do domeny usługi Active Directory.
Uruchom następujące potokowe polecenia, aby utworzyć maszyny wirtualne programu SQL Server o nazwach ContosoSQL1 i 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 $sqlServiceNameZwróć uwagę na następujące polecenia dotyczące powyższych poleceń:
- New-AzureVMConfig używa tej samej nazwy zestawu dostępności, co serwer kontrolera domeny, i używa obrazu SQL Server 2012 Service Pack 1 Enterprise Edition w galerii maszyn wirtualnych. Ustawia również dysk systemu operacyjnego na buforowanie odczytu (bez buforowania zapisu). Zalecamy przeprowadzenie migracji plików bazy danych na oddzielny dysk danych dołączony do maszyny wirtualnej i skonfigurowanie go bez buforowania odczytu ani zapisu. Jednak następną najlepszą rzeczą jest usunięcie buforowania zapisu na dysku systemu operacyjnego, ponieważ nie można usunąć buforowania odczytu na dysku systemu operacyjnego.
- Polecenie Add-AzureProvisioningConfig dołącza maszynę wirtualną do utworzonej domeny usługi Active Directory.
- Set-AzureSubnet umieszcza maszynę wirtualną w podsieci zaplecza.
- Dodatek AzureEndpoint dodaje punkty końcowe dostępu, aby aplikacje klienckie mogły uzyskiwać dostęp do tych wystąpień usług programu SQL Server w Internecie. Różne porty przydzielono do ContosoSQL1 i ContosoSQL2.
- Maszyna wirtualna New-AzureVM tworzy nową maszynę wirtualną z programem SQL Server w tej samej usłudze w chmurze co ContosoQuorum. Maszyny wirtualne należy umieścić w tej samej usłudze w chmurze, jeśli chcesz, aby były w tym samym zestawie dostępności.
Poczekaj, aż każda maszyna wirtualna zostanie w pełni aprowizowana, a następnie pobierz plik pulpitu zdalnego każdej maszyny wirtualnej do katalogu roboczego. Pętla
forprzechodzi przez trzy nowe maszyny wirtualne i wykonuje polecenia wewnątrz zewnętrznych nawiasów klamrowych dla każdej 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" }Maszyny wirtualne SQL Server są teraz aprowizowane i uruchomione, ale są zainstalowane z domyślnymi opcjami.
Zainicjuj maszyny wirtualne klastra awaryjnego
W tej sekcji należy zmodyfikować trzy serwery, które będą używane w klastrze trybu failover i instalacji programu SQL Server. Specyficznie:
Na wszystkich serwerach należy zainstalować funkcję klastrowania przełączania awaryjnego.
Wszystkie serwery: musisz dodać CORP\Install jako administrator maszyny.
Tylko ContosoSQL1 i ContosoSQL2: musisz dodać CORP\Install jako rolę sysadmin w domyślnej bazie danych.
Tylko ContosoSQL1 i ContosoSQL2: musisz dodać NT AUTHORITY\System jako login z następującymi uprawnieniami:
- Zmienianie dowolnej grupy dostępności
- Łączenie z programem SQL
- Wyświetl stan serwera
Tylko contosoSQL1 i ContosoSQL2: protokół TCP jest już włączony na maszynie wirtualnej z programem SQL Server. Jednak nadal musisz otworzyć zaporę w celu zdalnego dostępu do programu SQL Server.
Teraz możesz rozpocząć pracę. Począwszy od contosoQuorum, wykonaj poniższe kroki:
Połącz się z aplikacją ContosoQuorum , uruchamiając pliki pulpitu zdalnego. Użyj nazwy użytkownika administratora maszyny AzureAdmin i hasła Contoso!000, która została określona podczas tworzenia maszyn wirtualnych.
Sprawdź, czy komputery zostały pomyślnie przyłączone do corp.contoso.com.
Przed kontynuowaniem poczekaj na zakończenie instalacji programu SQL Server, aby zakończyć uruchamianie zautomatyzowanych zadań inicjowania.
Otwórz okno programu PowerShell w trybie administratora.
Zainstaluj funkcję klastrowania przełączania awaryjnego systemu Windows.
Import-Module ServerManager Add-WindowsFeature Failover-ClusteringDodaj corp\Install jako administrator lokalny.
net localgroup administrators "CORP\Install" /AddWyloguj się z contosoQuorum. Teraz skończysz z tym serwerem.
logoff.exe
Następnie zainicjuj ContosoSQL1 i ContosoSQL2. Wykonaj poniższe kroki, które są identyczne dla obu maszyn wirtualnych programu SQL Server.
Połącz się z dwiema maszynami wirtualnymi programu SQL Server, uruchamiając pliki pulpitu zdalnego. Użyj nazwy użytkownika administratora maszyny AzureAdmin i hasła Contoso!000, która została określona podczas tworzenia maszyn wirtualnych.
Sprawdź, czy komputery zostały pomyślnie przyłączone do corp.contoso.com.
Przed kontynuowaniem poczekaj na zakończenie instalacji programu SQL Server, aby zakończyć uruchamianie zautomatyzowanych zadań inicjowania.
Otwórz okno programu PowerShell w trybie administratora.
Zainstaluj funkcję klastrowania przełączania awaryjnego systemu Windows.
Import-Module ServerManager Add-WindowsFeature Failover-ClusteringDodaj corp\Install jako administrator lokalny.
net localgroup administrators "CORP\Install" /AddZaimportuj dostawcę PowerShell dla SQL Server.
Set-ExecutionPolicy -Execution RemoteSigned -Force Import-Module -Name "sqlps" -DisableNameCheckingDodaj corp\Install jako rolę administratora systemu dla domyślnego wystąpienia programu SQL Server.
net localgroup administrators "CORP\Install" /Add Invoke-SqlCmd -Query "EXEC sp_addsrvrolemember 'CORP\Install', 'sysadmin'" -ServerInstance "."Dodaj NT AUTHORITY\System jako logowanie z trzema uprawnieniami opisanymi powyżej.
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 "."Otwórz zaporę na potrzeby zdalnego dostępu do programu 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=TCPWyloguj się z obu maszyn wirtualnych.
logoff.exe
Na koniec możesz skonfigurować grupę dostępności. Użyjesz dostawcy programu SQL Server PowerShell, aby wykonać całą pracę w usłudze ContosoSQL1.
Konfigurowanie grupy dostępności
Połącz się ponownie z serwerem ContosoSQL1 , uruchamiając pliki pulpitu zdalnego. Zamiast logowania się przy użyciu konta komputera, zaloguj się przy użyciu narzędzia CORP\Install.
Otwórz okno programu PowerShell w trybie administratora.
Zdefiniuj następujące zmienne:
$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"Zaimportuj dostawcę PowerShell dla SQL Server.
Set-ExecutionPolicy RemoteSigned -Force Import-Module "sqlps" -DisableNameCheckingZmień konto usługi programu SQL Server dla bazy danych 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)Zmień konto usługi programu SQL Server dla bazy danych 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)Pobierz CreateAzureFailoverCluster.ps1 z dokumentu Tworzenie klastra trybu failover dla Always On Availability Groups w Azure VM do lokalnego katalogu roboczego. Użyjesz tego skryptu do stworzenia funkcjonalnego klastra przełączania awaryjnego. Aby uzyskać ważne informacje na temat interakcji klastrowania zapasowego systemu Windows z siecią platformy Azure, zobacz sekcję Wysoka dostępność i odzyskiwanie po awarii dla programu SQL Server w usłudze Azure Virtual Machines.
Przejdź do katalogu roboczego i skonfiguruj klaster awaryjny za pomocą pobranego skryptu.
Set-ExecutionPolicy Unrestricted -Force .\CreateAzureFailoverCluster.ps1 -ClusterName "$clusterName" -ClusterNode "$server1","$server2","$serverQuorum"Włącz grupy dostępności Always On dla domyślnych wystąpień programu SQL Server na ContosoSQL1 i 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)Utwórz katalog kopii zapasowej i przyznaj uprawnienia dla kont usług programu SQL Server. Użyjesz tego katalogu do przygotowania bazy danych dostępności do repliki pomocniczej.
$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")Utwórz bazę danych w bazie danych ContosoSQL1 o nazwie MyDB1, utwórz pełną kopię zapasową i kopię zapasową dziennika, a następnie przywróć je w bazie danych ContosoSQL2 z opcją 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 -NoRecoveryUtwórz punkty końcowe grupy dostępności na maszynach wirtualnych programu SQL Server i ustaw odpowiednie uprawnienia w punktach końcowych.
$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 $server2Utwórz repliki dostępności.
$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 ` -AsTemplateNa koniec utwórz grupę dostępności i dołącz replikę pomocniczą do grupy dostępności.
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
Następne kroki
Zaimplementowałeś teraz SQL Server Always On poprzez utworzenie grupy dostępności w Azure. Aby skonfigurować odbiornik dla tej grupy dostępności, zobacz Konfigurowanie odbiornika ILB dla zawsze włączonych grup dostępności na platformie Azure.
Aby uzyskać inne informacje na temat korzystania z programu SQL Server na platformie Azure, zobacz SQL Server na maszynach wirtualnych platformy Azure.