Konfigurowanie odbiornika równoważenia obciążenia dla grup dostępności na maszynach wirtualnych serwera Azure SQL

Omówienie

Ważne

Platforma Azure ma dwa różne modele wdrażania do tworzenia zasobów i pracy z nimi: Azure Resource Manager i klasyczny. W tym artykule opisano użycie klasycznego modelu wdrażania. Zalecamy, aby większość nowych wdrożeń korzystała z modelu Resource Manager.

Aby skonfigurować odbiornik dla zawsze włączonej grupy dostępności w modelu Resource Manager, zobacz Konfigurowanie modułu równoważenia obciążenia dla zawsze włączonej grupy dostępności na platformie Azure.

Grupa dostępności może zawierać repliki, które są tylko lokalnie lub tylko na platformie Azure, albo obejmują zarówno konfiguracje lokalne, jak i platformę Azure. Repliki platformy Azure mogą znajdować się w tym samym regionie lub w wielu regionach korzystających z wielu sieci wirtualnych. W procedurach opisanych w tym artykule założono, że grupa dostępności została już skonfigurowana , ale nie skonfigurowano jeszcze odbiornika.

Wytyczne i ograniczenia dotyczące odbiorników wewnętrznych

Korzystanie z wewnętrznego modułu równoważenia obciążenia (ILB) z odbiornikiem grupy dostępności na platformie Azure podlega następującym wytycznym:

  • Odbiornik grupy dostępności jest obsługiwany w systemie Windows Server 2008 R2, Windows Server 2012 i Windows Server 2012 R2.
  • Tylko jeden wewnętrzny odbiornik grupy dostępności jest obsługiwany dla każdej usługi w chmurze, ponieważ odbiornik jest skonfigurowany do wewnętrznego modułu równoważenia obciążenia i istnieje tylko jeden moduł równoważenia obciążenia dla każdej usługi w chmurze. Istnieje jednak możliwość utworzenia wielu odbiorników zewnętrznych. Aby uzyskać więcej informacji, zobacz Konfigurowanie odbiornika zewnętrznego dla zawsze włączonych grup dostępności na platformie Azure.

Określanie ułatwień dostępu odbiornika

Należy pamiętać, że istnieją dwa sposoby konfigurowania odbiornika grupy dostępności na platformie Azure. Sposoby różnią się w zależności od typu modułu równoważenia obciążenia platformy Azure używanego podczas tworzenia odbiornika. W poniższej tabeli opisano różnice:

Typ modułu równoważenia obciążenia Implementacja Zastosowania:
Zewnętrzna Używa publicznego wirtualnego adresu IP usługi w chmurze, która hostuje maszyny wirtualne. Należy uzyskać dostęp do odbiornika spoza sieci wirtualnej, w tym z Internetu.
Wewnętrzny Używa wewnętrznego modułu równoważenia obciążenia z adresem prywatnym odbiornika. Dostęp do odbiornika można uzyskać tylko z poziomu tej samej sieci wirtualnej. Ten dostęp obejmuje sieć VPN typu lokacja-lokacja w scenariuszach hybrydowych.

Ważne

W przypadku odbiornika korzystającego z publicznego adresu VIP usługi w chmurze (zewnętrznego modułu równoważenia obciążenia), o ile klient, odbiornik i bazy danych znajdują się w tym samym regionie świadczenia usługi Azure, opłaty za ruch wychodzący nie będą naliczane. W przeciwnym razie wszystkie dane zwracane za pośrednictwem odbiornika są uznawane za ruch wychodzący i są naliczane według normalnych stawek transferu danych.

Wewnętrznym modułem równoważenia obciążenia można skonfigurować tylko w sieciach wirtualnych z zakresem regionalnym. Istniejące sieci wirtualne skonfigurowane dla grupy koligacji nie mogą używać modułu równoważenia obciążenia. Aby uzyskać więcej informacji, zobacz Omówienie wewnętrznego modułu równoważenia obciążenia.

Ten artykuł koncentruje się na tworzeniu odbiornika korzystającego z modułu równoważenia obciążenia. Jeśli potrzebujesz publicznego lub zewnętrznego odbiornika, zobacz wersję tego artykułu, w której omówiono konfigurowanie odbiornika zewnętrznego.

Tworzenie punktów końcowych maszyn wirtualnych ze zrównoważonym obciążeniem z powrotem serwera bezpośredniego

Najpierw utworzysz moduł równoważenia obciążenia, uruchamiając skrypt w dalszej części tej sekcji.

