Konfigurowanie odbiornika zewnętrznego dla grup dostępności na maszynach wirtualnych serwera Azure SQL

W tym temacie pokazano, jak skonfigurować odbiornik dla zawsze włączonej grupy dostępności, która jest zewnętrznie dostępna w Internecie. Jest to możliwe przez skojarzenie publicznego adresu IP (VIP) usługi w chmurze z odbiornikiem.

Ważne

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

Grupa dostępności może zawierać repliki, które są tylko lokalne, tylko platforma Azure lub obejmują zarówno konfiguracje lokalne, jak i platformę Azure. Repliki platformy Azure mogą znajdować się w tym samym regionie lub w wielu regionach przy użyciu wielu sieci wirtualnych. W poniższych krokach założono, że skonfigurowano już grupę dostępności , ale nie skonfigurowano odbiornika.

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

Zwróć uwagę na następujące wskazówki dotyczące odbiornika grupy dostępności na platformie Azure podczas wdrażania przy użyciu publicznego adresu VIP usługi w chmurze:

  • Odbiornik grupy dostępności jest obsługiwany w systemie Windows Server 2008 R2, Windows Server 2012 i Windows Server 2012 R2.
  • Aplikacja kliencka musi znajdować się w innej usłudze w chmurze niż ta, która zawiera maszyny wirtualne grupy dostępności. Platforma Azure nie obsługuje bezpośredniego powrotu serwera z klientem i serwerem w tej samej usłudze w chmurze.
  • Domyślnie kroki opisane w tym artykule pokazują, jak skonfigurować jeden odbiornik do korzystania z wirtualnego adresu IP (VIP) usługi w chmurze. Istnieje jednak możliwość zarezerwowania i utworzenia wielu adresów VIP dla usługi w chmurze. Dzięki temu można użyć kroków opisanych w tym artykule, aby utworzyć wiele odbiorników skojarzonych z innym adresem VIP. Aby uzyskać informacje na temat tworzenia wielu adresów VIP, zobacz Wiele adresów VIP na usługę w chmurze.
  • Jeśli tworzysz odbiornik dla środowiska hybrydowego, sieć lokalna musi mieć łączność z publicznym Internetem oprócz sieci VPN typu lokacja-lokacja z siecią wirtualną platformy Azure. W podsieci platformy Azure odbiornik grupy dostępności jest osiągalny tylko przez publiczny adres IP odpowiedniej usługi w chmurze.
  • Nie jest obsługiwane tworzenie odbiornika zewnętrznego w tej samej usłudze w chmurze, w której masz również odbiornik wewnętrzny przy użyciu wewnętrznego Load Balancer (ILB).

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 zewnętrznego równoważenia obciążenia. Jeśli chcesz, aby odbiornik, który jest prywatny dla sieci wirtualnej, zobacz wersję tego artykułu, która zawiera kroki konfigurowania odbiornika z wewnętrznym modułem równoważenia obciążenia

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

Zewnętrzne równoważenie obciążenia używa wirtualnego publicznego wirtualnego adresu IP usługi w chmurze, która hostuje maszyny wirtualne. W takim przypadku nie trzeba tworzyć ani konfigurować modułu równoważenia obciążenia.

