zoukankan      html  css  js  c++  java
  • 在 Azure CentOS VM 中配置 SQL Server 2019 AG

    • 配置 Internal Load Balancer

      大多数公有云上不支持直接配置群集资源的floating IP,在Azure中则需要使用Load Balancer做为的侦听器的IP,并且failover 时,VIP资源能够在正确的主副本上启动。
      Internal Load Balancer只允许内网访问AG的侦听器。

    • 创建load balancer

    我的三台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
    
    • 创建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. 本文内容只代表个人观点,不代表任何公司和组织的观点
  • 相关阅读:
    正则表达式在行首添加指定内容
    linux之find命令详解
    一次安装rpcbind失败引发的思考
    配置linux实现路由功能
    chkconfig命令详解
    1225 数数字
    蛇形填数 ------- 模拟水题
    开灯问题---------简单模拟
    单源最短路径
    图的表示方式
  • 原文地址:https://www.cnblogs.com/Joe-T/p/12803133.html
Copyright © 2011-2022 走看看