Utwórz punkt końcowy o zrównoważonym obciążeniu dla każdej maszyny wirtualnej, która hostuje replikę platformy Azure. Jeśli masz repliki w wielu regionach, każda replika dla tego regionu musi znajdować się w tej samej usłudze w chmurze w tej samej sieci wirtualnej platformy Azure. Tworzenie replik grup dostępności obejmujących wiele regionów platformy Azure wymaga skonfigurowania wielu sieci wirtualnych. Aby uzyskać więcej informacji na temat konfigurowania łączności między sieciami wirtualnymi, zobacz Konfigurowanie sieci wirtualnej do łączności z siecią wirtualną.

  1. W Azure Portal przejdź do każdej maszyny wirtualnej, która hostuje replikę, aby wyświetlić szczegóły.

  2. Kliknij kartę Punkty końcowe dla każdej maszyny wirtualnej.

  3. Sprawdź, czy nazwa i publiczny port punktu końcowego odbiornika, którego chcesz użyć, nie są jeszcze używane. W przykładzie w tej sekcji nazwa to MyEndpoint, a port to 1433.

  4. Na kliencie lokalnym pobierz i zainstaluj najnowszy moduł programu PowerShell.

  5. Uruchom Azure PowerShell.
    Zostanie otwarta nowa sesja programu PowerShell z załadowanymi modułami administracyjnymi platformy Azure.

  6. Uruchom polecenie . To polecenie cmdlet przekierowuje Cię do przeglądarki, aby pobrać plik ustawień publikowania do katalogu lokalnego. Może zostać wyświetlony monit o podanie poświadczeń logowania dla subskrypcji platformy Azure.

  7. Uruchom następujące Import-AzurePublishSettingsFile polecenie ze ścieżką pobranego pliku ustawień publikowania:

    Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
    

    Po zaimportowaniu pliku ustawień publikowania możesz zarządzać subskrypcją platformy Azure w sesji programu PowerShell.

  8. W przypadku modułu równoważenia obciążenia przypisz statyczny adres IP. Sprawdź bieżącą konfigurację sieci wirtualnej, uruchamiając następujące polecenie:

    (Get-AzureVNetConfig).XMLConfiguration
    
  9. Zanotuj nazwę podsieci zawierającej maszyny wirtualne hostujące repliki. Ta nazwa jest używana w parametrze $SubnetName skryptu.

  10. Zanotuj nazwę lokacji VirtualNetworkSite i początkową nazwę AddressPrefix dla podsieci zawierającej maszyny wirtualne hostujące repliki. Poszukaj dostępnego adresu IP, przekazując obie wartości do Test-AzureStaticVNetIP polecenia i sprawdzając wartość AvailableAddresses. Jeśli na przykład sieć wirtualna nosi nazwę MyVNet i ma zakres adresów podsieci rozpoczynający się od 172.16.0.128, następujące polecenie wyświetli listę dostępnych adresów:

    (Test-AzureStaticVNetIP -VNetName "MyVNet"-IPAddress 172.16.0.128).AvailableAddresses
    
  11. Wybierz jeden z dostępnych adresów i użyj go w parametrze $ILBStaticIP skryptu w następnym kroku.

  12. Skopiuj następujący skrypt programu PowerShell do edytora tekstów i ustaw wartości zmiennych odpowiednio do środowiska. Dla niektórych parametrów podano wartości domyślne.

    Istniejące wdrożenia korzystające z grup koligacji nie mogą dodać modułu równoważenia obciążenia. Aby uzyskać więcej informacji na temat wymagań dotyczących wewnętrznego modułu równoważenia obciążenia, zobacz Omówienie wewnętrznego modułu równoważenia obciążenia.

    Ponadto jeśli grupa dostępności obejmuje regiony platformy Azure, należy uruchomić skrypt raz w każdym centrum danych dla usługi w chmurze i węzłów znajdujących się w tym centrum danych.

    # Define variables
    $ServiceName = "<MyCloudService>" # the name of the cloud service that contains the availability group nodes
    $AGNodes = "<VM1>","<VM2>","<VM3>" # all availability group nodes containing replicas in the same cloud service, separated by commas
    $SubnetName = "<MySubnetName>" # subnet name that the replicas use in the virtual network
    $ILBStaticIP = "<MyILBStaticIPAddress>" # static IP address for the ILB in the subnet
    $ILBName = "AGListenerLB" # customize the ILB name or use this default value
    
    # Create the ILB
    Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -StaticVNetIPAddress $ILBStaticIP
    
    # Configure a load-balanced endpoint for each node in $AGNodes by using ILB
    ForEach ($node in $AGNodes)
    {
        Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpoint" -LBSetName "ListenerEndpointLB" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName -DirectServerReturn $true | Update-AzureVM
    }
    
  13. Po ustawieniu zmiennych skopiuj skrypt z edytora tekstów do sesji programu PowerShell, aby ją uruchomić. Jeśli monit nadal jest wyświetlany >>, naciśnij klawisz Enter ponownie, aby upewnić się, że skrypt zostanie uruchomiony.

