一.本文所涉及的内容(Contents)

  1. 本文所涉及的内容(Contents)
  2. 背景(Contexts)
  3. 架构原理(Architecture)
  4. 测试环境(Environment)
  5. 安装Moebius(Install)
  6. Moebius测试(Testing)
    1. 负载均衡测试(Load Balancing Testing)
    2. 高可用性测试(Failover Testing)
    3. 数据安全性测试(Security Testing)
  7. 总结(Summary)

二.背景(Contexts)

  前几天在SQL Server MVP宋大侠(宋沄剑)的一篇文章"数据库集群技术漫谈”中看到了格瑞趋势在SQL Server上的负载均衡产品Moebius,搞数据库的都知道:在Oracle上有RAC,MySQL也有对应的方案(可参考:MySQL搭建Amoeba系列),而SQL Server上直到SQL Server 2012版本的AlwaysOn到来,微软都没有提供一个负载均衡方案,我从宋大侠那里找来一个Moebius的测试版本进行一下测试,下面是我测试的过程。

三.架构原理(Architecture)

(Figure1:Moebius for SQL Server逻辑架构图)

四.测试环境(Environment)

    操作系统:Windows Server 2008 R2

    数据库版本:SQL Server 2012

    服务器A:10.0.0.1

    服务器B:10.0.0.2

    虚拟IP:10.0.0.15

五.安装Moebius(Install)

  Moebius的安装非常简便,在装有SQL Server引擎的服务器上直接点击安装包进行安装,安装过程中一直下一步即可。在此就不再多说。

  在此交待一下我的测试环境,是两台虚拟机,IP分别为10.0.0.1和10.0.0.2,操作系统和SQL Server的版本分别为Windows Server 2012和SQL Server 2012。安装完成后在Management Studio管理工具中右击数据库,在弹出菜单中即可找到Moebius的菜单,如Figure2所示。

(Figure2:Moebius for SQL Server 2012)

  安装完成后,打开配置管理器界面,如Figure3所示。

(Figure3:Moebius for SQL Server 2012)

  分别将10.0.0.1和10.0.0.2这两台服务器加入集群,这里可以注意到,Moebius是以数据库为粒度的,相比实例而言,该种粒度会更加灵活,如Figure4所示。

(Figure4:设置数据库)

  将10.0.0.1和10.0.0.2两台服务器的数据库分别加入集群后,建立虚拟IP和端口,建立的虚拟IP为10.0.0.15,端口为5000,之后所有前端应用的连接就可以通过该虚拟IP进行了,完全不需要理会后端的架构,可以让前端与后端解耦,如Figure5和Figure6所示。

(Figure5:设置虚拟IP)

(Figure6:设置连接属性)

  建立完成后,集群就配置好了,效果如Figure7所示。

(Figure7:Moebius for SQL Server 2012)

六.Moebius测试(Testing)

(一).负载均衡测试(Load Balancing Testing)

  集群的搭建完成后,就可以开始对集群进行测试。首先是负载均衡测试。负载均衡的测试办法是使用压力测试工具,然后分别查看两个实例的Profiler,根据我咨询宋沄剑的说法是,负载均衡的算法是默认根据两台服务器的过去一段时间采集的性能指标进行分析,优先将查询导到负载低的服务器中,但集群刚搭建的时候没有历史数据,则按照平均分配的原则。下面是我使用SQLQueryStress进行负载均衡测试的结果,如Figure8所示。我开了100个线程,每个线程循环10次,来进行一个非常简单的查询。

(Figure8:SQLQueryStress压力测试)

  得到的结果如Figure9、Figure10所示,从图可以看到:负载基本被平均分配到两台服务器(由于测试工具每个查询都会附上Set Statistics IO On和Time On,因此负载应该为100个线程*10次循环*2)。

(Figure9:Profiler跟踪信息)

(Figure10:Profiler跟踪信息)

  由Figure9、Figure10大概可以看出:负载基本被平均分配到集群中的两台服务器中。

(二).高可用性测试(Failover Testing)

  接下来就是测试高可用性。高可用的测试我主要集中于故障转移切换的速度。首先,我开100个线程,每个线程循环20次,在集群上运行负载均衡,如Figure11所示。

(Figure11:SQLQueryStress)

  Figure11大概执行了20秒,此时我再次执行,并在执行过程中,强制关闭集群中10.0.0.1的SQL Server服务,运行结果如Figure12所示。

(Figure12:SQLQueryStress)

  我们看到,已经发送到到10.0.0.1服务器的部分事务给前端应用程序提示失败并回滚,除去停止服务所花的时间,以及所有的查询由10.0.0.1和10.0.0.2负载均衡执行,到仅仅只剩下10.0.0.2单独执行所花的时间,故障转移的切换时间在10秒以内,这个速度已经和SQL Server的镜像几乎持平了。

  此时,再来看Moebius集群管理器,就发现10.0.0.1服务器已经被集群脱机,且虚拟IP已经漂移到了10.0.0.2,如Figure13所示。

(Figure13:Moebius for SQL Server 2012)

(三).数据安全性测试(Security Testing)

  在Figure13描述的情况之后,此时只有10.0.0.2一台服务器处于活的状态 ,因为Moebius采用的是Share-Nothing架构,因此应该可以利用冗余数据防止数据丢失,从而保证了数据安全。此时我在10.0.0.2上新建立一张表Demo。并重新启动10.0.0.1的数据库服务,在Moebius中重新联机,如Figure14、Figure15所示。

