在 Azure CentOS VM 中配置 SQL Server 2019 AG - (下)
程序员文章站
2022-06-27 20:46:58
配置 Internal Load Balancer 创建load balancer 我的三台VM都位于sqldemoVNET/linuxsubnet子网,AG Listener之前在SQL中配置是172.17.2.7,所以这里frontedn ip也要一样。 创建LB health probe he ......
-
配置 internal load balancer
-
创建load balancer
我的三台vm都位于sqldemovnet/linuxsubnet子网,ag listener之前在sql中配置是172.17.2.7,所以这里frontedn 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
-
创建lb health probe
health probe是lb用于定时检查后端vm是否健康,这里定义使用59999作为vm的检查时的连接端口。
az network lb probe create \ --resource-group sql-demo-rg \ --lb-name sql19aglb \ --name sql19lbprobe \ --protocol tcp \ --port 59999
-
创建lb rule
rule定义了前端ip的流量如何分布到后端的服务器和端口。floating-ip要指定为true
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
-
修改三台vm的网卡配置,将lb应用到这些网卡
# 找出相关的网卡的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
-
在pacemaker群集中配置lb资源
# 创建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
-
创建ag listener
-
将listener ip加到每个节点的hosts文件
echo "172.17.2.7 sql19-agl" >> /etc/hosts
-
在主副本实例上创建listener
alter availability group [ag1] add listener 'sql19-agl' ( with ip(('172.17.2.17' ,'255.255.255.0')) ,port = 1433 ); go
配置完成,查看群集状态:
[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
-
测试failover
使用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
-
总结
- sql 2019在azure vm上的pacemaker群集,2020年才开始有fencing agent支持的
- 这是我在测试一个方案时的总结和记录,不是一篇小白文,但不妨碍做为参考。
- 本文内容只代表个人观点,不代表任何公司和组织的观点
上一篇: Django ORM 查询表中某列字段值
下一篇: 前端知识大全-复习汇总目录