Sprawdź, czy w razie potrzeby zainstalowano aktualizację KB2854082

Następnie, jeśli jakiekolwiek serwery w klastrze działają w systemie Windows Server 2008 R2 lub Windows Server 2012, należy sprawdzić, czy poprawka KB2854082 jest zainstalowana na każdym z serwerów lokalnych lub maszyn wirtualnych platformy Azure, które są częścią klastra. Każdy serwer lub maszyna wirtualna, która znajduje się w klastrze, ale nie w grupie dostępności, powinna również mieć zainstalowaną tę poprawkę.

W sesji pulpitu zdalnego dla każdego węzła klastra pobierz kb2854082 do katalogu lokalnego. Następnie zainstaluj poprawkę w każdym węźle klastra sekwencyjnie. Jeśli usługa klastra jest obecnie uruchomiona w węźle klastra, serwer zostanie uruchomiony ponownie na końcu instalacji poprawek.

Ostrzeżenie

Zatrzymanie usługi klastra lub ponowne uruchomienie serwera wpływa na kondycję kworum klastra i grupy dostępności, co może spowodować przełączenie klastra w tryb offline. Aby zachować wysoką dostępność klastra podczas instalacji, upewnij się, że:

  • Klaster jest w optymalnej kondycji kworum.
  • Przed zainstalowaniem poprawki w dowolnym węźle wszystkie węzły klastra są w trybie online.
  • Przed zainstalowaniem poprawki w dowolnym innym węźle w klastrze zezwól na uruchomienie instalacji poprawek w celu ukończenia w jednym węźle, w tym pełnego ponownego uruchomienia serwera.

Otwieranie portów zapory w węzłach grupy dostępności

W tym kroku utworzysz regułę zapory, aby otworzyć port sondy dla punktu końcowego ze zrównoważonym obciążeniem (59999, jak określono wcześniej) i inną regułę, aby otworzyć port odbiornika grupy dostępności. Ponieważ utworzono punkt końcowy o zrównoważonym obciążeniu na maszynach wirtualnych zawierających repliki grup dostępności, musisz otworzyć port sondy i port odbiornika na odpowiednich maszynach wirtualnych.

  1. Na maszynach wirtualnych hostujących repliki uruchom zaporę systemu Windows z zabezpieczeniami zaawansowanymi.

  2. Kliknij prawym przyciskiem myszy reguły ruchu przychodzącego, a następnie kliknij przycisk nową regułę.

  3. Na stronie Typ reguły wybierz pozycję Port, a następnie kliknij przycisk Dalej.

  4. Na stronie Protokół i porty wybierz pozycję TCP, wpisz 59999 w polu Określone porty lokalne , a następnie kliknij przycisk Dalej.

  5. Na stronie Akcja zachowaj zaznaczoną opcję Zezwalaj na połączenie , a następnie kliknij przycisk Dalej.

  6. Na stronie Profil zaakceptuj ustawienia domyślne, a następnie kliknij przycisk Dalej.

  7. Na stronie Nazwa w polu tekstowym Nazwa określ nazwę reguły, taką jak Zawsze włączony port sondy odbiornika, a następnie kliknij przycisk Zakończ.

  8. Powtórz powyższe kroki dla portu odbiornika grupy dostępności (jak określono wcześniej w parametrze $EndpointPort skryptu), a następnie określ odpowiednią nazwę reguły, taką jak Zawsze włączony port odbiornika.

Tworzenie odbiornika grupy dostępności

Utwórz odbiornik grupy dostępności w dwóch krokach. Najpierw utwórz zasób klastra punktu dostępu klienta i skonfiguruj zależności. Po drugie skonfiguruj zasoby klastra w programie PowerShell.

Tworzenie punktu dostępu klienta i konfigurowanie zależności klastra