(Figure14:Moebius for SQL Server 2012)

(Figure15:Moebius for SQL Server 2012)

  在联机的过程中,有一个恢复差异数据的步骤,联机完成后我们来看10.0.0.1数据库,Demo表已经咋恢复差异数据的时候被自动同步了,如Figure16所示。

(Figure16:Demo表)

七.小结(Summary)

  通过上面对Moebius的简单测试来看,Moebius的确实现了对SQL Server的负载均衡、高可用以及保证数据的安全。对于国内能够有公司实现类似Oracle RAC这样的负载均衡方案还是让我非常惊讶的,如果该结果在复杂的数据库环境下依然能够保持同样的结果,那么这个方案对于使用SQL Server的大公司来说价值就非常大了,有机会我再进行复杂一些的测试。

转载:http://www.cnblogs.com/gaizai/p/3644510.html

转载于:https://www.cnblogs.com/MuNet/p/5762020.html

SQL Server 负载均衡集群方案之Moebius相关推荐

  1. SQL Server 负载均衡集群(转)

    SQL Server 负载均衡集群 一个应用系统随着业务量的提高,以及访问量和数据流量的快速增长,各个核 心部分的处理性能和计算强度也相应增大,使得单一设备根本无法承担.在此情况下,如果扔掉现有设备去 ...

  2. Nginx+Tomcat 负载均衡集群方案

    2019独角兽企业重金招聘Python工程师标准>>> Nginx+Tomcat 负载均衡集群方案 该方案是我之前做过的一个项目生产应用的,目前运行良好,如何您生产使用,请先做好测试 ...

  3. IPVS-DR+keepalived实现高可用负载均衡集群

    IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...

  4. SQL Server 负载均衡方案集锦

    随着业务量的提高,以及访问量和数据流量的快速增长,网络各个核心部分的处理性能和计算强度也相应增大,使得单一设备根本无法承担.在此情况下,如果扔掉现有设备去做大量的硬件升级,必将造成现有资源的浪费,而且 ...

  5. keepalive+nginx实现负载均衡高可用_高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat...

    前言:初期应用较小,一般以单机部署为主,即可满足业务的需求,随着业务的不断扩大,单机部署的模式无法承载这么大的业务量,需要进行服务集群化的部署,本文主要介绍服务器Tomcat多实例部署,搭载Keepa ...

  6. 汇总-13台虚拟机搭建一个高可用负载均衡集群架构

    要求 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,具体需求如下. 设计你认为合理的架构,用visio把架构图画出来 搭建lnmp.tomcat+jdk环境 三个站点分别为:dis ...

  7. Nginx负载均衡集群介绍

    第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行 ...

  8. 青蛙学Linux—高性能负载均衡集群软件LVS

    LVS,即Linux Virtual Server的简写,是目前非常流行的一款实现负载均衡集群的软件.该项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.LVS官网http: ...

  9. Keepalived高可用集群来实现web服务器负载均衡集群

    Keepalived高可用集群来实现web服务器负载均衡集群 一.Keepalived的介绍 Keepalived是一个提供HA重要的底层工具,最早期的作用是为ipvs提供HA功能的,还是一个可以提供 ...

  10. 超详细!一文带你了解 LVS 负载均衡集群!

    作者 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 前言 如今,在各种互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求也越来越高,单台服务 ...

最新文章

  1. linux 服务搜索顺序文件 /etc/nsswitch.conf 简介
  2. mybatis中${}和#{}的区别
  3. 题库练习2(随机数去重排序、分割字符串、进制转换)
  4. 目前最常用的计算机机箱类型为_常用的计算机设备
  5. HDU 2647 拓扑排序
  6. 流程流转相关业务与流转的分离
  7. C# 中如何一次 catch 多个异常?
  8. 【Android进阶】使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果...
  9. HIVE 命令行操作和参数指引
  10. 信号驱动IO异步IO的对比理解刨析, epoll地ET,LT
  11. PASCAL VOC 2012
  12. python 菜鸟联盟-菜鸟联盟python
  13. iOS 调用系统铃声及震动
  14. 孙悟空的师傅的真实身份
  15. 这份苹果手机应用历史总排行榜很有意思!
  16. WPS Office 2019 v11.8.2专业增强版+教程
  17. ios 调试工具FLEX
  18. Pycharm激活当前虚拟环境本身的安装包空间
  19. 阿里云python课程_阿里云大学编程语言免费精华课程集锦
  20. python按格式写文件_Python按特定格式对文件进行读写

热门文章

  1. 所谓数据结构,对python来说不过如此
  2. 男人成为富翁必备五大特质
  3. 遗传算法优化BP神经网络,bp神经网络的优化算法
  4. 上海拍牌服务器协议,上海拍牌服务器地址
  5. D. Captain Flint and Treasure
  6. 头腾大战,用户的头像到底属于谁的?
  7. 开挂?16岁保送北大、MIT量子计算机博士是这样玩转区块链的!
  8. angular中自定义webpack配置
  9. 银行面试之MySQL数据库
  10. [GIS热点] 3S技术集成-新技术革命下集成模式