個人三臺VM都位於sqldemoVNET/linuxsubnet子網,AG Listener以前在SQL中配置是172.17.2.7,因此這裏frontend ip也要同樣。用於客戶端鏈接。前端
az network lb create \ --resource-group SQL-DEMO-RG \ --name sql19agLB \ --frontend-ip-name sql19agListener \ --private-ip-address 172.17.2.7 \ --backend-pool-name sql19aglbBackend \ --vnet-name sqldemoVNET \ --subnet linuxsubnet \ --sku Standard
health probe是LB用於定時檢查後端VM是否健康,這裏定義使用59999做爲VM的檢查時的鏈接端口。node
az network lb probe create \ --resource-group SQL-DEMO-RG \ --lb-name sql19agLB \ --name sql19lbProbe \ --protocol tcp \ --port 59999
rule定義了前端IP的流量如何分佈到後端的服務器和端口。floating-ip要指定爲truelinux
az network lb rule create \ --resource-group SQL-DEMO-RG \ --lb-name sql19agLB \ --name sql19agRule \ --protocol tcp \ --frontend-port 1433 \ --backend-port 1433 \ --frontend-ip-name sql19agListener \ --backend-pool-name sql19aglbBackend \ --probe-name sql19lbProbe \ --floating-ip true
# 找出相關的網卡的IP配置信息 az network nic list -g SQL-DEMO-RG # 將三臺VM的網卡加到LB的backend pool中,以SQL19N1爲例 az network nic ip-config address-pool add -g SQL-DEMO-RG \ --address-pool sql19aglbBackend --nic-name sql19n1152 \ --ip-config-name ipconfig1 --lb-name sql19agLB
# 建立LB資源,59999是前面LB中定義的probe port pcs resource create azure_load_balancer azure-lb port=59999 # 建立一個資源組,將vip和LB資源放入這個組 pcs resource group add virtualip_group azure_load_balancer virtualip # 建立colocation約束,保證LB資源和AG主副本要運行在同一個node pcs constraint colocation add azure_load_balancer agcluster-master INFINITY with-rsc-role=Master # 建立order約束,保證AG資源要先於LB資源啓動 pcs constraint order promote agcluster-master then start azure_load_balancer # 查看約束 pcs constraint list --full
echo "172.17.2.7 SQL19-AGL" >> /etc/hosts
ALTER AVAILABILITY GROUP [ag1] ADD LISTENER 'SQL19-AGL' ( WITH IP(('172.17.2.17' ,'255.255.255.0')) ,PORT = 1433 ); GO
配置完成,查看羣集狀態:sql
[root@SQL19N3 ~]# pcs status Cluster name: agcluster Stack: corosync Current DC: SQL19N1 (version 1.1.20-5.el7_7.2-3c4c782f70) - partition with quorum Last updated: Wed Apr 29 08:08:27 2020 Last change: Wed Apr 29 08:01:45 2020 by root via cibadmin on SQL19N3 3 nodes configured 6 resources configured Online: [ SQL19N1 SQL19N2 SQL19N3 ] Full list of resources: rsc_st_azure (stonith:fence_azure_arm): Started SQL19N1 Master/Slave Set: agcluster-master [agcluster] Masters: [ SQL19N3 ] Slaves: [ SQL19N1 SQL19N2 ] Resource Group: virtualip_group azure_load_balancer (ocf::heartbeat:azure-lb): Started SQL19N3 virtualip (ocf::heartbeat:IPaddr2): Started SQL19N3 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
使用SQLCMD鏈接Listener,查看當前的@@servername後端
sqlcmd -SSQL19-AGL -Q"select @@servername" -Usa -p
手動failover以後,再查看@@servername服務器
# 手動failover pcs resource move agcluster-master SQL19N1 --master # 刪除自動生成的constraint pcs constraint remove cli-prefer-agcluster-master sqlcmd -SSQL19-AGL -Q"select @@servername" -Usa -p