W tym kroku ręcznie utworzysz odbiornik grupy dostępności w Menedżerze klastra trybu failover i SQL Server Management Studio.

  1. Otwórz Menedżera klastra trybu failover z węzła, który hostuje replikę podstawową.

  2. Wybierz węzeł Sieci , a następnie zanotuj nazwę sieci klastra. Ta nazwa jest używana w zmiennej $ClusterNetworkName skryptu programu PowerShell.

  3. Rozwiń nazwę klastra, a następnie kliknij pozycję Role.

  4. W okienku Role kliknij prawym przyciskiem myszy nazwę grupy dostępności, a następnie wybierz pozycję Dodajpunkt dostępu klientazasobu>.

    Dodawanie punktu dostępu klienta dla grupy dostępności

  5. W polu Nazwa utwórz nazwę dla tego nowego odbiornika, kliknij dwa razy przycisk Dalej , a następnie kliknij przycisk Zakończ.
    Nie przeprowadź odbiornika ani zasobu w trybie online w tym momencie.

  6. Kliknij kartę Zasoby , a następnie rozwiń utworzony punkt dostępu klienta. Zostanie wyświetlony zasób adresu IP dla każdej sieci klastra w klastrze. Jeśli jest to rozwiązanie tylko dla platformy Azure, zostanie wyświetlony tylko jeden zasób adresu IP.

  7. Wykonaj jedną z następujących czynności:

    • Aby skonfigurować rozwiązanie hybrydowe:

      a. Kliknij prawym przyciskiem myszy zasób adresu IP odpowiadający podsieci lokalnej, a następnie wybierz pozycję Właściwości. Zanotuj nazwę adresu IP i nazwę sieci.

      b. Wybierz pozycję Statyczny adres IP, przypisz nieużywany adres IP, a następnie kliknij przycisk OK.

    • Aby skonfigurować rozwiązanie tylko dla platformy Azure:

      a. Kliknij prawym przyciskiem myszy zasób adresu IP odpowiadający podsieci platformy Azure, a następnie wybierz pozycję Właściwości.

      Uwaga

      Jeśli odbiornik później nie będzie w trybie online z powodu konfliktu adresu IP wybranego przez protokół DHCP, możesz skonfigurować prawidłowy statyczny adres IP w tym oknie właściwości.

      b. W tym samym oknie właściwości Adres IP zmień nazwę adresu IP.
      Ta nazwa jest używana w zmiennej $IPResourceName skryptu programu PowerShell. Jeśli rozwiązanie obejmuje wiele sieci wirtualnych platformy Azure, powtórz ten krok dla każdego zasobu IP.

Konfigurowanie zasobów klastra w programie PowerShell

  1. W przypadku modułu równoważenia obciążenia należy użyć adresu IP utworzonego wcześniej modułu równoważenia obciążenia. Aby uzyskać ten adres IP w programie PowerShell, użyj następującego skryptu:

    # Define variables
    $ServiceName="<MyServiceName>" # the name of the cloud service that contains the AG nodes
    (Get-AzureInternalLoadBalancer -ServiceName $ServiceName).IPAddress
    
  2. Na jednej z maszyn wirtualnych skopiuj skrypt programu PowerShell dla systemu operacyjnego do edytora tekstów, a następnie ustaw zmienne na zanotowaną wcześniej wartość.

    W przypadku Windows Server 2012 lub nowszego użyj następującego skryptu:

    # Define variables
    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP address resource name
    $ILBIP = "<X.X.X.X>" # the IP address of the ILB
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    W przypadku systemu Windows Server 2008 R2 użyj następującego skryptu:

    # Define variables
    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP address resource name
    $ILBIP = "<X.X.X.X>" # the IP address of the ILB
    
    Import-Module FailoverClusters
    
    cluster res $IPResourceName /priv enabledhcp=0 address=$ILBIP probeport=59999  subnetmask=255.255.255.255
    
  3. Po ustawieniu zmiennych otwórz okno Windows PowerShell z podwyższonym poziomem uprawnień, wklej skrypt z edytora tekstów do sesji programu PowerShell, aby go uruchomić. Jeśli monit będzie nadal wyświetlany >>, naciśnij ponownie klawisz Enter, aby upewnić się, że skrypt zostanie uruchomiony.

  4. Powtórz poprzednie kroki dla każdej maszyny wirtualnej.
    Ten skrypt konfiguruje zasób adresu IP z adresem IP usługi w chmurze i ustawia inne parametry, takie jak port sondy. Po przejściu zasobu adresu IP do trybu online może on odpowiedzieć na sondowanie na porcie sondy z utworzonego wcześniej punktu końcowego o zrównoważonym obciążeniu.

