当前位置: 移动技术网 > IT编程>数据库>MSSQL > 在 Azure CentOS VM 中配置 SQL Server 2019 AG - (下)

在 Azure CentOS VM 中配置 SQL Server 2019 AG - (下)

2020年04月30日  | 移动技术网IT编程  | 我要评论

vista界面,漫画大乱斗私服,腹朜大义灭亲

  • 配置 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

  • 总结

  1. sql 2019在azure vm上的pacemaker群集,2020年才开始有fencing agent支持的
  2. 这是我在测试一个方案时的总结和记录,不是一篇小白文,但不妨碍做为参考。
  3. 本文内容只代表个人观点,不代表任何公司和组织的观点

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网