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. 本文内容只代表个人观点,不代表任何公司和组织的观点
  • 相关阅读:
    leetcode 576. Out of Boundary Paths 、688. Knight Probability in Chessboard
    leetcode 129. Sum Root to Leaf Numbers
    leetcode 542. 01 Matrix 、663. Walls and Gates(lintcode) 、773. Sliding Puzzle 、803. Shortest Distance from All Buildings
    leetcode 402. Remove K Digits 、321. Create Maximum Number
    leetcode 139. Word Break 、140. Word Break II
    leetcode 329. Longest Increasing Path in a Matrix
    leetcode 334. Increasing Triplet Subsequence
    leetcode 403. Frog Jump
    android中webView加载H5,JS不能调用问题的解决
    通过nginx中转获取不到IP的问题解决
  • 原文地址:https://www.cnblogs.com/Joe-T/p/12803133.html
Copyright © 2011-2022 走看看