Przełącz odbiornik w tryb online

  1. W Menedżerze klastra trybu failover rozwiń węzeł Role, a następnie wyróżnij grupę dostępności.

  2. Na karcie Zasoby kliknij prawym przyciskiem myszy nazwę odbiornika, a następnie kliknij polecenie Właściwości.

  3. Kliknij kartę Zależności . Jeśli na liście znajduje się wiele zasobów, sprawdź, czy adresy IP mają adresy LUB, a nie AND, zależności.

  4. Kliknij przycisk OK.

  5. Kliknij prawym przyciskiem myszy nazwę odbiornika, a następnie kliknij pozycję Bring Online (Przełącz w tryb online).

  6. Gdy odbiornik będzie w trybie online, na karcie Zasoby kliknij prawym przyciskiem myszy grupę dostępności, a następnie kliknij polecenie Właściwości.

    Konfigurowanie zasobu grupy dostępności

  7. Utwórz zależność od zasobu nazwy odbiornika (a nie nazwy zasobów adresu IP), a następnie kliknij przycisk OK.

    Dodawanie zależności od nazwy odbiornika

  8. Uruchom SQL Server Management Studio, a następnie połącz się z repliką podstawową.

  9. Przejdź do pozycji Zawsze włączone grupy dostępności>Availability Groups><AvailabilityGroupName>>Odbiorniki grup dostępności.
    Powinna zostać wyświetlona nazwa odbiornika utworzona w Menedżerze klastra trybu failover.

  10. Kliknij prawym przyciskiem myszy nazwę odbiornika, a następnie kliknij polecenie Właściwości.

  11. W polu Port określ numer portu odbiornika grupy dostępności przy użyciu użytej wcześniej $EndpointPort (w tym samouczku wartość domyślna to 1433), a następnie kliknij przycisk OK.

Elementy monitu

Po utworzeniu odbiornika grupy dostępności może być konieczne dostosowanie parametrów klastra RegisterAllProvidersIP i HostRecordTTL dla zasobu odbiornika. Te parametry mogą skrócić czas ponownego nawiązywania połączenia po przejściu w tryb failover, co może uniemożliwić przekroczenie limitu czasu połączenia. Aby uzyskać więcej informacji na temat tych parametrów, a także przykładowy kod, zobacz Tworzenie lub konfigurowanie odbiornika grupy dostępności.

Testowanie odbiornika grupy dostępności (w tej samej sieci wirtualnej)

W tym kroku przetestujesz odbiornik grupy dostępności przy użyciu aplikacji klienckiej działającej w tej samej sieci.

Łączność klienta ma następujące wymagania:

  • Połączenia klienta z odbiornikiem muszą pochodzić z maszyn, które znajdują się w innej usłudze w chmurze niż te, które hostują zawsze włączone repliki dostępności.
  • Jeśli zawsze włączone repliki znajdują się w różnych podsieciach, klienci muszą określić wartość MultisubnetFailover=True w parametrach połączenia. Ten warunek powoduje równoległe próby nawiązania połączenia z replikami w różnych podsieciach. Ten scenariusz obejmuje wdrożenie zawsze włączonej grupy dostępności między regionami.

Przykładem jest nawiązanie połączenia z odbiornikiem z jednej z maszyn wirtualnych w tej samej sieci wirtualnej platformy Azure (ale nie z tą, która hostuje replikę). Prostym sposobem ukończenia tego testu jest próba połączenia SQL Server Management Studio z odbiornikiem grupy dostępności. Inną prostą metodą jest uruchomienie SQLCMD.exew następujący sposób:

sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15

Uwaga

Jeśli wartość EndpointPort ma wartość 1433, nie trzeba jej określać w wywołaniu. Poprzednie wywołanie zakłada również, że komputer kliencki jest przyłączony do tej samej domeny i że obiekt wywołujący otrzymał uprawnienia do bazy danych przy użyciu uwierzytelniania systemu Windows.

Podczas testowania odbiornika upewnij się, że grupa dostępności przełączy w tryb failover w tryb failover, aby upewnić się, że klienci mogą łączyć się z odbiornikiem w trybie failover.

Następne kroki

Oprócz automatycznego łączenia klientów z repliką podstawową odbiornik może służyć do przekierowywania obciążeń tylko do odczytu do serwerów pomocniczych. Dzięki temu można zwiększyć wydajność i skalowalność ogólnego rozwiązania. Aby uzyskać więcej informacji, zobacz Use ReadIntent Routing with Azure Always On availability group listener (Używanie routingu readIntent z odbiornikiem zawsze włączonej grupy dostępności platformy Azure).

Uwaga

Aby uzyskać porady dotyczące rozwiązywania problemów z odbiornikami platformy Azure, zobacz Rozwiązywanie problemów z odbiornikiem grupy dostępności na platformie Azure w blogu zespołu pomocy technicznej funkcji AlwaysOn.

Aby uzyskać więcej informacji na temat używania SQL Server na platformie Azure, zobacz SQL Server na maszynach wirtualnych platformy Azure.