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

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

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

但是需要强调的是,本身 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 ),分别是:

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:

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

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个:

自此自动巡检完成:

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

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

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

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

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

编辑于

我来说两句

2 条评论
登录 后参与评论

相关文章

来自专栏zingpLiu

Linux内存信息查看——free命令

  free 命令可以显示系统已用和空闲的内存情况。包括物理内存、交互区内存(swap)和内核缓冲区内存(buffer)。共享内存将被忽略。在Linux系统监控...

612
来自专栏数据和云

Oracle 12.2中那些温暖人心的特性-之二

在OOW 2015大会上,Oracle已经发布了12.2的Beta版本,其中的很多亮点新特性引人瞩目,包括在IMO和Multitenant方面,以及在Shard...

2675
来自专栏linux驱动个人学习

硬盘写到一半时断电,文件系统里会发生什么?

知乎问题: 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗? 更进一步的, 文件系统如何保证事务性, 会不...

2654
来自专栏jeremy的技术点滴

初识ceph

2895
来自专栏大魏分享(微信公众号:david-share)

Calico在Openshift上的工作原理与配置步骤:第一篇

由于篇幅和时间有限,本文还会有第二篇。 一、Openshift支持的各种SDN CNI Openshift Container Platform(简称OCP),...

3723
来自专栏文渊之博

关于tempdb的一些注意事项

    由于数据库的文件的位置对于I/O性能如此重要,以至于在创建主数据文件的文职时,需要考虑tempdb性能对系统性的影响,因为它是最动态的数据库,速度还需要...

1826
来自专栏数据和云

Oracle公共云中的MySQL InnoDB集群(2)

在本系列的第一部分 Oracle公共云中的MySQL InnoDB集群,我们学习了如何使用Oracle Cloud配置InnoDB集群。 本文我们将了解如何以及...

3164
来自专栏我和PYTHON有个约会

30.企业级开发进阶2:网络编程

网络编程部分开始,要求对内容的宏观理解的东西更加多了,简单梳理总结一下,希望大家多提意见一起完善。

490
来自专栏容器云生态

基于软件的方式实现RAID(冗余磁盘阵列)技术

        在摘要部分已经对raid进行了简单的介绍,而在实际生产中主要用的便是软件RAID和硬件RAID,同时由于硬件RAID的价钱比较贵,因而,越来越多...

2486
来自专栏北京马哥教育

这十项 Linux 常识,作为 Linux运维的你真的懂了吗?

GNU计划(又称革奴计划),是由Richard Stallman(理查德·斯托曼)在1983年9月27日公开发起的自由软件集体协作计划。它的目标是创建一套完全自...

650

扫码关注云+社区