Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:program SQL Server na maszynie wirtualnej platformy Azure
Uwaga
W tym samouczku używamy programu SQL Server 2017 (14.x) z systemem RHEL 7.6, ale w celu skonfigurowania wysokiej dostępności można użyć programu SQL Server 2019 (15.x) w systemie RHEL 7 lub RHEL 8. Polecenia służące do konfigurowania klastra Pacemaker i zasobów grupy dostępności uległy zmianie w systemie RHEL 8. Aby uzyskać więcej informacji na temat prawidłowych poleceń, zapoznaj się z artykułem Tworzenie zasobu grupy dostępności i zasobów grupy dostępności RHEL 8.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie nowej grupy zasobów, zestawu dostępności i maszyn wirtualnych z systemem Linux
- Włącz wysoką dostępność (HA)
- Utwórz klaster Pacemaker
- Skonfiguruj agenta fencingowego przez utworzenie urządzenia STONITH
- Instalowanie programu SQL Server i narzędzi mssql-tools w systemie RHEL
- Konfigurowanie zawsze włączonej grupy dostępności programu SQL Server
- Skonfiguruj zasoby grupy dostępności (AG) w klastrze Pacemaker
- Testowanie przełączenia awaryjnego i agenta ochrony
W tym samouczku do wdrażania zasobów na platformie Azure jest używany interfejs wiersza polecenia platformy Azure.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Ten artykuł wymaga wersji 2.0.30 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.
Tworzenie grupy zasobów
Jeśli masz więcej niż jedną subskrypcję, ustaw subskrypcję, do której chcesz wdrożyć te zasoby.
Użyj następującego polecenia, aby utworzyć grupę <resourceGroupName>
zasobów w regionie. Zastąp <resourceGroupName>
wybraną nazwą. Korzystamy z East US 2
tego samouczka. Aby uzyskać więcej informacji, zobacz następujący przewodnik Szybki start.
az group create --name <resourceGroupName> --location eastus2
Tworzenie zestawu dostępności
Następnym krokiem jest utworzenie zestawu dostępności. Uruchom następujące polecenie w usłudze Azure Cloud Shell i zastąp ciąg <resourceGroupName>
nazwą grupy zasobów. Wybierz nazwę elementu <availabilitySetName>
.
az vm availability-set create \
--resource-group <resourceGroupName> \
--name <availabilitySetName> \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Po zakończeniu polecenia należy uzyskać następujące wyniki:
{
"id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/availabilitySets/<availabilitySetName>",
"location": "eastus2",
"name": "<availabilitySetName>",
"platformFaultDomainCount": 2,
"platformUpdateDomainCount": 2,
"proximityPlacementGroup": null,
"resourceGroup": "<resourceGroupName>",
"sku": {
"capacity": null,
"name": "Aligned",
"tier": null
},
"statuses": null,
"tags": {},
"type": "Microsoft.Compute/availabilitySets",
"virtualMachines": []
}
Tworzenie maszyn wirtualnych RHEL wewnątrz zestawu dostępności
Ostrzeżenie
Jeśli wybierzesz obraz RHEL w modelu zapłać-na-bieżąco (PAYG) i skonfigurujesz wysoką dostępność (HA), może być konieczne zarejestrowanie subskrypcji. Może to spowodować dwukrotne zapłacenie za subskrypcję, ponieważ zostanie naliczona opłata za subskrypcję microsoft Azure RHEL dla maszyny wirtualnej oraz subskrypcję platformy Red Hat. Aby uzyskać więcej informacji, zobacz https://access.redhat.com/solutions/2458541.
Aby uniknąć "podwójnego naliczania opłat", użyj obrazu RHEL HA podczas tworzenia maszyny wirtualnej platformy Azure. Obrazy udostępniane jako obrazy RHEL-HA są także obrazami PAYG z wcześniej włączonym repozytorium HA.
Pobierz listę obrazów maszyn wirtualnych, które oferują system RHEL z wysoką dostępnością:
az vm image list --all --offer "RHEL-HA"
Powinny zostać wyświetlone następujące wyniki:
[ { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "7.4", "urn": "RedHat:RHEL-HA:7.4:7.4.2019062021", "version": "7.4.2019062021" }, { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "7.5", "urn": "RedHat:RHEL-HA:7.5:7.5.2019062021", "version": "7.5.2019062021" }, { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "7.6", "urn": "RedHat:RHEL-HA:7.6:7.6.2019062019", "version": "7.6.2019062019" }, { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "8.0", "urn": "RedHat:RHEL-HA:8.0:8.0.2020021914", "version": "8.0.2020021914" }, { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "8.1", "urn": "RedHat:RHEL-HA:8.1:8.1.2020021914", "version": "8.1.2020021914" }, { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "80-gen2", "urn": "RedHat:RHEL-HA:80-gen2:8.0.2020021915", "version": "8.0.2020021915" }, { "offer": "RHEL-HA", "publisher": "RedHat", "sku": "81_gen2", "urn": "RedHat:RHEL-HA:81_gen2:8.1.2020021915", "version": "8.1.2020021915" } ]
W tym samouczku wybieramy obraz
RedHat:RHEL-HA:7.6:7.6.2019062019
dla przykładu RHEL 7 i obrazRedHat:RHEL-HA:8.1:8.1.2020021914
dla przykładu RHEL 8.Możesz również wybrać preinstalację programu SQL Server 2019 (15.x) na obrazach RHEL8-HA. Aby uzyskać listę tych obrazów, uruchom następujące polecenie:
az vm image list --all --offer "sql2019-rhel8"
Powinny zostać wyświetlone następujące wyniki:
[ { "offer": "sql2019-rhel8", "publisher": "MicrosoftSQLServer", "sku": "enterprise", "urn": "MicrosoftSQLServer:sql2019-rhel8:enterprise:15.0.200317", "version": "15.0.200317" }, { "offer": "sql2019-rhel8", "publisher": "MicrosoftSQLServer", "sku": "enterprise", "urn": "MicrosoftSQLServer:sql2019-rhel8:enterprise:15.0.200512", "version": "15.0.200512" }, { "offer": "sql2019-rhel8", "publisher": "MicrosoftSQLServer", "sku": "sqldev", "urn": "MicrosoftSQLServer:sql2019-rhel8:sqldev:15.0.200317", "version": "15.0.200317" }, { "offer": "sql2019-rhel8", "publisher": "MicrosoftSQLServer", "sku": "sqldev", "urn": "MicrosoftSQLServer:sql2019-rhel8:sqldev:15.0.200512", "version": "15.0.200512" }, { "offer": "sql2019-rhel8", "publisher": "MicrosoftSQLServer", "sku": "standard", "urn": "MicrosoftSQLServer:sql2019-rhel8:standard:15.0.200317", "version": "15.0.200317" }, { "offer": "sql2019-rhel8", "publisher": "MicrosoftSQLServer", "sku": "standard", "urn": "MicrosoftSQLServer:sql2019-rhel8:standard:15.0.200512", "version": "15.0.200512" } ]
Jeśli użyjesz jednego z powyższych obrazów do utworzenia maszyn wirtualnych, program SQL Server 2019 (15.x) jest wstępnie zainstalowany. Pomiń sekcję Instalowanie programu SQL Server i mssql-tools zgodnie z opisem w tym artykule.
Ważne
Aby skonfigurować grupę dostępności, nazwy maszyn muszą być mniejsze niż 15 znaków. Nazwa użytkownika nie może zawierać wyższej litery, a hasła muszą zawierać więcej niż 12 znaków.
Chcemy utworzyć 3 maszyny wirtualne w zestawie dostępności. Zastąp te wartości w następującym poleceniu:
<resourceGroupName>
<VM-basename>
<availabilitySetName>
-
<VM-Size>
— Przykładem może być "Standard_D16_v3" <username>
<password>
for i in `seq 1 3`; do az vm create \ --resource-group <resourceGroupName> \ --name <VM-basename>$i \ --availability-set <availabilitySetName> \ --size "<VM-Size>" \ --image "RedHat:RHEL-HA:7.6:7.6.2019062019" \ --admin-username "<username>" \ --admin-password "<password>" \ --authentication-type all \ --generate-ssh-keys done
Powyższe polecenie tworzy maszyny wirtualne i tworzy domyślną sieć wirtualną dla tych maszyn wirtualnych. Aby uzyskać więcej informacji na temat różnych konfiguracji, zobacz artykuł az vm create .
Wyniki powinny być podobne do następujących po zakończeniu polecenia dla każdej maszyny wirtualnej:
{
"fqdns": "",
"id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<VM1>",
"location": "eastus2",
"macAddress": "<Some MAC address>",
"powerState": "VM running",
"privateIpAddress": "<IP1>",
"publicIpAddress": "",
"resourceGroup": "<resourceGroupName>",
"zones": ""
}
Ważne
Domyślny obraz utworzony za pomocą powyższego polecenia domyślnie tworzy dysk systemu operacyjnego 32 GB. Możesz mieć brak miejsca przy tej instalacji domyślnej. Możesz użyć następującego parametru dodanego do powyższego az vm create
polecenia, aby utworzyć dysk systemu operacyjnego z 128 GB jako przykład: --os-disk-size-gb 128
.
Następnie można skonfigurować Menedżera woluminów logicznych (LVM), jeśli chcesz rozwinąć odpowiednie woluminy folderów, aby uwzględnić instalację.
Testowanie połączenia z utworzonymi maszynami wirtualnymi
Połącz się z maszyną wirtualną VM1 lub innymi maszynami wirtualnymi przy użyciu następującego polecenia w usłudze Azure Cloud Shell. Jeśli nie możesz znaleźć adresów IP maszyny wirtualnej, postępuj zgodnie z tym przewodnikiem Szybki start w usłudze Azure Cloud Shell.
ssh <username>@publicipaddress
Jeśli połączenie zakończy się pomyślnie, powinny zostać wyświetlone następujące dane wyjściowe reprezentujące terminal systemu Linux:
[<username>@<VM1> ~]$
Wpisz exit
, aby opuścić sesję SSH.
Włącz wysoką dostępność
Ważne
Aby ukończyć tę część samouczka, musisz mieć subskrypcję dla systemu RHEL i dodatek wysokiej dostępności. Jeśli używasz obrazu zalecanego w poprzedniej sekcji, nie musisz rejestrować innej subskrypcji.
Połącz się z każdym węzłem VM i postępuj zgodnie z tym przewodnikiem, aby włączyć wysoką dostępność (HA). Aby uzyskać więcej informacji, zobacz włączanie subskrypcji wysokiej dostępności dla systemu RHEL.
Napiwek
Łatwiej będzie otworzyć sesję SSH dla każdej maszyny wirtualnej jednocześnie, ponieważ te same polecenia będą musiały być uruchamiane na każdej maszynie wirtualnej w całym artykule.
Jeśli kopiujesz i wklejasz wiele sudo
poleceń i zostanie wyświetlony monit o podanie hasła, dodatkowe polecenia nie zostaną uruchomione. Uruchom każde polecenie oddzielnie.
Aby otworzyć porty zapory programu Pacemaker, uruchom następujące polecenia na każdej maszynie wirtualnej:
sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reload
Zaktualizuj i zainstaluj pakiety Pacemaker na wszystkich węzłach przy użyciu następujących poleceń:
Uwaga
Narzędzie nmap jest instalowane w ramach tego bloku poleceń jako narzędzie do znajdowania dostępnych adresów IP w sieci. Nie musisz instalować nmap, ale będzie ona przydatna w dalszej części tego samouczka.
sudo yum update -y sudo yum install -y pacemaker pcs fence-agents-all resource-agents fence-agents-azure-arm nmap sudo reboot
Ustaw hasło dla domyślnego użytkownika, który jest tworzony podczas instalowania pakietów Pacemaker. Użyj tego samego hasła we wszystkich węzłach.
sudo passwd hacluster
Aby otworzyć plik hosts i skonfigurować rozpoznawanie nazw hostów, użyj następującego polecenia. Aby uzyskać więcej informacji, przeczytaj Konfigurowanie AG o konfigurowaniu pliku hosts.
sudo vi /etc/hosts
W edytorze vi wprowadź
i
, aby wstawić tekst, a w pustym wierszu dodaj prywatny adres IP odpowiedniej maszyny wirtualnej. Następnie dodaj nazwę maszyny wirtualnej po spacji obok adresu IP. Każdy wiersz powinien mieć oddzielny wpis.<IP1> <VM1> <IP2> <VM2> <IP3> <VM3>
Ważne
Zalecamy użycie prywatnego adresu IP w poprzednim przykładzie. Użycie publicznego adresu IP w tej konfiguracji spowoduje niepowodzenie instalacji i nie zalecamy uwidaczniania maszyny wirtualnej w sieciach zewnętrznych.
Aby zamknąć edytor vi , najpierw naciśnij Esc , a następnie wprowadź polecenie
:wq
, aby zapisać plik i zamknąć.
Tworzenie klastra Pacemaker
W tej sekcji włączysz i uruchomisz usługę pcsd, a następnie skonfigurujesz klaster. W przypadku programu SQL Server w systemie Linux zasoby klastra nie są tworzone automatycznie. Należy włączyć i ręcznie utworzyć zasoby programu Pacemaker. Aby uzyskać więcej informacji, zobacz artykuł dotyczący konfigurowania klastra w trybie przełączania awaryjnego dla systemu RHEL.
Włącz i uruchom usługę pcsd oraz Pacemaker
Uruchom polecenia na wszystkich węzłach. Te komendy umożliwiają węzłom ponowne dołączenie do klastra po ponownym uruchomieniu każdego węzła.
sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker
Usuń dowolną istniejącą konfigurację klastra ze wszystkich węzłów. Uruchom następujące polecenie:
sudo pcs cluster destroy sudo systemctl enable pacemaker
W węźle podstawowym uruchom następujące polecenia, aby skonfigurować klaster.
- Podczas uruchamiania
pcs cluster auth
polecenia w celu uwierzytelnienia węzłów klastra zostanie wyświetlony monit o podanie hasła. Wprowadź hasło dla wcześniej utworzonego użytkownika hacluster.
RHEL7
sudo pcs cluster auth <VM1> <VM2> <VM3> -u hacluster sudo pcs cluster setup --name az-hacluster <VM1> <VM2> <VM3> --token 30000 sudo pcs cluster start --all sudo pcs cluster enable --all
RHEL8
W przypadku systemu RHEL 8 należy oddzielnie uwierzytelnić węzły. Wprowadź ręcznie nazwę użytkownika i hasło dla hacluster po wyświetleniu monitu.
sudo pcs host auth <node1> <node2> <node3> sudo pcs cluster setup <clusterName> <node1> <node2> <node3> sudo pcs cluster start --all sudo pcs cluster enable --all
- Podczas uruchamiania
Uruchom następujące polecenie, aby sprawdzić, czy wszystkie węzły są w trybie online.
sudo pcs status
RHEL 7
Jeśli wszystkie węzły są w trybie online, zostaną wyświetlone dane wyjściowe podobne do następującego przykładu:
Cluster name: az-hacluster WARNINGS: No stonith devices and stonith-enabled is not false Stack: corosync Current DC: <VM2> (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum Last updated: Fri Aug 23 18:27:57 2019 Last change: Fri Aug 23 18:27:56 2019 by hacluster via crmd on <VM2> 3 nodes configured 0 resources configured Online: [ <VM1> <VM2> <VM3> ] No resources Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
RHEL 8
Cluster name: az-hacluster WARNINGS: No stonith devices and stonith-enabled is not false Cluster Summary: * Stack: corosync * Current DC: <VM2> (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum * Last updated: Fri Aug 23 18:27:57 2019 * Last change: Fri Aug 23 18:27:56 2019 by hacluster via crmd on <VM2> * 3 nodes configured * 0 resource instances configured Node List: * Online: [ <VM1> <VM2> <VM3> ] Full List of Resources: * No resources Daemon Status: * corosync: active/enabled * pacemaker: active/enabled * pcsd: active/enabled
Ustaw oczekiwaną liczbę głosów w działającym klastrze na 3. To polecenie ma wpływ tylko na klaster na żywo i nie zmienia plików konfiguracji.
Na wszystkich węzłach ustaw konfigurację oczekiwanych głosów za pomocą następującego polecenia:
sudo pcs quorum expected-votes 3
Konfiguracja agenta fencing
Aby skonfigurować agenta typu fencing, instrukcje w tym samouczku zostały zmodyfikowane. Aby uzyskać więcej informacji, zobacz tworzenie urządzenia STONITH.
Sprawdź wersję agenta usługi Azure Fence, aby upewnić się, że został zaktualizowany. Użyj następującego polecenia:
sudo yum info fence-agents-azure-arm
Powinieneś zobaczyć podobny wynik do poniższego przykładu.
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Installed Packages
Name : fence-agents-azure-arm
Arch : x86_64
Version : 4.2.1
Release : 11.el7_6.8
Size : 28 k
Repo : installed
From repo : rhel-ha-for-rhel-7-server-eus-rhui-rpms
Summary : Fence agent for Azure Resource Manager
URL : https://github.com/ClusterLabs/fence-agents
License : GPLv2+ and LGPLv2+
Description : The fence-agents-azure-arm package contains a fence agent for Azure instances.
Rejestrowanie nowej aplikacji w usłudze Microsoft Entra ID
Aby zarejestrować nową aplikację w usłudze Microsoft Entra ID (dawniej Azure Active Directory), wykonaj następujące kroki:
- Przejdź do https://portal.azure.com.
- Otwórz okienko Właściwości Microsoft Entra ID i zanotuj
Tenant ID
. - Wybierz pozycję Rejestracje aplikacji.
- Wybierz opcjęNowa rejestracja.
- Wprowadź nazwę taką jak
<resourceGroupName>-app
. W przypadku obsługiwanych typów kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym (tylko Microsoft — pojedyncza dzierżawa). - Wybierz Sieć Web dla URI przekierowania, a następnie wprowadź adres URL (na przykład
http://localhost
) i wybierz Dodaj. Adres URL logowania może być dowolnym prawidłowym adresem URL. Po zakończeniu wybierz pozycję Zarejestruj. - Wybierz pozycję Certyfikaty i wpisy tajne dla nowej rejestracji aplikacji, a następnie wybierz pozycję Nowy klucz tajny klienta.
- Wprowadź opis nowego klucza (klucz tajny klienta), a następnie wybierz pozycję Dodaj.
- Zapisz wartość tajemnicy. Jest on używany jako hasło dla jednostki usługi.
- Wybierz Przegląd. Zapisz identyfikator aplikacji. Jest używana jako nazwa użytkownika (ID logowania w poniższych krokach) głównej usługi.
Tworzenie roli niestandardowej dla agenta ogrodzenia
Postępuj zgodnie z samouczkiem, aby utworzyć rolę niestandardową platformy Azure przy użyciu Azure CLI.
Plik JSON powinien wyglądać podobnie do poniższego przykładu:
- Zastąp ciąg
<username>
wybraną nazwą. Należy unikać duplikowania podczas tworzenia tej definicji roli. - Zastąp
<subscriptionId>
identyfikatorem subskrypcji Azure.
{
"Name": "Linux Fence Agent Role-<username>",
"Id": null,
"IsCustom": true,
"Description": "Allows to power-off and start virtual machines",
"Actions": [
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/powerOff/action",
"Microsoft.Compute/virtualMachines/start/action"
],
"NotActions": [
],
"AssignableScopes": [
"/subscriptions/<subscriptionId>"
]
}
Aby dodać rolę, uruchom następujące polecenie:
- Zastąp
<filename>
nazwą pliku. - Jeśli wykonujesz polecenie ze ścieżki innej niż folder, do którego jest zapisywany plik, dołącz ścieżkę folderu pliku w poleceniu .
az role definition create --role-definition "<filename>.json"
Powinny zostać wyświetlone następujące dane wyjściowe:
{
"assignableScopes": [
"/subscriptions/<subscriptionId>"
],
"description": "Allows to power-off and start virtual machines",
"id": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/roleDefinitions/<roleNameId>",
"name": "<roleNameId>",
"permissions": [
{
"actions": [
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/powerOff/action",
"Microsoft.Compute/virtualMachines/start/action"
],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"roleName": "Linux Fence Agent Role-<username>",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
Przypisz rolę niestandardową do podmiotu usługi
Przypisz jednostce usługi utworzoną w ostatnim kroku rolę niestandardową Linux Fence Agent Role-<username>
. Nie używaj już roli Właściciel.
- Przejdź do strony https://portal.azure.com
- Otwórz okienko Wszystkie zasoby
- Wybierz maszynę wirtualną pierwszego węzła klastra
- Wybierz pozycję Kontrola dostępu (IAM)
- Wybierz Dodaj przypisanie roli
- Wybierz rolę
Linux Fence Agent Role-<username>
z listy Rola -
Na liście Wybierz wprowadź nazwę utworzonej wcześniej aplikacji.
<resourceGroupName>-app
- Wybierz pozycję Zapisz
- Powtórz te kroki dla wszystkich węzłów klastra.
Tworzenie urządzeń STONITH
Uruchom następujące polecenia w węźle 1:
- Zastąp
<ApplicationID>
wartością identyfikatora z rejestracji aplikacji. - Zamień
<password>
na wartość z sekretu klienta. - Zastąp element
<resourceGroupName>
grupą zasobów z subskrypcji używanej na potrzeby tego samouczka. - Zastąp
<tenantID>
oraz<subscriptionId>
z subskrypcji platformy Azure.
sudo pcs property set stonith-timeout=900
sudo pcs stonith create rsc_st_azure fence_azure_arm login="<ApplicationID>" passwd="<password>" resourceGroup="<resourceGroupName>" tenantId="<tenantID>" subscriptionId="<subscriptionId>" power_timeout=240 pcmk_reboot_timeout=900
Ponieważ dodaliśmy już regułę do zapory, aby zezwolić na korzystanie z usługi wysokiej dostępności (--add-service=high-availability
), nie ma potrzeby otwierania następujących portów zapory na wszystkich węzłach: 2224, 3121, 21064, 5405. Jeśli jednak występują jakiekolwiek problemy z połączeniem z wysoką dostępnością, użyj następującego polecenia, aby otworzyć te porty skojarzone z wysoką dostępnością.
Napiwek
Opcjonalnie możesz dodać wszystkie porty w tym samouczku jednocześnie, aby zaoszczędzić trochę czasu. Porty, które należy otworzyć, zostały wyjaśnione w odpowiednich sekcjach. Jeśli chcesz teraz dodać wszystkie porty, dodaj dodatkowe porty: 1433 i 5022.
sudo firewall-cmd --zone=public --add-port=2224/tcp --add-port=3121/tcp --add-port=21064/tcp --add-port=5405/tcp --permanent
sudo firewall-cmd --reload
Instalowanie programu SQL Server i narzędzi mssql-tools
Uwaga
Jeśli utworzono maszyny wirtualne z wstępnie zainstalowanym programem SQL Server 2019 (15.x) w systemie RHEL8-HA, możesz pominąć poniższe kroki, aby zainstalować program SQL Server i narzędzia mssql-tools, a następnie uruchomić sekcję Konfigurowanie grupy dostępności po skonfigurowaniu hasła sa na wszystkich maszynach wirtualnych, uruchamiając polecenie sudo /opt/mssql/bin/mssql-conf set-sa-password
na wszystkich maszynach wirtualnych.
Użyj poniższej sekcji, aby zainstalować program SQL Server i narzędzia mssql-tools na maszynach wirtualnych. Możesz wybrać jeden z poniższych przykładów, aby zainstalować program SQL Server 2017 (14.x) w systemie RHEL 7 lub SQL Server 2019 (15.x) w systemie RHEL 8. Wykonaj każdą z tych akcji na wszystkich węzłach. Aby uzyskać więcej informacji, zobacz Instalowanie programu SQL Server na maszynie wirtualnej z systemem Red Hat.
Instalowanie programu SQL Server na maszynach wirtualnych
Do zainstalowania programu SQL Server służą następujące polecenia:
RHEL 7 z programem SQL Server 2017
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
sudo yum install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo yum install mssql-server-ha
RHEL 8 z programem SQL Server 2019
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
sudo yum install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo yum install mssql-server-ha
Otwórz port zapory 1433 dla połączeń zdalnych
Aby połączyć się zdalnie, musisz otworzyć port 1433 na maszynie wirtualnej. Użyj następujących poleceń, aby otworzyć port 1433 w zaporze każdej maszyny wirtualnej:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
Instalowanie narzędzi wiersza polecenia programu SQL Server
Następujące polecenia służą do instalowania narzędzi wiersza polecenia programu SQL Server. Aby uzyskać więcej informacji, zobacz instalowanie narzędzi wiersza polecenia programu SQL Server.
RHEL 7
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
sudo yum install -y mssql-tools unixODBC-devel
RHEL 8
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
sudo yum install -y mssql-tools unixODBC-devel
Uwaga
Dla wygody dodaj /opt/mssql-tools/bin/ do zmiennej środowiskowej PATH. Dzięki temu można uruchamiać narzędzia bez określania pełnej ścieżki. Uruchom następujące polecenia, aby zmodyfikować ścieżkę zarówno dla sesji logowania, jak i sesji interakcyjnych/niezwiązanych z logowaniem:echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
Sprawdzanie stanu programu SQL Server
Po zakończeniu pracy z konfiguracją możesz sprawdzić stan programu SQL Server i sprawdzić, czy jest on uruchomiony:
systemctl status mssql-server --no-pager
Powinny zostać wyświetlone następujące dane wyjściowe:
● mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-12-05 17:30:55 UTC; 20min ago
Docs: https://learn.microsoft.com/sql/linux
Main PID: 11612 (sqlservr)
CGroup: /system.slice/mssql-server.service
├─11612 /opt/mssql/bin/sqlservr
└─11640 /opt/mssql/bin/sqlservr
Konfigurowanie grupy dostępności
Wykonaj poniższe kroki, aby skonfigurować zawsze włączoną grupę dostępności programu SQL Server dla maszyn wirtualnych. Aby uzyskać więcej informacji, zobacz Konfigurowanie zawsze włączonych grup dostępności programu SQL Server pod kątem wysokiej dostępności w systemie Linux.
Włączanie zawsze włączonych grup dostępności i ponowne uruchamianie programu mssql-server
Włącz zawsze włączone grupy dostępności w każdym węźle, który hostuje wystąpienie programu SQL Server. Następnie uruchom ponownie narzędzie mssql-server. Uruchom następujący skrypt:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
Tworzenie certyfikatu
Obecnie nie obsługujemy uwierzytelniania usługi AD w punkcie końcowym grupy dostępności. W związku z tym musimy użyć certyfikatu do szyfrowania punktu końcowego grupy dostępności.
Połącz się ze wszystkimi węzłami przy użyciu programu SQL Server Management Studio (SSMS) lub sqlcmd. Uruchom następujące polecenia, aby włączyć sesję AlwaysOn_health i utworzyć klucz główny:
Ważne
Jeśli łączysz się zdalnie z wystąpieniem programu SQL Server, musisz otworzyć port 1433 w zaporze. Należy również zezwolić na połączenia przychodzące do portu 1433 w grupie zabezpieczeń sieciowych dla każdej maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Tworzenie reguły zabezpieczeń dla ruchu przychodzącego.
- Zastąp element
<password>
własnym hasłem.
ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON); GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
- Zastąp element
Połącz się z repliką podstawową przy użyciu programu SSMS lub sqlcmd. Następujące polecenia tworzą certyfikat w lokalizacji
/var/opt/mssql/data/dbm_certificate.cer
i klucz prywatny wvar/opt/mssql/data/dbm_certificate.pvk
podstawowej repliki programu SQL Server:- Zastąp element
<password>
własnym hasłem.
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm'; GO BACKUP CERTIFICATE dbm_certificate TO FILE = '/var/opt/mssql/data/dbm_certificate.cer' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/dbm_certificate.pvk', ENCRYPTION BY PASSWORD = '<password>' ); GO
- Zastąp element
Zamknij sesję sqlcmd , uruchamiając exit
polecenie i wróć do sesji SSH.
Skopiuj certyfikat do replik pomocniczych i utwórz certyfikaty na serwerze
Skopiuj dwa pliki, które zostały utworzone do tej samej lokalizacji na wszystkich serwerach, które będą hostować repliki dostępności.
Na serwerze podstawowym uruchom następujące
scp
polecenie, aby skopiować certyfikat na serwery docelowe:- Zastąp
<username>
nazwą użytkownika i<VM2>
nazwą docelowej maszyny wirtualnej, której używasz. - Uruchom to polecenie dla wszystkich replik pomocniczych.
Uwaga
Nie trzeba uruchamiać
sudo -i
, który zapewnia środowisko root. Możesz po prostu uruchomić poleceniesudo
przed każdym poleceniem, tak jak robiliśmy to wcześniej w tym samouczku.# The below command allows you to run commands in the root environment sudo -i
scp /var/opt/mssql/data/dbm_certificate.* <username>@<VM2>:/home/<username>
- Zastąp
Na serwerze docelowym uruchom następujące polecenie:
- Zastąp
<username>
nazwą użytkownika. - Polecenie
mv
przenosi pliki lub katalog z jednego miejsca do innego. - Polecenie
chown
służy do zmiany właściciela i grupy plików, katalogów lub linków. - Wykonaj następujące polecenia dla wszystkich replik pomocniczych.
sudo -i mv /home/<username>/dbm_certificate.* /var/opt/mssql/data/ cd /var/opt/mssql/data chown mssql:mssql dbm_certificate.*
- Zastąp
Poniższy skrypt języka Transact-SQL tworzy certyfikat z kopii zapasowej utworzonej w podstawowej repliki programu SQL Server. Zaktualizuj skrypt przy użyciu silnych haseł. Hasło odszyfrowywania jest tym samym hasłem, które zostało użyte do utworzenia pliku pvk w poprzednim kroku. Aby utworzyć certyfikat, uruchom następujący skrypt przy użyciu narzędzia sqlcmd lub SSMS na wszystkich serwerach pomocniczych:
CREATE CERTIFICATE dbm_certificate FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/dbm_certificate.pvk', DECRYPTION BY PASSWORD = '<password>' ); GO
Tworzenie punktów końcowych dublowania bazy danych na wszystkich replikach
Uruchom następujący skrypt we wszystkich wystąpieniach programu SQL Server przy użyciu narzędzia sqlcmd lub programu SSMS:
CREATE ENDPOINT [Hadr_endpoint]
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (
ROLE = ALL,
AUTHENTICATION = CERTIFICATE dbm_certificate,
ENCRYPTION = REQUIRED ALGORITHM AES
);
GO
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GO
Tworzenie grupy dostępności
Połącz się z instancją SQL Server, która hostuje replikę podstawową, używając sqlcmd lub SSMS. Uruchom następujące polecenie, aby utworzyć grupę dostępności:
- Zastąp
ag1
wybraną nazwą grupy dostępności. - Zastąp wartości
<VM1>
,<VM2>
i<VM3>
nazwami wystąpień programu SQL Server hostujących repliki.
CREATE AVAILABILITY GROUP [ag1]
WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)
FOR REPLICA ON
N'<VM1>'
WITH (
ENDPOINT_URL = N'tcp://<VM1>:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
),
N'<VM2>'
WITH (
ENDPOINT_URL = N'tcp://<VM2>:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
),
N'<VM3>'
WITH(
ENDPOINT_URL = N'tcp://<VM3>:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
);
GO
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
GO
Tworzenie loginu SQL Server dla Pacemaker
We wszystkich wystąpieniach SQL Server utwórz login SQL Server dla Pacemaker. Poniższy kod Transact-SQL tworzy login.
- Zastąp
<password>
ciąg własnym złożonym hasłem.
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'<password>';
GO
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
GO
We wszystkich instancjach programu SQL Server zapamiętaj poświadczenia używane do logowania.
Utwórz plik:
sudo vi /var/opt/mssql/secrets/passwd
Dodaj następujące wiersze do pliku:
pacemakerLogin <password>
Aby zamknąć edytor vi , najpierw naciśnij Esc , a następnie wprowadź polecenie
:wq
, aby zapisać plik i zamknąć.Ustaw dostęp do pliku tylko dla użytkownika root.
sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 400 /var/opt/mssql/secrets/passwd
Dołączanie replik pomocniczych do grupy dostępności
Aby dołączyć repliki pomocnicze do grupy dostępności (AG), należy otworzyć port 5022 na zaporach sieciowych wszystkich serwerów. Uruchom następujące polecenie w sesji SSH:
sudo firewall-cmd --zone=public --add-port=5022/tcp --permanent sudo firewall-cmd --reload
W replikach pomocniczych uruchom następujące polecenia, aby dołączyć je do Grupy dostępności.
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE; GO
Uruchom następujący skrypt Języka Transact-SQL na replice podstawowej oraz na każdej replice pomocniczej.
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO pacemakerLogin; GO GRANT VIEW SERVER STATE TO pacemakerLogin; GO
Po dołączeniu replik pomocniczych można je zobaczyć w Eksploratorze obiektów SSMS, rozwijając węzeł Always On High Availability:
Dodawanie bazy danych do grupy dostępności
Postępujmy zgodnie z artykułem dotyczącym konfigurowania grupy dostępności podczas dodawania bazy danych.
W tym kroku są używane następujące polecenia języka Transact-SQL. Uruchom następujące polecenia w repliki podstawowej:
CREATE DATABASE [db1]; -- creates a database named db1
GO
ALTER DATABASE [db1] SET RECOVERY FULL; -- set the database in full recovery model
GO
BACKUP DATABASE [db1] -- backs up the database to disk
TO DISK = N'/var/opt/mssql/data/db1.bak';
GO
ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1]; -- adds the database db1 to the AG
GO
Sprawdź, czy baza danych została utworzona na serwerach pomocniczych
Na każdej pomocniczej repliki programu SQL Server uruchom następujące zapytanie, aby sprawdzić, czy baza danych db1 została utworzona i ma stan SYNCD:
SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;
Jeśli synchronization_state_desc
lista pokazuje SYNCHRONIZED dla db1
, oznacza to, że repliki są zsynchronizowane. Repliki wtórne są wyświetlane db1
w replika podstawowej.
Utwórz zasoby grupy dostępności w klastrze Pacemaker
Postępujemy zgodnie z przewodnikiem, aby tworzyć zasoby grupy dostępności w klastrze Pacemaker.
Uwaga
Komunikacja bez uprzedzeń
Ten artykuł zawiera odwołania do terminu niewolnik, termin Microsoft uznaje za obraźliwe w przypadku użycia w tym kontekście. Termin pojawia się w tym artykule, ponieważ jest on obecnie wyświetlany w oprogramowaniu. Po usunięciu terminu z oprogramowania usuniemy go z artykułu.
Utwórz zasób klastra AG
Użyj jednego z następujących poleceń opartych na środowisku wybranym wcześniej, aby utworzyć zasób
ag_cluster
w grupie dostępnościag1
.RHEL 7
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=30s master notify=true
RHEL 8
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=30s promotable notify=true
Przed kontynuowaniem upewnij się, że zasoby są w trybie online, używając następującego polecenia:
sudo pcs resource
Powinny zostać wyświetlone następujące dane wyjściowe:
RHEL 7
[<username>@VM1 ~]$ sudo pcs resource Master/Slave Set: ag_cluster-master [ag_cluster] Masters: [ <VM1> ] Slaves: [ <VM2> <VM3> ]
RHEL 8
[<username>@VM1 ~]$ sudo pcs resource * Clone Set: ag_cluster-clone [ag_cluster] (promotable): * ag_cluster (ocf::mssql:ag) : Slave VMrhel3 (Monitoring) * ag_cluster (ocf::mssql:ag) : Master VMrhel1 (Monitoring) * ag_cluster (ocf::mssql:ag) : Slave VMrhel2 (Monitoring)
Tworzenie zasobu wirtualnego adresu IP
Użyj dostępnego statycznego adresu IP z sieci, aby utworzyć zasób wirtualnego adresu IP. Możesz znaleźć za pomocą narzędzia poleceń
nmap
.nmap -sP <IPRange> # For example: nmap -sP 10.0.0.* # The above will scan for all IP addresses that are already occupied in the 10.0.0.x space.
Ustaw właściwość stonith-enabled na false:
sudo pcs property set stonith-enabled=false
Utwórz zasób wirtualnego adresu IP przy użyciu następującego polecenia. Zastąp
<availableIP>
ciąg nieużywanym adresem IP.sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<availableIP>
Dodawanie ograniczeń
Aby upewnić się, że adres IP i zasób AG są uruchomione w tym samym węźle, należy skonfigurować ograniczenie kolokacji. Uruchom następujące polecenie:
RHEL 7
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
RHEL 8
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
Utwórz ograniczenie porządkowania, aby upewnić się, że zasób AG jest uruchomiony przed adresem IP. Chociaż ograniczenie kolokacji oznacza ograniczenie porządkowe, to je wymusza.
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8
sudo pcs constraint order promote ag_cluster-clone then start virtualip
Aby sprawdzić ograniczenia, uruchom następujące polecenie:
sudo pcs constraint list --full
Powinny zostać wyświetlone następujące dane wyjściowe:
RHEL 7
Location Constraints: Ordering Constraints: promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory) Colocation Constraints: virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY) Ticket Constraints:
RHEL 8
Location Constraints: Ordering Constraints: promote ag_cluster-clone then start virtualip (kind:Mandatory) (id:order-ag_cluster-clone-virtualip-mandatory) Colocation Constraints: virtualip with ag_cluster-clone (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-clone-INFINITY) Ticket Constraints:
Włącz ponownie stonith
Jesteśmy gotowi do testowania. Ponownie włącz stonith w klastrze, uruchamiając następujące polecenie w węźle 1:
sudo pcs property set stonith-enabled=true
Sprawdzanie stanu klastra
Stan zasobów klastra można sprawdzić przy użyciu następującego polecenia:
[<username>@VM1 ~]$ sudo pcs status
Cluster name: az-hacluster
Stack: corosync
Current DC: <VM3> (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
Last updated: Sat Dec 7 00:18:38 2019
Last change: Sat Dec 7 00:18:02 2019 by root via cibadmin on VM1
3 nodes configured
5 resources configured
Online: [ <VM1> <VM2> <VM3> ]
Full list of resources:
Master/Slave Set: ag_cluster-master [ag_cluster]
Masters: [ <VM2> ]
Slaves: [ <VM1> <VM3> ]
virtualip (ocf::heartbeat:IPaddr2): Started <VM2>
rsc_st_azure (stonith:fence_azure_arm): Started <VM1>
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
Testowanie pracy w trybie failover
Aby upewnić się, że konfiguracja do tej pory była udana, przetestujemy procedurę przełączenia awaryjnego. Aby uzyskać więcej informacji, zobacz failover w grupie dostępności Always On w systemie Linux.
Uruchom następujące polecenie, aby ręcznie zmienić tryb pracy podstawowej repliki na failover do
<VM2>
. Zastąp<VM2>
wartością odpowiadającą nazwie serwera.RHEL 7
sudo pcs resource move ag_cluster-master <VM2> --master
RHEL 8
sudo pcs resource move ag_cluster-clone <VM2> --master
Można również określić dodatkową opcję, aby tymczasowe ograniczenie, które zostało utworzone w celu przeniesienia zasobu do żądanego węzła, zostało wyłączone automatycznie i nie trzeba wykonywać kroków 2 i 3 w poniższych instrukcjach.
RHEL 7
sudo pcs resource move ag_cluster-master <VM2> --master lifetime=30S
RHEL 8
sudo pcs resource move ag_cluster-clone <VM2> --master lifetime=30S
Inną alternatywą do zautomatyzowania kroków 2 i 3, które usuwają tymczasowe ograniczenie w samym poleceniu przenoszenia zasobu, jest połączenie wielu poleceń w jednym wierszu.
RHEL 7
sudo pcs resource move ag_cluster-master <VM2> --master && sleep 30 && pcs resource clear ag_cluster-master
RHEL 8
sudo pcs resource move ag_cluster-clone <VM2> --master && sleep 30 && pcs resource clear ag_cluster-clone
Jeśli ponownie sprawdzisz ograniczenia, zobaczysz, że inne ograniczenie zostało dodane z powodu ręcznego przejścia w tryb failover:
RHEL 7
[<username>@VM1 ~]$ sudo pcs constraint list --full Location Constraints: Resource: ag_cluster-master Enabled on: VM2 (score:INFINITY) (role: Master) (id:cli-prefer-ag_cluster-master) Ordering Constraints: promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory) Colocation Constraints: virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY) Ticket Constraints:
RHEL 8
[<username>@VM1 ~]$ sudo pcs constraint list --full Location Constraints: Resource: ag_cluster-master Enabled on: VM2 (score:INFINITY) (role: Master) (id:cli-prefer-ag_cluster-clone) Ordering Constraints: promote ag_cluster-clone then start virtualip (kind:Mandatory) (id:order-ag_cluster-clone-virtualip-mandatory) Colocation Constraints: virtualip with ag_cluster-clone (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-clone-INFINITY) Ticket Constraints:
Usuń ograniczenie z identyfikatorem
cli-prefer-ag_cluster-master
przy użyciu następującego polecenia:RHEL 7
sudo pcs constraint remove cli-prefer-ag_cluster-master
RHEL 8
sudo pcs constraint remove cli-prefer-ag_cluster-clone
Sprawdź zasoby klastra przy użyciu polecenia
sudo pcs resource
i sprawdź, czy wystąpienie podstawowe ma teraz wartość<VM2>
.[<username>@<VM1> ~]$ sudo pcs resource Master/Slave Set: ag_cluster-master [ag_cluster] ag_cluster (ocf::mssql:ag): FAILED <VM1> (Monitoring) Masters: [ <VM2> ] Slaves: [ <VM3> ] virtualip (ocf::heartbeat:IPaddr2): Started <VM2> [<username>@<VM1> ~]$ sudo pcs resource Master/Slave Set: ag_cluster-master [ag_cluster] Masters: [ <VM2> ] Slaves: [ <VM1> <VM3> ] virtualip (ocf::heartbeat:IPaddr2): Started <VM2>
Testowanie ogrodzenia
Możesz przetestować zabezpieczenie, uruchamiając następujące polecenie. Spróbuj uruchomić poniższe polecenie z <VM1>
dla <VM3>
.
sudo pcs stonith fence <VM3> --debug
Uwaga
Domyślnie akcja ogrodzenia powoduje wyłączenie węzła, a następnie włączenie. Jeśli chcesz przełączyć węzeł do trybu offline, użyj opcji --off
w poleceniu .
Powinny zostać wyświetlone następujące dane wyjściowe:
[<username>@<VM1> ~]$ sudo pcs stonith fence <VM3> --debug
Running: stonith_admin -B <VM3>
Return Value: 0
--Debug Output Start--
--Debug Output End--
Node: <VM3> fenced
Aby uzyskać więcej informacji na temat testowania urządzenia ogrodzenia, zobacz następujący artykuł firmy Red Hat.