【腾讯云的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 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构开发

为什么微服务一定要有网关?

2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

960
来自专栏杨建荣的学习笔记

关于数据库无法登录的问题反思(r6笔记第49天)

昨天接到了同事的一个电话,说有一个数据库无法访问了,希望能够让我来看看,赶紧连过去,发现错误还是一个看似很简单的ora错误。 $ sqlplus / as sy...

2665
来自专栏IT大咖说

你只知大数据的便利,却不知漏洞——hadoop安全完整解析

内容来源:2017 年 07 月 29 日,威客安全技术合伙人安琪在“CDAS 2017 中国数据分析师行业峰会”进行《大数据平台基础架构hadoop安全分析》...

1454
来自专栏ThoughtWorks

如果有10000台机器,你想怎么玩?(一)概述 | TW洞见

今日洞见 文章作者来自ThoughtWorks:高清华。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个...

2676
来自专栏恰同学骚年

NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

  随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了...

802
来自专栏about云

监控hadoop生态系统企业应该用什么监控软件

问题导读 1.文中哪些监控软件有邮件通知功能? 2.监控粒度更细如何自定义实现? 3.哪些监控软件可以自定义? 企业转型大数据,随着发展,可能会遇到很多的问...

3377
来自专栏一名叫大蕉的程序员

合格的配置中心应有的素养No.76

最近在看配置中心的一些设计,好像基本都是五花八门,主要看的是还是携程的 Apollo 这个开源的配置中心项目。一直以来都觉得配置中心很重要,因为这对于灰度发布,...

1728
来自专栏Netkiller

IDC机房入住与迁移

节选自 《Netkiller 系列手札》 5.3. 机房迁移 5.3.1. 拓扑确立 5.3.2. 存储规划 5.3.2.1. RAID Disk Gro...

3054
来自专栏架构师小秘圈

大型网站图片服务器架构的演进

作者:丁浪,非著名架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。 声明:版权归丁浪...

3924
来自专栏CSDN技术头条

运用Kubernetes进行分布式负载测试

本文为CSDN原创编译文章,禁止转载。 负载测试是开发后台基础架构的重要一环,它不但能够演示系统在真实需求面前的性能表现,还可以通过模拟用户与设备行为,在应用程...

1986

扫码关注云+社区