在AzureCentOSVM中配置SQLServer2019AG(下)

database

  • 配置 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. 本文内容只代表个人观点,不代表任何公司和组织的观点

以上是 在AzureCentOSVM中配置SQLServer2019AG(下) 的全部内容, 来源链接: utcz.com/z/533392.html

回到顶部