Należy utworzyć punkt końcowy o zrównoważonym obciążeniu dla każdej maszyny wirtualnej hostująca 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. Tworzenie replik grupy 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 łączności między sieciami wirtualnymi.

  1. W Azure Portal przejdź do każdej maszyny wirtualnej hostująca replikę i wyświetl szczegóły.

  2. Kliknij kartę Punkty końcowe dla każdej z maszyn wirtualnych.

  3. Sprawdź, czy nazwa i publiczny port punktu końcowego odbiornika, którego chcesz użyć, nie jest jeszcze używany. W poniższym przykładzie 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 Get-AzurePublishSettingsFile. 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 polecenie Import-AzurePublishSettingsFile 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. Skopiuj poniższy skrypt programu PowerShell do edytora tekstów i ustaw wartości zmiennych odpowiednio do środowiska (podano wartości domyślne dla niektórych parametrów). Należy pamiętać, że 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
    
    # Configure a load balanced endpoint for each node in $AGNodes, with direct server return enabled
    ForEach ($node in $AGNodes)
    {
        Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpoint" -Protocol "TCP" -PublicPort 1433 -LocalPort 1433 -LBSetName "ListenerEndpointLB" -ProbePort 59999 -ProbeProtocol "TCP" -DirectServerReturn $true | Update-AzureVM
    }
    
  9. Po ustawieniu zmiennych skopiuj skrypt z edytora tekstów do sesji Azure PowerShell, aby ją uruchomić. Jeśli monit będzie nadal wyświetlany >>, wpisz ponownie klawisz ENTER, aby upewnić się, że skrypt zacznie działać.

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 przy użyciu programu 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 w skryscie 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 dwukrotnie przycisk Dalej , a następnie kliknij przycisk Zakończ.
    Nie należy w tym momencie wprowadzać odbiornika ani zasobu do trybu online.

  6. Kliknij kartę Zasoby , a następnie rozwiń właśnie 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 na platformie Azure, wyświetlany jest 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 adresu 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 zewnętrznego równoważenia obciążenia należy uzyskać publiczny wirtualny adres IP usługi w chmurze, która zawiera repliki. Zaloguj się do witryny Azure Portal. Przejdź do usługi w chmurze zawierającej maszynę wirtualną grupy dostępności. Otwórz widok Pulpit nawigacyjny .

  2. Zanotuj adres wyświetlany w obszarze Publiczny wirtualny adres IP (VIP). Jeśli rozwiązanie obejmuje sieci wirtualne, powtórz ten krok dla każdej usługi w chmurze zawierającej maszynę wirtualną, która hostuje replikę.

  3. Na jednej z maszyn wirtualnych skopiuj poniższy skrypt programu PowerShell do edytora tekstów i ustaw zmienne na wartości zanotowany wcześniej.

    # Define variables
    $ClusterNetworkName = "<ClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP Address resource name
    $CloudServiceIP = "<X.X.X.X>" # Public Virtual IP (VIP) address of your cloud service
    
    Import-Module FailoverClusters
    
    # If you are using Windows Server 2012 or higher, use the Get-Cluster Resource command. If you are using Windows Server 2008 R2, use the cluster res command. Both commands are commented out. Choose the one applicable to your environment and remove the # at the beginning of the line to convert the comment to an executable line of code.
    
    # Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$CloudServiceIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"OverrideAddressMatch"=1;"EnableDhcp"=0}
    # cluster res $IPResourceName /priv enabledhcp=0 overrideaddressmatch=1 address=$CloudServiceIP probeport=59999  subnetmask=255.255.255.255
    
  4. Po ustawieniu zmiennych otwórz okno Windows PowerShell z podwyższonym poziomem uprawnień, a następnie skopiuj skrypt z edytora tekstów i wklej go do sesji Azure PowerShell, aby ją uruchomić. Jeśli monit będzie nadal wyświetlany >>, wpisz ponownie klawisz ENTER, aby upewnić się, że skrypt zacznie działać.

  5. Powtórz to na każdej maszynie wirtualnej. Ten skrypt konfiguruje zasób adresu IP z adresem IP usługi w chmurze i ustawia inne parametry, takie jak port sondy. Gdy zasób adresu IP zostanie przeniesiony w tryb online, może on następnie odpowiedzieć na sondowanie na porcie sondy z punktu końcowego ze zrównoważonym obciążeniem utworzonym wcześniej w tym samouczku.

Przenoszenie odbiornika do trybu 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 (Bring Online).

  6. Gdy odbiornik jest 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 AlwaysOn High Availability>Groups 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 $EndpointPort użytych wcześniej (w tym samouczku wartość domyślna to 1433), a następnie kliknij przycisk OK.

Elementy kontynuacji

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 o tych parametrach, 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ą repliki dostępności Always On.
  • Jeśli repliki Always On 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.

Jednym z przykładów jest nawiązanie połączenia z odbiornikiem z jednej z maszyn wirtualnych w tej samej sieci wirtualnej platformy Azure (ale nie z hostem repliki). Łatwym sposobem ukończenia tego testu jest próba nawiązania 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 musisz jej określać w wywołaniu. Poprzednie wywołanie zakłada również, że maszyna kliencka jest przyłączona do tej samej domeny i że obiekt wywołujący otrzymał uprawnienia do bazy danych przy użyciu uwierzytelniania systemu Windows.

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

Testowanie odbiornika grupy dostępności (przez Internet)

Aby uzyskać dostęp do odbiornika spoza sieci wirtualnej, musisz używać zewnętrznego/publicznego równoważenia obciążenia (opisanego w tym temacie), a nie modułu równoważenia obciążenia, który jest dostępny tylko w tej samej sieci wirtualnej. W parametrach połączenia należy określić nazwę usługi w chmurze. Jeśli na przykład masz usługę w chmurze o nazwie mycloudservice, instrukcja sqlcmd będzie następująca:

sqlcmd -S "mycloudservice.cloudapp.net,<EndpointPort>" -d "<DatabaseName>" -U "<LoginId>" -P "<Password>"  -Q "select @@servername, db_name()" -l 15

W przeciwieństwie do poprzedniego przykładu należy użyć uwierzytelniania SQL, ponieważ obiekt wywołujący nie może używać uwierzytelniania systemu Windows przez Internet. Aby uzyskać więcej informacji, zobacz Zawsze włączona grupa dostępności na maszynie wirtualnej platformy Azure: scenariusze łączności klienta. Podczas korzystania z uwierzytelniania SQL upewnij się, że tworzysz to samo logowanie w obu replikach. Aby uzyskać więcej informacji na temat rozwiązywania problemów z logowaniem za pomocą grup dostępności, zobacz Jak mapować nazwy logowania lub używać zawartego użytkownika bazy danych SQL w celu nawiązania połączenia z innymi replikami i mapowania na bazy danych dostępności.

Jeśli repliki Always On znajdują się w różnych podsieciach, klienci muszą określić wartość MultisubnetFailover=True w parametrach połączenia. Powoduje to równoległe próby nawiązania połączenia z replikami w różnych podsieciach. Należy pamiętać, że ten scenariusz obejmuje wdrożenie zawsze włączonej grupy dostępności między regionami.

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 za pomocą odbiornika 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 wblogu zespołu pomocy technicznej AlwaysOn.

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