Oktatóanyag: Az SQL Server rendelkezésre állási csoportjainak konfigurálása Ubuntu virtuális gépeken az Azure-ban
Az oktatóanyag segítségével megtanulhatja a következőket:
- Virtuális gépek létrehozása, rendelkezésre állási csoportba helyezése
- Magas rendelkezésre állás engedélyezése (HA)
- Pacemaker-fürt létrehozása
- Kerítésügynök konfigurálása STONITH-eszköz létrehozásával
- AZ SQL Server és az mssql-tools telepítése az Ubuntu-on
- Sql Server Always On rendelkezésre állási csoport konfigurálása
- Rendelkezésre állási csoport (AG) erőforrásainak konfigurálása a Pacemaker-fürtben
- Feladatátvétel és a kerítésügynök tesztelése
Megjegyzés:
Torzításmentes kommunikáció
Ez a cikk a rabszolga kifejezésre mutató hivatkozásokat tartalmaz, amely a Microsoft által sértőnek ítélt kifejezés, ha ebben a kontextusban használják. A kifejezés azért jelenik meg ebben a cikkben, mert jelenleg a szoftverben jelenik meg. Ha a kifejezés el lesz távolítva a szoftverből, eltávolítjuk a cikkből.
Ez az oktatóanyag az Azure CLI használatával helyezi üzembe az erőforrásokat az Azure-ban.
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ez a cikk az Azure CLI 2.0.30-s vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
Erőforráscsoport létrehozása
Ha több előfizetéssel rendelkezik, állítsa be azt az előfizetést, amelybe telepíteni szeretné ezeket az erőforrásokat.
Az alábbi paranccsal hozzon létre egy erőforráscsoportot <resourceGroupName>
egy régióban. Cserélje le <resourceGroupName>
az Ön által választott névre. Ebben az oktatóanyagban a következőt használjuk: East US 2
. További információkért tekintse meg az alábbi rövid útmutatót.
az group create --name <resourceGroupName> --location eastus2
Rendelkezésre állási csoport létrehozása
A következő lépés egy rendelkezésre állási csoport létrehozása. Futtassa a következő parancsot az Azure Cloud Shellben, és cserélje le <resourceGroupName>
az erőforráscsoport nevére. Válasszon nevet a következőnek <availabilitySetName>
: .
az vm availability-set create \
--resource-group <resourceGroupName> \
--name <availabilitySetName> \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
A parancs befejeződése után a következő eredményeket kell kapnia:
{
"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": []
}
Virtuális hálózat és alhálózat létrehozása
Hozzon létre egy elnevezett alhálózatot egy előre hozzárendelt IP-címtartománysal. Cserélje le ezeket az értékeket a következő parancsban:
<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/24
Az előző parancs létrehoz egy virtuális hálózatot és egy egyéni IP-tartományt tartalmazó alhálózatot.
Ubuntu virtuális gépek létrehozása a rendelkezésre állási csoportban
Lekérheti az Ubuntu-alapú operációs rendszert kínáló virtuálisgép-rendszerképek listáját az Azure-ban.
az vm image list --all --offer "sql2022-ubuntupro2004"
A BYOS-rendszerképek keresésekor a következő eredményeknek kell megjelennie:
[ { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "enterprise_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:enterprise_upro:16.0.221108", "version": "16.0.221108" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "enterprise_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:enterprise_upro:16.0.230207", "version": "16.0.230207" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "enterprise_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:enterprise_upro:16.0.230808", "version": "16.0.230808" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "sqldev_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:sqldev_upro:16.0.221108", "version": "16.0.221108" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "sqldev_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:sqldev_upro:16.0.230207", "version": "16.0.230207" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "sqldev_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:sqldev_upro:16.0.230808", "version": "16.0.230808" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "standard_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:standard_upro:16.0.221108", "version": "16.0.221108" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "standard_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:standard_upro:16.0.230207", "version": "16.0.230207" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "standard_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:standard_upro:16.0.230808", "version": "16.0.230808" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "web_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:web_upro:16.0.221108", "version": "16.0.221108" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "web_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:web_upro:16.0.230207", "version": "16.0.230207" }, { "architecture": "x64", "offer": "sql2022-ubuntupro2004", "publisher": "MicrosoftSQLServer", "sku": "web_upro", "urn": "MicrosoftSQLServer:sql2022-ubuntupro2004:web_upro:16.0.230808", "version": "16.0.230808" } ]
Ebben az oktatóanyagban a következőt használjuk:
Ubuntu 20.04
.Fontos
A gépneveknek 15 karakternél rövidebbnek kell lenniük a rendelkezésre állási csoport beállításához. A felhasználónevek nem tartalmazhatnak nagybetűket, és a jelszavaknak 12 és 72 karakter közöttinek kell lenniük.
Hozzon létre három virtuális gépet a rendelkezésre állási csoportban. Cserélje le ezeket az értékeket a következő parancsban:
<resourceGroupName>
<VM-basename>
<availabilitySetName>
<VM-Size>
- Ilyen például a "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
Az előző parancs a korábban definiált virtuális hálózat használatával hozza létre a virtuális gépeket. A különböző konfigurációkkal kapcsolatos további információkért tekintse meg az az vm create cikket.
A parancs azt a --os-disk-size-gb
paramétert is tartalmazza, amely 128 GB-os egyéni operációsrendszer-meghajtóméretet hoz létre. Ha később növeli ezt a méretet, bontsa ki a megfelelő mappaköteteket a telepítéshez, konfigurálja a Logikai kötetkezelőt (LVM).
Az egyes virtuális gépek parancsának befejeződése után az alábbihoz hasonló eredményeket kell kapnia:
{
"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": ""
}
A létrehozott virtuális gépekkel való kapcsolat tesztelése
Csatlakozás az egyes virtuális gépekre az alábbi paranccsal az Azure Cloud Shellben. Ha nem találja a virtuálisgép-IP-címeket, kövesse ezt a rövid útmutatót az Azure Cloud Shellben.
ssh <username>@<publicIPAddress>
Ha a kapcsolat sikeres, a következő kimenetnek kell megjelennie, amely a Linux-terminált jelöli:
[<username>@ubuntu1 ~]$
Írja be exit
az SSH-munkamenet elhagyásához.
Jelszó nélküli SSH-hozzáférés konfigurálása csomópontok között
A jelszó nélküli SSH-hozzáférés lehetővé teszi, hogy a virtuális gépek SSH nyilvános kulcsokkal kommunikáljanak egymással. Minden csomóponton konfigurálnia kell az SSH-kulcsokat, és ezeket a kulcsokat minden csomópontra át kell másolnia.
Új SSH-kulcsok létrehozása
A szükséges SSH-kulcsméret 4096 bit. Minden virtuális gépen váltson a /root/.ssh
mappára, és futtassa a következő parancsot:
ssh-keygen -t rsa -b 4096
Ebben a lépésben előfordulhat, hogy a rendszer egy meglévő SSH-fájl felülírását kéri. El kell fogadnia ezt a kérést. Nem kell jelszót megadnia.
A nyilvános SSH-kulcsok másolása
Minden virtuális gépen át kell másolnia a nyilvános kulcsot az imént létrehozott csomópontról a ssh-copy-id
parancs használatával. Ha meg szeretné adni a célkönyvtárat a cél virtuális gépen, használhatja a paramétert -i
.
Az alábbi parancsban a <username>
fiók lehet ugyanaz a fiók, amely az egyes csomópontokhoz konfigurálva van a virtuális gép létrehozásakor. Használhatja a root
fiókot is, de ez a beállítás éles környezetben nem ajánlott.
sudo ssh-copy-id <username>@ubuntu1
sudo ssh-copy-id <username>@ubuntu2
sudo ssh-copy-id <username>@ubuntu3
Jelszó nélküli hozzáférés ellenőrzése minden csomópontról
Annak ellenőrzéséhez, hogy az SSH nyilvános kulcsát minden csomópontra másolta-e, használja az ssh
egyes csomópontok parancsát. Ha helyesen másolta a kulcsokat, a rendszer nem kéri a jelszót, és a kapcsolat sikeres.
Ebben a példában az első virtuális gép (ubuntu1
)második és harmadik csomópontjaihoz csatlakozunk. A fiók ismét <username>
ugyanaz lehet, mint a virtuális gép létrehozásakor az egyes csomópontokhoz konfigurált fiók.
ssh <username>@ubuntu2
ssh <username>@ubuntu3
Ismételje meg ezt a folyamatot mindhárom csomópontról, hogy az egyes csomópontok jelszavak nélkül kommunikálhassanak a többiekkel.
Névfeloldás konfigurálása
A névfeloldás a DNS használatával vagy az etc/hosts
egyes csomópontokon lévő fájl manuális szerkesztésével konfigurálható.
További információ a DNS-ről és az Active Directoryról: Csatlakozás AZ SQL Serverhez Linux-gazdagépen egy Active Directory-tartományhoz.
Fontos
Javasoljuk, hogy az előző példában használja a magánhálózati IP-címét . Ha ebben a konfigurációban a nyilvános IP-címet használja, a beállítás meghiúsul, és a virtuális gépet külső hálózatoknak teszi elérhetővé.
A példában használt virtuális gépek és IP-címük a következőképpen jelennek meg:
ubuntu1
: 10.0.0.85ubuntu2
: 10.0.0.86ubuntu3
: 10.0.0.87
Magas rendelkezésre állás engedélyezése
Az ssh használatával csatlakozzon a 3 virtuális géphez, és miután csatlakozott, futtassa az alábbi parancsokat a magas rendelkezésre állás engedélyezéséhez.
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
Pacemaker-fürt telepítése és konfigurálása
A Pacemaker-fürt konfigurálásának első lépéseihez telepítenie kell a szükséges csomagokat és erőforrás-ügynököket. Futtassa az alábbi parancsokat az egyes virtuális gépeken:
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents csync2 python3-azure
Most hozza létre a hitelesítési kulcsot az elsődleges kiszolgálón:
sudo corosync-keygen
Az authkey a helyszínen jön létre /etc/corosync/authkey
. Másolja az authkeyt a másodlagos kiszolgálókra ezen a helyen: /etc/corosync/authkey
sudo scp /etc/corosync/authkey username@ubuntu2:~
sudo scp /etc/corosync/authkey username@ubuntu3:~
Helyezze át a hitelesítéskulcsot a kezdőkönyvtárból a következőre /etc/corosync
: .
sudo mv authkey /etc/corosync/authkey
A fürt létrehozásához kövesse az alábbi parancsokat:
cd /etc/corosync/
sudo vi corosync.conf
Szerkessze a Corosync-fájlt a tartalom ábrázolásához az alábbiak szerint:
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
}
Másolja a corosync.conf
fájlt más csomópontokra a következőre /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/
Indítsa újra a Pacemakert és a Corosyncot, és erősítse meg az állapotot:
sudo systemctl restart pacemaker corosync
sudo crm status
A kimenet az alábbi példához hasonlóan néz ki:
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
Kerítésügynök konfigurálása
Konfigurálja a fürtön a kerítést. A kerítés a fürt sikertelen csomópontjainak elkülönítése. Újraindítja a meghibásodott csomópontot, lehetővé teszi, hogy lemenjön, alaphelyzetbe állítsa, és térjen vissza, és csatlakozzon újra a fürthöz.
A kerítés konfigurálásához hajtsa végre a következő műveleteket:
- Új alkalmazás regisztrálása a Microsoft Entra-azonosítóban, és titkos kód létrehozása
- Egyéni szerepkör létrehozása json-fájlból a PowerShell/CLI-ben
- A szerepkör és az alkalmazás hozzárendelése a fürt virtuális gépeihez
- A kerítésügynök tulajdonságainak beállítása
Új alkalmazás regisztrálása a Microsoft Entra-azonosítóban, és titkos kód létrehozása
- Nyissa meg a Microsoft Entra-azonosítót a portálon, és jegyezze fel a bérlőazonosítót.
- Válassza az Alkalmazásregisztrációk lehetőséget a bal oldali menüben, majd válassza az Új regisztráció lehetőséget.
- Adjon meg egy nevet , majd válassza a Fiókok lehetőséget csak ebben a szervezeti címtárban.
- Alkalmazástípus esetén válassza a Web lehetőséget, írja be
http://localhost
bejelentkezési URL-címként, majd válassza a Regisztráció lehetőséget. - A bal oldali menüben válassza a Tanúsítványok és titkos kódok lehetőséget, majd az Új ügyfélkód lehetőséget.
- Adjon meg egy leírást, és válasszon ki egy lejárati időszakot.
- Jegyezze fel a titkos kód értékét, amelyet a rendszer a következő jelszóként és titkos azonosítóként használ, és a következő felhasználónévként használja.
- Válassza az "Áttekintés" lehetőséget, és jegyezze fel az alkalmazásazonosítót. A rendszer a következő bejelentkezésként használja.
Hozzon létre egy JSON-fájlt, fence-agent-role.json
és adja hozzá a következőt (az előfizetés azonosítójának hozzáadásával):
{
"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"
]
}
Egyéni szerepkör létrehozása JSON-fájlból a PowerShell/CLI-ben
az role definition create --role-definition fence-agent-role.json
A szerepkör és az alkalmazás hozzárendelése a fürt virtuális gépeihez
- A fürtben lévő összes virtuális gép esetében válassza az oldalmenü Hozzáférés-vezérlés (IAM) elemét.
- Válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget (használja a klasszikus felületet).
- Válassza ki a korábban létrehozott szerepkört.
- A Kiválasztás listában adja meg a korábban létrehozott alkalmazás nevét.
Most már létrehozhatjuk a kerítésügynök-erőforrást a korábbi értékek és az előfizetés azonosítója alapján:
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
A kerítésügynök tulajdonságainak beállítása
Futtassa a következő parancsokat a kerítésügynök tulajdonságainak beállításához:
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
És erősítse meg a fürt állapotát:
sudo crm status
A kimenet az alábbi példához hasonlóan néz ki:
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
Az SQL Server és az mssql-tools telepítése
Az SQL Server telepítéséhez a következő parancsok használhatók:
Importálja a nyilvános adattár GPG-kulcsait:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Regisztrálja az Ubuntu-adattárat:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
Futtassa a következő parancsokat az SQL Server telepítéséhez:
sudo apt-get update sudo apt-get install -y mssql-server
Miután a csomag telepítése befejeződött, futtassa
mssql-conf setup
és kövesse az utasításokat az SA jelszavának beállításához, és válassza ki a kiadást. Emlékeztetőül, a következő kiadások ingyenesen licencelve vannak: Evaluation, Developer és Express.sudo /opt/mssql/bin/mssql-conf setup
A konfiguráció befejezése után ellenőrizze, hogy a szolgáltatás fut-e:
systemctl status mssql-server --no-pager
Az SQL Server parancssori eszközeinek telepítése
Adatbázis létrehozásához olyan eszközzel kell csatlakoznia, amely képes Transact-SQL-utasításokat futtatni az SQL Serveren. Az alábbi lépésekben telepítse az SQL Server parancssori eszközeit: sqlcmd és bcp.
Az mssql-tools18 Ubuntu-ra való telepítéséhez kövesse az alábbi lépéseket.
Megjegyzés:
- Az Ubuntu 18.04 az SQL Server 2019 CU 3-tól kezdve támogatott.
- Az Ubuntu 20.04 az SQL Server 2019 CU 10-től kezdve támogatott.
- Az Ubuntu 22.04 az SQL Server 2022 CU 10-től kezdve támogatott.
Adja meg a superuser módot.
sudo su
Importálja a nyilvános adattár GPG-kulcsait.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Regisztrálja a Microsoft Ubuntu-adattárat.
Az Ubuntu 22.04-ben használja a következő parancsot:
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
Az Ubuntu 20.04-ben használja a következő parancsot:
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
Az Ubuntu 18.04-ben használja a következő parancsot:
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
Az Ubuntu 16.04-ben használja a következő parancsot:
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
Kilépés a superuser módból.
exit
Frissítse a források listáját, és futtassa a telepítési parancsot a unixODBC fejlesztői csomaggal.
sudo apt-get update sudo apt-get install mssql-tools18 unixodbc-dev
Megjegyzés:
Az mssql-tools legújabb verziójára való frissítéshez futtassa a következő parancsokat:
sudo apt-get update sudo apt-get install mssql-tools18
Nem kötelező: Adja hozzá
/opt/mssql-tools18/bin/
aPATH
környezeti változóhoz egy bash-rendszerhéjban.Ahhoz, hogy az sqlcmd és a bcp elérhető legyen a bash rendszerhéjból a bejelentkezési munkamenetekhez, módosítsa a
PATH
fájlt a~/.bash_profile
következő paranccsal:echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
Ahhoz, hogy az sqlcmd és a bcp elérhető legyen a Bash-rendszerhéjból interaktív/nem bejelentkezési munkamenetekhez, módosítsa a
PATH
fájlban a~/.bashrc
következő paranccsal:echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc
Az SQL Server magas rendelkezésre állású ügynökének telepítése
Futtassa az alábbi parancsot az összes csomóponton az SQL Server magas rendelkezésre állású ügynökcsomagjának telepítéséhez:
sudo apt-get install mssql-server-ha
Rendelkezésre állási csoport konfigurálása
Az alábbi lépésekkel konfigurálhat egy SQL Server Always On rendelkezésre állási csoportot a virtuális gépekhez. További információ: Sql Server Always On rendelkezésre állási csoportok konfigurálása magas rendelkezésre álláshoz Linuxon.
Rendelkezésre állási csoportok engedélyezése és az SQL Server újraindítása
Engedélyezze a rendelkezésre állási csoportokat minden olyan csomóponton, amely SQL Server-példányt üzemeltet. Ezután indítsa újra a mssql-server
szolgáltatást. Futtassa az alábbi parancsokat minden csomóponton:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
Tanúsítvány létrehozása
A Microsoft nem támogatja az Active Directory-hitelesítést az AG-végponton. Ezért az AG-végpont titkosításához tanúsítványt kell használnia.
Csatlakozás az összes csomóponthoz az SQL Server Management Studio (SSMS) vagy az sqlcmd használatával. Futtassa a következő parancsokat egy AlwaysOn_health munkamenet engedélyezéséhez és egy főkulcs létrehozásához:
Fontos
Ha távolról csatlakozik az SQL Server-példányhoz, meg kell nyitnia az 1433-at a tűzfalon. Emellett engedélyeznie kell a bejövő kapcsolatokat az 1433-at az NSG-ben minden egyes virtuális géphez. További információ: Biztonsági szabály létrehozása bejövő biztonsági szabály létrehozásához.
- Cserélje le a
<MasterKeyPassword>
jelszót a saját jelszavára.
ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE = ON); GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<MasterKeyPassword>'; GO
- Cserélje le a
Csatlakozás az elsődleges replikához SSMS vagy sqlcmd használatával. Az alábbi parancsok létrehoznak egy tanúsítványt
/var/opt/mssql/data/dbm_certificate.cer
és egy titkos kulcsotvar/opt/mssql/data/dbm_certificate.pvk
az elsődleges SQL Server-replikán:- Cserélje le a
<PrivateKeyPassword>
jelszót a saját jelszavára.
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
- Cserélje le a
A parancs futtatásával lépjen ki az exit
sqlcmd munkamenetből, és térjen vissza az SSH-munkamenethez.
Másolja a tanúsítványt a másodlagos replikákra, és hozza létre a tanúsítványokat a kiszolgálón
Másolja a két létrehozott fájlt ugyanarra a helyre az összes olyan kiszolgálón, amely rendelkezésre állási replikákat fog üzemeltetni.
Az elsődleges kiszolgálón futtassa a következő
scp
parancsot a tanúsítvány célkiszolgálókra másolásához:- Cserélje le és
sles2
írja be<username>
a használt felhasználónevet és cél virtuális gép nevét. - Futtassa ezt a parancsot az összes másodlagos replikához.
Megjegyzés:
Nem kell futtatnia
sudo -i
, ami megadja a gyökérkörnyezetet. A parancsot azsudo
egyes parancsok előtt futtathatja.# The below command allows you to run commands in the root environment sudo -i
scp /var/opt/mssql/data/dbm_certificate.* <username>@sles2:/home/<username>
- Cserélje le és
Futtassa a következő parancsot a célkiszolgálón:
- Cserélje le
<username>
a felhasználónevet. - A
mv
parancs áthelyezi a fájlokat vagy könyvtárat egyik helyről a másikra. - A
chown
parancs a fájlok, könyvtárak vagy hivatkozások tulajdonosának és csoportjának módosítására szolgál. - Futtassa ezeket a parancsokat az összes másodlagos replikához.
sudo -i mv /home/<username>/dbm_certificate.* /var/opt/mssql/data/ cd /var/opt/mssql/data chown mssql:mssql dbm_certificate.*
- Cserélje le
Az alábbi Transact-SQL-szkript létrehoz egy tanúsítványt az elsődleges SQL Server-replikán létrehozott biztonsági másolatból. Frissítse a szkriptet erős jelszavakkal. A visszafejtési jelszó ugyanaz a jelszó, amelyet az előző lépésben a .pvk fájl létrehozásához használt. A tanúsítvány létrehozásához futtassa a következő szkriptet az sqlcmd vagy az SSMS használatával az összes másodlagos kiszolgálón:
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
Az adatbázis tükrözési végpontjának létrehozása az összes replikán
Futtassa a következő szkriptet minden SQL Server-példányon sqlcmd vagy SSMS használatával:
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
A rendelkezésre állási csoport létrehozása
Csatlakozás az elsődleges replikát sqlcmd vagy SSMS használatával üzemeltető SQL Server-példányra. Futtassa a következő parancsot a rendelkezésre állási csoport létrehozásához:
- Cserélje le
ag1
a kívánt AG-névre. - Cserélje le a
ubuntu1
,ubuntu2
ésubuntu3
az értékeket a replikákat üzemeltető SQL Server-példányok nevére.
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
SQL Server-bejelentkezés létrehozása a Pacemakerhez
Minden SQL Server-példányon hozzon létre egy SQL Server-bejelentkezést a Pacemakerhez. Az alábbi Transact-SQL létrehoz egy bejelentkezést.
- Cserélje le
<password>
saját összetett jelszavára.
USE [master]
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
GO
ALTER SERVER ROLE [sysadmin]
ADD MEMBER [pacemakerLogin];
GO
Minden SQL Server-példányon mentse az SQL Server-bejelentkezéshez használt hitelesítő adatokat.
Hozza létre a fájlt:
sudo vi /var/opt/mssql/secrets/passwd
Adja hozzá a következő két sort a fájlhoz:
pacemakerLogin <password>
A vi szerkesztőből való kilépéshez először nyomja le az Esc billentyűt, majd írja be a parancsot
:wq
a fájl megírásához és a kilépéshez.A fájl csak a gyökér alapján legyen olvasható:
sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 400 /var/opt/mssql/secrets/passwd
Másodlagos replikák csatlakoztatása a rendelkezésre állási csoporthoz
A másodlagos replikákon futtassa a következő parancsokat az AG-hez való csatlakozáshoz:
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE; GO
Futtassa a következő Transact-SQL-szkriptet az elsődleges replikán és minden másodlagos replikán:
GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO pacemakerLogin; GO GRANT VIEW SERVER STATE TO pacemakerLogin; GO
A másodlagos replikák csatlakoztatása után az Always On High Availability csomópont kibontásával láthatja őket az SSMS Object Explorerben:
Adatbázis hozzáadása a rendelkezésre állási csoporthoz
Ez a szakasz az adatbázis rendelkezésre állási csoporthoz való hozzáadásáról szóló cikket követi.
Ebben a lépésben a következő Transact-SQL-parancsokat használja a rendszer. Futtassa az alábbi parancsokat az elsődleges replikán:
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
Ellenőrizze, hogy az adatbázis a másodlagos kiszolgálókon van-e létrehozva
Minden másodlagos SQL Server-replikán futtassa a következő lekérdezést annak megtekintéséhez, hogy a db1 adatbázis létrejött-e, és SZINKRONIZÁLT állapotban van-e:
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
Ha a synchronization_state_desc
listák szinkronizálva db1
vannak, az azt jelenti, hogy a replikák szinkronizálva vannak. A másodpéldányok az elsődleges replikában jelennek meg db1
.
Rendelkezésre állási csoport erőforrásainak létrehozása a Pacemaker-fürtben
A rendelkezésre állási csoport erőforrásának a Pacemakerben való létrehozásához futtassa a következő parancsokat:
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
Ez a fenti parancs létrehozza a ag1_cluster erőforrást, vagyis a rendelkezésre állási csoport erőforrását. Ezután létrehozza az ms-ag1 erőforrást (elsődleges/másodlagos erőforrás a Pacemakerben, majd hozzáadja az AG-erőforrást. Ez biztosítja, hogy az AG-erőforrás a fürt mindhárom csomópontján futjon, de csak az egyik csomópont elsődleges.)
Az AG-csoport erőforrásának megtekintése és a fürt állapotának ellenőrzése:
sudo crm resource status ms-ag1
sudo crm status
A kimenet az alábbi példához hasonlóan néz ki:
resource ms-ag1 is running on: ubuntu1 Master
resource ms-ag1 is running on: ubuntu3
resource ms-ag1 is running on: ubuntu2
A kimenet az alábbi példához hasonlóan néz ki. A helymeghatározási és előléptetési korlátozások hozzáadásához tekintse meg az oktatóanyagot: Rendelkezésre állási csoport figyelőjének konfigurálása Linux rendszerű virtuális gépeken.
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
Futtassa a következő parancsot egy csoporterőforrás létrehozásához, hogy a figyelőre és a terheléselosztóra alkalmazott áthelyezési és előléptetési korlátozások ne legyenek külön-külön alkalmazva.
sudo crm configure group virtualip-group azure-load-balancer virtualip
A kimenet az crm status
alábbi példához hasonlóan fog kinézni:
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
Következő lépés
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: