Samouczek: konfigurowanie grup dostępności dla programu SQL Server na maszynach wirtualnych RHEL na platformie Azure
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łączanie wysokiej dostępności (HA)
- Tworzenie klastra Pacemaker
- Konfigurowanie agenta ogrodzenia 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
- Konfigurowanie zasobów grupy dostępności w klastrze Pacemaker
- Testowanie trybu failover i agenta ogrodzenia
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 powłoki 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>
ciąg 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
W przypadku wybrania obrazu systemu RHEL z płatnością zgodnie z rzeczywistym użyciem (PAYG) i skonfigurowania wysokiej dostępności (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 oferowane jako obrazy RHEL-HA są również obrazami PAYG z wstępnie 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 wybieramyRedHat:RHEL-HA:8.1:8.1.2020021914
przykład 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>
<adminPassword>
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 "<adminPassword>" \ --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 potencjalnie zabrakło miejsca z tą instalacją domyślną. 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łączanie wysokiej dostępności
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 maszyny wirtualnej i postępuj zgodnie z tym przewodnikiem, aby włączyć wysoką dostępność. 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
Użyj następującego polecenia, aby otworzyć plik hosts i skonfigurować rozpoznawanie nazw hosta. Aby uzyskać więcej informacji, zobacz Konfigurowanie grupy dostępności na temat konfigurowania pliku hostów.
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 wystąpienia klastra trybu failover dla systemu RHEL.
Włączanie i uruchamianie usługi pcsd i Pacemaker
Uruchom polecenia na wszystkich węzłach. Te polecenia umożliwiają węzłom ponowne dołączanie 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 utworzonego wcześniej 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 oczekiwane głosy w klastrze na żywo na 3. To polecenie ma wpływ tylko na klaster na żywo i nie zmienia plików konfiguracji.
Na wszystkich węzłach ustaw oczekiwane głosy za pomocą następującego polecenia:
sudo pcs quorum expected-votes 3
Konfigurowanie agenta ogrodzenia
Aby skonfigurować agenta ogrodzenia, następujące instrukcje są modyfikowane na potrzeby tego samouczka. 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
Powinny zostać wyświetlone podobne dane wyjściowe 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 identyfikatora entra firmy Microsoft i zapisz element
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 firma Microsoft — pojedyncza dzierżawa). - Wybierz pozycję Sieć Web w polu Identyfikator URI przekierowania, a następnie wprowadź adres URL (na przykład
http://localhost
) i wybierz pozycję 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ść wpisu tajnego. Jest on używany jako hasło dla jednostki usługi.
- Wybierz Przegląd. Zapisz identyfikator aplikacji. Jest ona używana jako nazwa użytkownika (identyfikator logowania w poniższych krokach) jednostki usługi.
Tworzenie roli niestandardowej dla agenta ogrodzenia
Postępuj zgodnie z samouczkiem, aby utworzyć rolę niestandardową platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
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>
ciąg identyfikatorem subskrypcji platformy 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>
ciąg 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"
}
Przypisywanie roli niestandardowej do jednostki usługi
Przypisz rolę Linux Fence Agent Role-<username>
niestandardową utworzoną w ostatnim kroku do jednostki usługi. 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 (Zarządzanie dostępem i tożsamościami)
- Wybierz pozycję 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:
<ApplicationID>
Zastąp wartość identyfikatorem z rejestracji aplikacji.- Zastąp wartość
<servicePrincipalPassword>
wartością z klucza tajnego klienta. - Zastąp element
<resourceGroupName>
grupą zasobów z subskrypcji używanej na potrzeby tego samouczka. - Zastąp
<subscriptionId>
wartości<tenantID>
i z subskrypcji platformy Azure.
sudo pcs property set stonith-timeout=900
sudo pcs stonith create rsc_st_azure fence_azure_arm login="<ApplicationID>" passwd="<servicePrincipalPassword>" 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
Otwieranie portu 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 z portem 1433 w sieciowej grupie zabezpieczeń dla każdej maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Tworzenie reguły zabezpieczeń na potrzeby tworzenia reguły zabezpieczeń dla ruchu przychodzącego.
- Zastąp element
<Master_Key_Password>
własnym hasłem.
ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON); GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Master_Key_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
<Private_Key_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 = '<Private_Key_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>
wartości i<VM2>
nazwą użytkownika i docelową nazwą maszyny wirtualnej, której używasz. - Uruchom to polecenie dla wszystkich replik pomocniczych.
Uwaga
Nie trzeba uruchamiać
sudo -i
polecenia , co daje środowisko główne. Możesz po prostu uruchomićsudo
polecenie przed każdym poleceniem, tak jak poprzednio 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>
ciąg 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. - Uruchom te 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 = '<Private_Key_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 wystąpieniem programu SQL Server, które hostuje replikę podstawową przy użyciu narzędzia sqlcmd lub programu SSMS. Uruchom następujące polecenie, aby utworzyć grupę dostępności:
- Zastąp
ag1
ciąg żądaną nazwą grupy dostępności. - Zastąp
<VM1>
wartości ,<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 identyfikatora logowania programu SQL Server dla programu Pacemaker
We wszystkich wystąpieniach programu SQL Server utwórz identyfikator logowania programu SQL Server dla programu Pacemaker. Poniższy kod Transact-SQL tworzy identyfikator logowania.
- 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 wystąpieniach programu SQL Server zapisz poświadczenia używane do logowania programu SQL Server.
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 plik tylko do odczytu według katalogu głównego:
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, należy otworzyć port 5022 w zaporze dla 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 w repliki podstawowej i każdej repliki 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 programie SSMS Eksplorator obiektów, rozwijając węzeł Zawsze włączone wysokiej dostępności:
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 lista synchronization_state_desc
zsynchronizowana dla db1
elementu oznacza, że repliki są synchronizowane. Sekundy są wyświetlane db1
w repliki podstawowej.
Tworzenie zasobów grupy dostępności w klastrze Pacemaker
Postępuj zgodnie z przewodnikiem tworzenia zasobów 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.
Tworzenie zasobu klastra grupy dostępności
Użyj jednego z następujących poleceń opartych na środowisku wybranym wcześniej, aby utworzyć zasób
ag_cluster
w grupieag1
dostępności .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 go znaleźć za pomocą narzędzia
nmap
poleceń .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 grupy dostępności 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 grupy dostępności jest uruchomiony przed adresem IP. Chociaż ograniczenie kolokacji oznacza ograniczenie porządkowania, wymusza to ograniczenie.
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 zakończyła się pomyślnie, przetestujemy tryb failover. Aby uzyskać więcej informacji, zobacz Tryb failover zawsze włączonej grupy dostępności w systemie Linux.
Uruchom następujące polecenie, aby ręcznie przejąć replikę podstawową w tryb failover na
<VM2>
. Zastąp<VM2>
ciąg wartością nazwy 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ć ogrodzenie, uruchamiając następujące polecenie. Spróbuj uruchomić poniższe polecenie z <VM1>
polecenia dla polecenia <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ł z systemem Red Hat .