首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【腾讯云的1001种玩法】在腾讯云创建您的 SQL Server : HA 机准备篇

【腾讯云的1001种玩法】在腾讯云创建您的 SQL Server : HA 机准备篇

原创
作者头像
李斯达
修改2017-10-13 19:28:27
5K2
修改2017-10-13 19:28:27
举报
文章被收录于专栏:VMCloudVMCloud

目前 CLB 产品是基于应用层面的负载均衡,所以要实现业务感知并自动切换 IP 还得使用弹性网卡这一个特性来进行支持,我们需要一些特殊的手段来支持(当然后续弹性网卡特性会陆续支持)。

由于之前的文章都传递了一个错误的观念就是使用 CLB 作为高可用群集的 VIP,这里正式给大家道歉,当然这是属于我个人名义发布的博客,在做个人实验研究出错是时长的事儿,借助这个事儿也发现 VPC 弹性网卡 IP 不支持 Windows 切换这事儿,并且跟对应的 QCloud PM 好好聊了一个下午,最终使需求落地,将在近期内进行更改,Okay,我们先来看看在原有架构上增加这个 HA 机后到底实现了什么,如下图所示:

[1492420937610_8533_1492420937956.png]
[1492420937610_8533_1492420937956.png]

但是需要强调的是,本身 SQL AlwayOn Cluster 就属于高可用群集,其检测机制非常完善,可以实现无感知迁移:

1、由于加了 HA 机,判断阈值为1s 1次,所以低于1000ms 级别的故障还是有有所影响,那么做 AlwayOn 群集的高可用作用就会大打折扣。

2、由于加了前端 HA 机,HA 机作为逻辑判断的机器节点,理论上并不会有很大的故障几率,但是仅仅是单一的 CVM 作为支撑,这里存在单点故障风险。

所以,综上所述,若要将此文所涉及的架构用于生产环境,还需要考虑将脚本扩展及考虑容灾,其次目前该脚本只支持两个节点,所以>2节点的环境需要定制(当然对于有 Python 运维环境的朋友这个改造几乎轻而易举)。

下面让我们来看看如何实现吧:

1、 首先我们要准备好几个脚本(已上传到 Github ,地址为: https://github.com/StatLee/qcloud-windows-ip-ha-auto-migrate ),分别是:

[1492420998003_4207_1492420998159.png]
[1492420998003_4207_1492420998159.png]

2、 先根据官网指引给单独的HA机器(槽点1)部署好 ADK 环境(建议使用 Python 2.6):https://www.qcloud.com/document/developer-resource/494/7244

3、 使用前请记得修改公共加密(Display、Migrate 两个脚本都需要修改),公共加密方式可参考https://www.qcloud.com/document/api/213/6984:

[1492421052004_7510_1492421052149.png]
[1492421052004_7510_1492421052149.png]

4、 VMCloud-Display-HAIP 是用来判断当前弹性 IP 在哪个网卡上,可以传参数进行测试,方法:

[1492421071172_2508_1492421071333.png]
[1492421071172_2508_1492421071333.png]

5、 而 VMCloud-Migrate-HAIP 是用来执行迁移 IP ,而需要改动的就是 VMCloud-Change-HAIP :

以下为脚本内容:

def GetCVMInstance(insid):
    try:
        gvminrs=os.popen('python2.6 VMCloud-Display-HAIP.py ' + insid).read().strip()
        if gvminrs.find("这里为SQL群集IP") == -1:
            return 'SQL01'
            os.system('echo' + insid + 'SQL01 Successful >> /var/log/vmclog.log')
        else:
            return 'SQL02'
            os.system('echo' + insid + 'SQL02 Successful >> /var/log/vmclog.log')
    except:
        print 'GetError'
        os.system('echo' + insid + 'Connect Error >> /var/log/vmclog.log')
        return 'ERR'
if __name__ == '__main__':
    iprs=NetCheck('这里为SQL群集IP ')
    if iprs == 'DOWN':
        nodename=GetCVMInstance('这里为第一个节点网卡实例ID')
        if nodename == 'SQL01':
            mvto2a=os.system('python2.6 VMCloud-Migrate-HAIP.py 对应VPCID SQL群集IP 第一个节点网卡实例ID第二个节点网卡实例ID ')
            os.system('echo ?~G???°SQL02 ?~P?~_ >> /var/log/vmclog.log')
        else:
            mvto2b=os.system('python2.6 VMCloud-Migrate-HAIP.py对应VPCID SQL群集IP 第二个节点网卡实例ID第一个节点网卡实例ID ')
            os.system('echo ?~G???°SQL01 ?~P?~_ >> /var/log/vmclog.log')

#以下为AlwayONIP检测需要设置的:
    iportrs=NetPortCheck('AlwayONIP',数据库端口)
    print iportrs
    if iportrs == 'NotOk':
        nodename=GetCVMInstance('这里为第一个节点网卡实例ID ')
        if nodename == 'SQL01':
            mvto2a=os.system('python2.6 VMCloud-Migrate-HAIP.py对应VPCID SQL群集IP 第一个节点网卡实例ID第二个节点网卡实例ID ')
            os.system('echo ?H~G?M??H°SQL02 ?H~P?J~_ >> /var/log/vmclog.log')
        else:
            mvto2b=os.system('python2.6 VMCloud-Migrate-HAIP.py对应VPCID SQL群集IP 第二个节点网卡实例ID第一个节点网卡实例ID ')
            os.system('echo ?H~G?M??H°SQL01 ?H~P?J~_ >> /var/log/vmclog.log')
						

6、该脚本为第一版,也是抛砖引玉,考虑到 VPC 弹性网卡自动切换机制为公有云必然实现之路,这里的脚本只作为过渡用,目前仅支持2个节点(如需要多个节点判断可以自行修改使用冒泡排序),设置完成后,需要在 HA 服务器上运行一个常驻脚本来调用两个 PY 脚本来进行轮训,实测1S 切换一次,丢包低于2个:

[1492421144588_746_1492421144734.png]
[1492421144588_746_1492421144734.png]

自此自动巡检完成:

[1492421199403_4437_1492421199554.png]
[1492421199403_4437_1492421199554.png]

切换 AlwayON 群集 IP 丢包测试,切换4次,丢包三个:

[1492421219006_2342_1492421219154.png]
[1492421219006_2342_1492421219154.png]

切换群集 IP 丢包测试,切换1次,丢包零个:

[1492421240855_7411_1492421241098.png]
[1492421240855_7411_1492421241098.png]

7、 使用 SSMS 连接 AlwayOn 实例完成,检查状态:

[1492421275011_2313_1492421275223.png]
[1492421275011_2313_1492421275223.png]

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档