Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se naučíte:
- Vytvoření virtuálních počítačů, jejich umístění do skupiny dostupnosti
- Povolení vysoké dostupnosti (HA)
- Vytvoření clusteru Pacemaker
- Nakonfigurujte agenta ve fencování vytvořením zařízení STONITH
- Instalace SQL Serveru a nástrojů mssql-tools na Ubuntu
- Konfigurovat skupinu dostupnosti Always On pro SQL Server
- Konfigurujte prostředky skupiny dostupnosti (AG) v clusteru Pacemaker
- Otestujte převzetí služeb při selhání a fencovacího agenta
Poznámka:
Tento článek obsahuje odkazy na termín slave (podřízený) , což je termín, který už Microsoft nepoužívá. Když se termín odebere ze softwaru, odebereme ho z tohoto článku.
V tomto kurzu se k nasazení prostředků v Azure používá Azure CLI.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Dockeru. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených v terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spusťte az version a zjistěte verzi a nainstalované závislé knihovny. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Tento článek vyžaduje verzi 2.0.30 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
Vytvoření skupiny zdrojů
Pokud máte více než jedno předplatné, nastavte předplatné, do kterého chcete tyto prostředky nasadit.
Pomocí následujícího příkazu vytvořte skupinu prostředků <resourceGroupName> v oblasti. Nahraďte <resourceGroupName> názvem podle vašeho výběru. Tento tutoriál používá East US 2. Další informace najdete v následujícím Rychlý Start.
az group create --name <resourceGroupName> --location eastus2
Vytvořte skupinu dostupnosti
Dalším krokem je vytvoření sady pro dostupnost. V Azure Cloud Shellu spusťte následující příkaz a nahraďte <resourceGroupName> názvem vaší skupiny prostředků. Zvolte název <availabilitySetName>.
az vm availability-set create \
--resource-group <resourceGroupName> \
--name <availabilitySetName> \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Po dokončení příkazu byste měli získat následující výsledky:
{
"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": []
}
Vytvoření virtuální sítě a podsítě
Vytvořte pojmenovanou podsíť s předem přiřazeným rozsahem IP adres. Nahraďte tyto hodnoty v následujícím příkazu:
<resourceGroupName><vNetName><subnetName>
az network vnet create \ --resource-group <resourceGroupName> \ --name <vNetName> \ --address-prefix 10.1.0.0/16 \ --subnet-name <subnetName> \ --subnet-prefix 10.1.1.0/24Předchozí příkaz vytvoří virtuální síť a podsíť obsahující vlastní rozsah IP adres.
Vytvoření virtuálních počítačů s Ubuntu uvnitř skupiny dostupnosti
Získejte seznam imagí virtuálních počítačů, které nabízejí operační systém založený na Ubuntu v Azure z Canonicalu.
az vm image list --all --publisher "Canonical"Tento tutoriál používá
Ubuntu 20.04.Důležité
Názvy počítačů musí mít délku méně než 15 znaků, aby bylo možné nastavit skupinu dostupnosti. Uživatelská jména nesmí obsahovat velká písmena a hesla musí mít 12 až 72 znaků.
Vytvořte tři virtuální počítače ve skupině dostupnosti. Nahraďte tyto hodnoty v následujícím příkazu:
<resourceGroupName><VM-basename><availabilitySetName>-
<VM-Size>– příklad by byl "Standard_D16s_v3" <username><adminPassword><vNetName><subnetName>
for i in `seq 1 3`; do az vm create \ --resource-group <resourceGroupName> \ --name <VM-basename>$i \ --availability-set <availabilitySetName> \ --size "<VM-Size>" \ --os-disk-size-gb 128 \ --image "Canonical:0001-com-ubuntu-server-jammy:20_04-lts-gen2:latest" \ --admin-username "<username>" \ --admin-password "<adminPassword>" \ --authentication-type all \ --generate-ssh-keys \ --vnet-name "<vNetName>" \ --subnet "<subnetName>" \ --public-ip-sku Standard \ --public-ip-address "" done
Předchozí příkaz vytvoří virtuální počítače pomocí dříve definované virtuální sítě. Další informace o různých konfiguracích najdete v článku az vm create.
Příkaz obsahuje také parametr --os-disk-size-gb pro vytvoření vlastní jednotky operačního systému o velikosti 128 GB. Pokud tuto velikost později zvětšíte, rozbalte příslušné svazky složek tak, aby vyhovovaly vaší instalaci, nakonfigurujteSprávce logických svazků (LVM).
Po dokončení příkazu pro každý virtuální počítač byste měli získat podobné výsledky jako následující:
{
"fqdns": "",
"id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/ubuntu1",
"location": "westus",
"macAddress": "<Some MAC address>",
"powerState": "VM running",
"privateIpAddress": "<IP1>",
"resourceGroup": "<resourceGroupName>",
"zones": ""
}
Testování připojení k vytvořeným virtuálním počítačům
Ke každému virtuálnímu počítači se připojte pomocí následujícího příkazu v Azure Cloud Shellu. Pokud nemůžete najít IP adresy virtuálních počítačů, postupujte podle tohoto rychlého startu ve službě Azure Cloud Shell.
ssh <username>@<publicIPAddress>
Pokud je připojení úspěšné, měl by se zobrazit následující výstup představující terminál Linuxu:
[<username>@ubuntu1 ~]$
Zadáním exit opustíte relaci SSH.
Konfigurace přístupu SSH bez hesla mezi uzly
Přístup SSH bez hesla umožňuje virtuálním počítačům vzájemně komunikovat pomocí veřejných klíčů SSH. Na každém uzlu musíte nakonfigurovat klíče SSH a tyto klíče zkopírovat do každého uzlu.
Generování nových klíčů SSH
Požadovaná velikost klíče SSH je 4 096 bitů. Na každém virtuálním počítači přejděte do složky /root/.ssh a spusťte následující příkaz:
ssh-keygen -t rsa -b 4096
Během tohoto kroku se může zobrazit výzva k přepsání existujícího souboru SSH. Musíte souhlasit s touto výzvou. Nemusíte zadávat přístupové heslo.
Kopírování veřejných klíčů SSH
Na každém virtuálním počítači musíte pomocí příkazu ssh-copy-id zkopírovat veřejný klíč z právě vytvořeného uzlu. Pokud chcete zadat cílový adresář na cílovém virtuálním počítači, můžete použít parametr -i.
V následujícím příkazu může být účet <username> stejný účet, který jste nakonfigurovali pro každý uzel při vytváření virtuálního počítače. Můžete také použít účet root, ale tato možnost se nedoporučuje v produkčním prostředí.
sudo ssh-copy-id <username>@ubuntu1
sudo ssh-copy-id <username>@ubuntu2
sudo ssh-copy-id <username>@ubuntu3
Ověření přístupu bez hesla z každého uzlu
Pokud chcete ověřit, že se veřejný klíč SSH zkopíroval do každého uzlu, použijte příkaz ssh z každého uzlu. Pokud jste klíče zkopírovali správně, nezobrazí se výzva k zadání hesla a připojení je úspěšné.
V tomto příkladu se připojujeme k druhému a třetímu uzlu z prvního virtuálního počítače (ubuntu1). Účet <username> může být opět stejný účet, který jste nakonfigurovali pro každý uzel při vytváření virtuálního počítače.
ssh <username>@ubuntu2
ssh <username>@ubuntu3
Tento proces opakujte ze všech tří uzlů, aby každý uzel mohl komunikovat s ostatními bez nutnosti hesel.
Konfigurace překladu názvů
Překlad názvů můžete nakonfigurovat pomocí DNS nebo ruční úpravou souboru etc/hosts na každém uzlu.
Další informace o DNS a Active Directory najdete v tématu Připojení SQL Serveru na hostiteli s Linuxem k doméně služby Active Directory.
Důležité
Doporučujeme použít privátní IP adresu v předchozím příkladu. Použití veřejné IP adresy v této konfiguraci způsobí selhání instalace a zveřejní váš virtuální počítač externím sítím.
Virtuální počítače a jejich IP adresa použité v tomto příkladu jsou uvedené takto:
-
ubuntu1: 10.0.0.85 -
ubuntu2: 10.0.0.86 -
ubuntu3: 10.0.0.87
Povolení vysoké dostupnosti
Pomocí ssh se připojte ke každému ze tří virtuálních počítačů a po připojení spusťte následující příkazy, které umožňují vysokou dostupnost.
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
Instalace a konfigurace clusteru Pacemaker
Pokud chcete začít s konfigurací clusteru Pacemaker, musíte nainstalovat požadované balíčky a agenty prostředků. Na každém virtuálním počítači spusťte následující příkazy:
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents csync2 python3-azure
Teď pokračujte vytvořením ověřovacího klíče na primárním serveru:
sudo corosync-keygen
Ověřovací klíč se vygeneruje na umístění /etc/corosync/authkey. Zkopírujte klíč ověřování na sekundární servery v tomto umístění: /etc/corosync/authkey
sudo scp /etc/corosync/authkey username@ubuntu2:~
sudo scp /etc/corosync/authkey username@ubuntu3:~
Přesuňte ověřovací klíč z domovského adresáře do /etc/corosync.
sudo mv authkey /etc/corosync/authkey
Pokračujte vytvořením clusteru pomocí následujících příkazů:
cd /etc/corosync/
sudo vi corosync.conf
Upravte soubor Corosync tak, aby zobrazoval obsah takto:
totem {
version: 2
secauth: off
cluster_name: demo
transport: udpu
}
nodelist {
node {
ring0_addr: 10.0.0.85
name: ubuntu1
nodeid: 1
}
node {
ring0_addr: 10.0.0.86
name: ubuntu2
nodeid: 2
}
node {
ring0_addr: 10.0.0.87
name: ubuntu3
nodeid: 3
}
}
quorum {
provider: corosync_votequorum
two_node: 0
}
qb {
ipc_type: native
}
logging {
fileline: on
to_stderr: on
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: no
debug: off
}
Zkopírujte soubor corosync.conf do jiných uzlů do /etc/corosync/corosync.conf:
sudo scp /etc/corosync/corosync.conf username@ubuntu2:~
sudo scp /etc/corosync/corosync.conf username@ubuntu3:~
sudo mv corosync.conf /etc/corosync/
Restartujte Pacemaker a Corosync a potvrďte stav:
sudo systemctl restart pacemaker corosync
sudo crm status
Výstup vypadá podobně jako v následujícím příkladu:
Cluster Summary:
* Stack: corosync
* Current DC: ubuntu1 (version 2.0.3-4b1f869f0f) - partition with quorum
* Last updated: Wed Nov 29 07:01:32 2023
* Last change: Sun Nov 26 17:00:26 2023 by hacluster via crmd on ubuntu1
* 3 nodes configured
* 0 resource instances configured
Node List:
* Online: [ ubuntu1 ubuntu2 ubuntu3 ]
Full List of Resources:
* No resources
Nastavení agenta oplocení
Nakonfigurujte ohraničení v clusteru. fencingu je izolace uzlu, který selhal v clusteru. Restartuje uzel, který selhal, nechá ho přejít dolů, resetovat a vrátit se zpět a znovu se připojit ke clusteru.
Pokud chcete nakonfigurovat ohraničení, proveďte následující akce:
- Registrace nové aplikace v Microsoft Entra ID a vytvoření tajného kódu
- Vytvoření vlastní role ze souboru JSON v PowerShellu nebo rozhraní příkazového řádku
- Přiřazení role a aplikace k virtuálním počítačům v clusteru
- Nastavení vlastností agenta oplocení
Registrace nové aplikace v Microsoft Entra ID a vytvoření tajného kódu
- Na portálu přejděte na ID Microsoft Entra a poznamenejte si ID tenanta.
- V nabídce na levé straně vyberte Registrace aplikací a pak vyberte Nová registrace.
- Zadejte název a pak vyberte Účty pouze v tomto adresáři organizace.
- Pro typ aplikacevyberte Web, zadejte
http://localhostjako URL pro přihlášení, a pak vyberte Zaregistrovat. - V nabídce na levé straně vyberte Certifikáty a tajné kódy a pak vyberte Nový tajný klíč klienta.
- Zadejte popis a vyberte období vypršení platnosti.
- Poznamenejte si hodnotu tajemství, použije se jako následující heslo, a ID tajemství se použije jako následující uživatelské jméno.
- Vyberte Přehled a poznamenejte si ID aplikace. Používá se jako následující přihlášení.
Vytvořte soubor JSON s názvem fence-agent-role.json a přidejte následující (přidejte ID předplatného):
{
"Name": "Linux Fence Agent Role-ap-server-01-fence-agent",
"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/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
]
}
Vytvoření vlastní role ze souboru JSON v PowerShellu nebo rozhraní příkazového řádku
az role definition create --role-definition fence-agent-role.json
Přiřazení role a aplikace k virtuálním počítačům v clusteru
- Pro každý virtuální počítač v clusteru vyberte řízení přístupu (IAM) z boční nabídky.
- Vyberte Přidat přiřazení role (použijte klasické rozhraní).
- Vyberte dříve vytvořenou roli.
- V seznamu Vybrat zadejte název aplikace vytvořené dříve.
Nyní můžeme vytvořit prostředek agenta pro fencing pomocí předchozích hodnot a ID vašeho předplatného:
sudo crm configure primitive fence-vm stonith:fence_azure_arm \
params \
action=reboot \
resourceGroup="resourcegroupname" \
resourceGroup="$resourceGroup" \
username="$secretId" \
login="$applicationId" \
passwd="$password" \
tenantId="$tenantId" \
subscriptionId="$subscriptionId" \
pcmk_reboot_timeout=900 \
power_timeout=60 \
op monitor \
interval=3600 \
timeout=120
Nastavení vlastností agenta oplocení
Spusťte následující příkazy pro nastavení vlastností fencing agenta:
sudo crm configure property cluster-recheck-interval=2min
sudo crm configure property start-failure-is-fatal=true
sudo crm configure property stonith-timeout=900
sudo crm configure property concurrent-fencing=true
sudo crm configure property stonith-enabled=true
A potvrďte stav clusteru:
sudo crm status
Výstup vypadá podobně jako v následujícím příkladu:
Cluster Summary:
* Stack: corosync
* Current DC: ubuntu1 (version 2.0.3-4b1f869f0f) - partition with quorum
* Last updated: Wed Nov 29 07:01:32 2023
* Last change: Sun Nov 26 17:00:26 2023 by root via cibadmin on ubuntu1
* 3 nodes configured
* 1 resource instances configured
Node List:
* Online: [ ubuntu1 ubuntu2 ubuntu3 ]
Full List of Resources:
* fence-vm (stonith:fence_azure_arm): Started ubuntu1
Instalace SQL Serveru a nástrojů mssql
K instalaci SQL Serveru se používají následující příkazy:
Import klíčů GPG veřejného úložiště:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.ascZaregistrujte úložiště Ubuntu:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"Spuštěním následujících příkazů nainstalujte SQL Server:
sudo apt-get update sudo apt-get install -y mssql-serverPo dokončení instalace balíčku spusťte
mssql-conf setupa podle pokynů nastavte heslo SA a zvolte svoji edici. Připomínáme, že následující edice jsou volně licencované: Hodnocení, Vývojář a Express.sudo /opt/mssql/bin/mssql-conf setupPo dokončení konfigurace ověřte, že je služba spuštěná:
systemctl status mssql-server --no-pagerInstalace nástrojů příkazového řádku SQL Serveru
Pokud chcete vytvořit databázi, musíte se připojit pomocí nástroje, který může spouštět příkazy Transact-SQL na SQL Serveru. Následující kroky nainstalují nástroje příkazového řádku SQL Serveru: sqlcmd a bcp.
Pomocí následujícího postupu nainstalujte mssql-tools18 na Ubuntu.
Poznámka:
- Ubuntu 18.04 se podporuje od SQL Serveru 2019 CU 3.
- Ubuntu 20.04 se podporuje od SQL Serveru 2019 CU 10.
- Ubuntu 22.04 se podporuje od SQL Serveru 2022 CU 10.
Přejděte do režimu superuživatele.
sudo suImportujte klíče GPG veřejného úložiště.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.ascZaregistrujte úložiště Microsoft Ubuntu.
Pro Ubuntu 22.04 použijte následující příkaz:
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.listPro Ubuntu 20.04 použijte následující příkaz:
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.listPro Ubuntu 18.04 použijte následující příkaz:
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.listPro Ubuntu 16.04 použijte následující příkaz:
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
Ukončete režim superuživatele.
exitAktualizujte seznam zdrojů a spusťte instalační příkaz pomocí vývojářského balíčku unixODBC.
sudo apt-get update sudo apt-get install mssql-tools18 unixodbc-devPoznámka:
Pokud chcete aktualizovat na nejnovější verzi nástroje mssql-tools, spusťte následující příkazy:
sudo apt-get update sudo apt-get install mssql-tools18Volitelné: Do proměnné prostředí
/opt/mssql-tools18/bin/v bash shellu přidejtePATH.Pokud chcete zpřístupnit sqlcmd a bcp z prostředí Bash pro relace přihlášení, upravte
PATHv souboru~/.bash_profilenásledujícím příkazem:echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profilePokud chcete sqlcmd a bcp zpřístupnit z shellu bash pro interaktivní nebo nepřihlašovací relace, upravte
PATHv souboru~/.bashrcpomocí tohoto příkazu:echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc
Instalace agenta s vysokou dostupností SQL Serveru
Spuštěním následujícího příkazu na všech uzlech nainstalujte balíček agenta s vysokou dostupností pro SQL Server:
sudo apt-get install mssql-server-ha
Konfigurace skupiny dostupnosti
Pomocí následujícího postupu nakonfigurujte skupinu dostupnosti AlwaysOn SQL Serveru pro vaše virtuální počítače. Další informace najdete v tématu Konfigurace Always On dostupnostních skupin SQL Serveru pro zajištění vysoké dostupnosti na Linuxu.
Povolení skupin dostupnosti a restartování SQL Serveru
Povolte skupiny dostupnosti na každém uzlu, který je hostitelem instance SQL Serveru. Potom restartujte službu mssql-server. Na každém uzlu spusťte následující příkazy:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
Vytvoření certifikátu
Microsoft nepodporuje ověřování Active Directory pro koncový bod skupiny dostupnosti. Proto musíte použít certifikát pro šifrování koncového bodu AG.
Připojte se ke všechny uzly pomocí aplikace SQL Server Management Studio (SSMS) nebo sqlcmd. Spuštěním následujících příkazů povolte AlwaysOn_health relaci a vytvořte hlavní klíč:
Důležité
Pokud se ke své instanci SQL Serveru připojujete vzdáleně, budete muset mít na bráně firewall otevřený port 1433. Také budete muset povolit příchozí připojení k portu 1433 ve skupině zabezpečení sítě (NSG) pro každý virtuální počítač. Další informace najdete v tématu Vytvoření pravidla zabezpečení pro vytvoření příchozího pravidla zabezpečení.
- Nahraďte
<MasterKeyPassword>vlastním heslem.
ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE = ON); GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<MasterKeyPassword>'; GO- Nahraďte
Připojte se k primární replice pomocí SSMS nebo sqlcmd. Následující příkazy vytvoří certifikát na
/var/opt/mssql/data/dbm_certificate.cera privátní klíč navar/opt/mssql/data/dbm_certificate.pvkna primární replice SQL Serveru:- Nahraďte
<PrivateKeyPassword>vlastním heslem.
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 = '<PrivateKeyPassword>' ); GO- Nahraďte
Ukončete relaci sqlcmd spuštěním příkazu exit a vraťte se zpět do relace SSH.
Zkopírujte certifikát do sekundárních replik a vytvořte certifikáty na serveru.
Zkopírujte dva vytvořené soubory do stejného umístění na všech serverech, které budou hostovat dostupnostní repliky.
Na primárním serveru spusťte následující příkaz
scp, který zkopíruje certifikát na cílové servery:- Nahraďte
<username>asles2uživatelským jménem a cílovým názvem virtuálního počítače, který používáte. - Spusťte tento příkaz pro všechny sekundární repliky.
Poznámka:
Nemusíte spouštět
sudo -i, který vám poskytuje kořenové prostředí. Příkazsudomůžete spustit před každým příkazem.# The below command allows you to run commands in the root environment sudo -iscp /var/opt/mssql/data/dbm_certificate.* <username>@sles2:/home/<username>- Nahraďte
Na cílovém serveru spusťte následující příkaz:
- Nahraďte
<username>svým uživatelským jménem. - Příkaz
mvpřesune soubory nebo adresář z jednoho místa do jiného. - Příkaz
chownslouží ke změně vlastníka a skupiny souborů, adresářů nebo odkazů. - Spusťte tyto příkazy pro všechny sekundární repliky.
sudo -i mv /home/<username>/dbm_certificate.* /var/opt/mssql/data/ cd /var/opt/mssql/data chown mssql:mssql dbm_certificate.*- Nahraďte
Následující skript Transact-SQL vytvoří certifikát ze zálohy, kterou jste vytvořili na primární replice SQL Serveru. Aktualizujte skript silnými hesly. Dešifrovací heslo je stejné heslo, které jste použili k vytvoření souboru .pvk v předchozím kroku. Pokud chcete vytvořit certifikát, spusťte následující skript pomocí sqlcmd nebo SSMS na všech sekundárních serverech:
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 = '<PrivateKeyPassword>' ); GO
Vytvořte koncové body pro zrcadlení databáze na všech replikách
Na všech instancích SQL Serveru spusťte následující skript pomocí sqlcmd nebo 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
Vytvoření skupiny dostupnosti
Připojte se k instanci SQL Serveru, která je hostitelem primární repliky, pomocí sqlcmd nebo SSMS. Spuštěním následujícího příkazu vytvořte skupinu dostupnosti:
- Nahraďte
ag1požadovaným názvem AG. - Nahraďte hodnoty
ubuntu1,ubuntu2aubuntu3názvy instancí SYSTÉMU SQL Server, které hostují repliky.
CREATE AVAILABILITY
GROUP [ag1]
WITH (
DB_FAILOVER = ON,
CLUSTER_TYPE = EXTERNAL
)
FOR REPLICA
ON N'ubuntu1'
WITH (
ENDPOINT_URL = N'tcp://ubuntu1:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
),
N'ubuntu2'
WITH (
ENDPOINT_URL = N'tcp://ubuntu2:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
),
N'ubuntu3'
WITH (
ENDPOINT_URL = N'tcp://ubuntu3:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = EXTERNAL,
SEEDING_MODE = AUTOMATIC
);
GO
ALTER AVAILABILITY GROUP [ag1]
GRANT CREATE ANY DATABASE;
GO
Vytvoření přihlášení k SQL Serveru pro Pacemaker
Ve všech instancích SQL Serveru vytvořte přihlášení k SQL Serveru pro Pacemaker. Následující Transact-SQL vytvoří přihlášení.
- Nahraďte
<password>vlastním složitým heslem.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
GO
ALTER SERVER ROLE [sysadmin]
ADD MEMBER [pacemakerLogin];
GO
Ve všech instancích SQL Serveru uložte přihlašovací údaje použité pro přihlášení k SQL Serveru.
Vytvořte soubor:
sudo vi /var/opt/mssql/secrets/passwdDo souboru přidejte následující dva řádky:
pacemakerLogin <password>Pokud chcete ukončit editor vi, nejprve stiskněte klávesu Esc a potom zadejte příkaz
:wqpro zápis souboru a ukončení.Nastavení souboru jen pro čtení pomocí kořenového adresáře:
sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 400 /var/opt/mssql/secrets/passwd
Připojení sekundárních replik ke skupině dostupnosti
Na sekundárních replikách spusťte následující příkazy, které je připojí ke skupině dostupnosti:
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE; GONa primární replice a každé sekundární replice spusťte následující skript Transact-SQL:
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO pacemakerLogin; GO GRANT VIEW SERVER STATE TO pacemakerLogin; GOJakmile jsou sekundární repliky připojené, můžete je zobrazit v Průzkumníku objektů SSMS rozbalením vysoké dostupnosti AlwaysOn uzlu:
Přidání databáze do skupiny dostupnosti
Tato část navazuje na článek o přidání databáze do skupiny dostupnosti.
V tomto kroku se používají následující příkazy Transact-SQL. Na primární replice spusťte tyto příkazy:
CREATE DATABASE [db1]; -- creates a database named db1
GO
ALTER DATABASE [db1] SET RECOVERY FULL; -- set the database in full recovery mode
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
Ověřte, že je databáze vytvořená na sekundárních serverech.
Na každé sekundární replice SQL Serveru spusťte následující dotaz, abyste zjistili, jestli se databáze db1 vytvořila a je ve stavu SYNCHRONIZOVANÁ:
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;
GO
Pokud synchronization_state_desc obsahuje seznam SYNCHRONIZOVANÝCH pro db1, znamená to, že repliky se synchronizují. Sekundární soubory zobrazují db1 v primární replice.
Vytvoření zdrojů skupiny dostupnosti v clusteru Pacemaker
Pokud chcete vytvořit prostředek skupiny dostupnosti v Pacemakeru, spusťte následující příkazy:
sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
Tento výše uvedený příkaz vytvoří prostředek ag1_cluster, tj. prostředek skupiny dostupnosti. Pak vytvoří prostředek ms-ag1 (primární/sekundární prostředek v Pacemakeru a pak do něj přidá prostředek skupiny dostupnosti. Tím se zajistí, že prostředek skupiny dostupnosti běží na všech třech uzlech v clusteru, ale pouze jeden z těchto uzlů je primární.)
Chcete-li zobrazit prostředek skupiny AG a zkontrolovat stav clusteru:
sudo crm resource status ms-ag1
sudo crm status
Výstup vypadá podobně jako v následujícím příkladu:
resource ms-ag1 is running on: ubuntu1 Master
resource ms-ag1 is running on: ubuntu3
resource ms-ag1 is running on: ubuntu2
Výstup vypadá podobně jako v následujícím příkladu. Pokud chcete přidat omezení kolokace a propagace, přečtěte si téma Kurz: Konfigurace naslouchacího procesu pro skupinu dostupnosti na virtuálních počítačích s Linuxem.
Cluster Summary:
* Stack: corosync
* Current DC: ubuntu1 (version 2.0.3-4b1f869f0f) - partition with quorum
* Last updated: Wed Nov 29 07:01:32 2023
* Last change: Sun Nov 26 17:00:26 2023 by root via cibadmin on ubuntu1
* 3 nodes configured
* 4 resource instances configured
Node List:
* Online: [ ubuntu1 ubuntu2 ubuntu3 ]
Full List of Resources:
* Clone Set: ms-ag1 [ag1_cluster] (promotable):
* Masters: [ ubuntu1 ]
* Slaves : [ ubuntu2 ubuntu3 ]
* fence-vm (stonith:fence_azure_arm): Started ubuntu1
Spuštěním následujícího příkazu vytvořte prostředek skupiny, aby se omezení kolokace a promoce použitá u naslouchacího a nástroje pro vyrovnávání zatížení nemusela používat jednotlivě.
sudo crm configure group virtualip-group azure-load-balancer virtualip
Výstup crm status bude vypadat podobně jako v následujícím příkladu:
Cluster Summary:
* Stack: corosync
* Current DC: ubuntu1 (version 2.0.3-4b1f869f0f) - partition with quorum
* Last updated: Wed Nov 29 07:01:32 2023
* Last change: Sun Nov 26 17:00:26 2023 by root via cibadmin on ubuntu1
* 3 nodes configured
* 6 resource instances configured
Node List:
* Online: [ ubuntu1 ubuntu2 ubuntu3 ]
Full List of Resources:
* Clone Set: ms-ag1 [ag1_cluster] (promotable):
* Masters: [ ubuntu1 ]
* Slaves : [ ubuntu2 ubuntu3 ]
* Resource Group: virtual ip-group:
* azure-load-balancer (ocf :: heartbeat:azure-lb): Started ubuntu1
* virtualip (ocf :: heartbeat: IPaddr2): Started ubuntu1
* fence-vm (stonith:fence_azure_arm): Started ubuntu1