SQL SERVER 2008负载均衡设计

2015-07-18 11:42李国安
电脑知识与技术 2015年12期
关键词:负载均衡

李国安

摘要:SQL SERVER2008 开发的系统随着数据量的增大,系统性能不能满足用户的需求。可以通过大量的高性能的硬件投入,来提高系统的性能。这样,浪费更新的旧硬件,造成不必要的损失,这不是解决问题最好的方法。如何在原有的硬件基础上,提高系统的性能,发挥已有硬件的优势,让每一个节点共同完成系统应用。

关键词:负载均衡;ORACLE;SQL SERVER

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)12-0008-02

1 概述

随着经济的高速发展,企业规模逐渐扩大,数据量急剧膨胀。早期搭建的SQL SERVER服务环境已经不能满足业务量数据增加带来数据库服务器性能下降,导致应用程序响应时间不能满足客户需求。虽然微软数据库SQL SERVER不断升级,但是改造现有状况很难。不断增长的数据量带来很多新的问题,如:查询、添加、更新数据等操作响应时间变得越来越长,尽管应用程序不断的优化,也不能满足用户体验的需求。

解决目前存在的问题有以下几种方法:

1)扩展服务器性能,增加服务器吞吐能力,在硬件上扩展现在的需要。但是,已经退下的旧的服务设备,实属资源浪费,单节点的提升会对整个系统产生瓶颈,仍然不能满足用户的需求,提高性能是失败的。另外,这种单一硬件提升整个服务的性能不是一种可持续发展方案,不是一种可取方案。

2)SQL SERVER升级到ORACL平台,采用“RAC”来解决,ORACLE“RAC”采用共享缓存(Cache)的办法,来是实现锁的互换,多个实例同时分担负载。不但能负载均衡而且扩展也很方便。同时也和微软集群(MSCS)和SQL2005镜像作了对比。这种方法虽然能够解决问题,但是要将应用移植,代码要重新编写,关键是有好多旧系统在里面,当时开发的人员都离开了。所以这将是一个即费财力、物力、人力,同时还要面临很大风险的一个艰难过程。

3)在原有基础上,进行SQL SERVER2008上进行集群。SQL SERVER数据库服务器都只有“热备”的解决方案,而没有“负载均衡”和“集群”完备的解决方案。如果在原有硬件、软件没有发生改变情况下,完成数据库的负载均衡,是一种比较优的解决方案。那么,如何完成这种集群呢?

2 数据库解决方案

1)SQL SERVER2008数据库解决方案

SQL SERVER2008通过提供各种高可用性解决方案,大大缩短应用数据库的宕机时间,解决方案保障用户每周7天,每天24小时访问数据,有效的提高数据库运行性能,提高了数据库的高可用性。数据库提供了各种的Always On功能技术,可以提高数据库的安全性能,大大缩减停机时间并可以获得满意级别的可用性,并减少了由于大量用户同时访问同一数据库而导致的冲突,但是配置比较麻烦。

SQL SERVER 2008高可用和数据库恢复解决方案,体现在数据镜像、事务复制、日志传送、备份/还原、故障转移群集、数据库快照、数据压缩等技术上(如图1简单SQLSERVER数据库构架)。

备份压缩,通常情况下,减少压缩备份所需的设备IO,减少了备份所需的存储空间,大大提高备份的速度。但是,明显占用CPU,影响数据库的性能。

数据压缩,将数据进行压缩,以减少存储空间,提高传输效率,它是对数据通过算法将数据有效的重新组织,并减少冗余和存储空间的一种技术方法。在存储、传输过程中得到很大的应用。

数据镜像,当同一时间内,只有一个主体数据库,其他数据库为镜像数据库或备用数据库,并实现多个数据库之间进行数据同步。当主体数据库服务器出现故障时,能够及时切换到备用数据库中,并标识为主体数据库。因此,当数据库出现状况时,并不影响用户的体验。

SQL SERVER 2008处理海量数据来说,执行的性能降低,为提高数据库服务能力,在原有基础上,增加负载均衡和集群的解决方案。当用户来请求时,对用户的SQL语句进行平衡、并对SQL语句进行优化,已提升数据库服务器的执行能力、安全能力。

2)ORACLE RAC数据库负载均衡解决方案

ORACLE RAC在所有的服务器使用和管理同一个数据库环境下,为了减少每一台服务器的工作量,需要两台以上的服务器组成集群,另需要一个共享存储设备。还需要具备集群软件和RAC组件,而且服务器上的操作系统必须是同一个版本。RAC可以自动进行负载平衡、故障修复和规划停机时间,以支持高可用性应用程序。如图2 ORACLE RAC负载均衡设计。

3)数据库服务器存在以下问题

①数据库的两个节点分别是运行时和备份用的,当出现故障时,备份节点开始工作。

②虽然两个节点同时工作,但是计算机在性能上还是得不到提升,备份节点不能解决运行发生时的作用。

③只是追求更高配置的机器,并不能从根本上解决性能问题。

④从细节上讲,当一个节点出现故障的时候,另一个节点接管业务又是需要一定的步骤和时间。如:

Node2首先必须识别出Node1出现故障了;必须通过软件的方式使Node2与共享磁盘保持透明;Node1中创建的IP地址也必须在Node2中创建;Node1中创建的网络名称也必须在Node2中创建;管理Node1的数据库服务必须在Node2中重新启动;

上面的步骤必须连续的进行(共享磁盘和网络连接好后SQL Server才能启动,IP地址成功后网络名称才能构创建。)

3 集群中间件设计

SQL SERVER 2008在原有基础之上,实现数据库集群,采用独立数据库存储,不使用共享存储,并将n个节点数据库实现同步,可以通过镜像完成。但是将n个节点平等对待,没有主服务器和辅助服务器区分,只是在负载上有所侧重,通过一定算法实现节点的负载工作分配。它将植入在SQL Server内核的中间件集群软件,完成负载均衡(如图3 实现负载均衡)。

系统架构能够在SQL Server上构建多种集群,可以实现自动平衡负载和故障恢复,它可为您提供数据库从小规模发展到大规模一整套完整的解决方案。系统采用横向扩展,取而代之的是硬件的追求,在原有系统基础上,发挥每一个节点的功能,达到安全性能不降低、提高系统的性能。

数据可以存储在每个机器自己的存储介质中。对机器的要求不高,只要能够互相连通就可以完成系统的集群架构。

采用灵活,方便在SQL Server上构建多种集群,系统可以实现自动平衡负载和故障恢复,它可为您提供数据库从小规模发展到大规模一整套完整的解决方案。

采用此中间件设计在SQL SERVER 2008高可用性基础上,把含有n个节点的数据库服务器组成数据库集群。增加SQL Server内核的中间件,和以往不同的是让简单的备份工作的节点也要承担工作任务。主要工作是负载均衡、同步数据、SQL语句优化、故障转移、备份恢复等。

备份数据库服务器和运行数据库服务器共同承担数据备份功能和共享服务器压力,提高数据库的安全性、减少单一节点完成服务的压力。

4 软件测试

测试环境:

操作系统:Windows Server 2008 R2

数据库版本:SQL Server 2008

服务器A:10.0.0.1

服务器B:10.0.0.2

虚拟IP:10.0.0.15

集群的搭建完成后,就可以开始对集群进行测试。首先是负载均衡测试。负载均衡的测试办法是使用压力测试工具,然后分别查看两个实例的分析。

负载均衡的算法是默认根据两台服务器的过去一段时间采集的性能指标进行分析,优先将查询导到负载低的服务器中,但集群刚搭建的时候没有历史数据,则按照平均分配的原则。下面是我使用SQL Query Stress进行负载均衡测试的结果,如图4所示。我开了100个线程,每个线程循环10次,来进行一个非常简单的查询。

5 结束语

本文在原有框架下进行改进,并发挥各自的功能,在此架构下,主要完成负载均衡算法,采用中间件技术的数据库集群系统中各执行节点的负载进行运算,根据阈值对该集群系统进行负载均衡,避免硬件的浪费,从根本上提高系统的性能,使各个节点发挥它的作用。

参考文献:

[1] 张前进,齐美彬,李莉. 基于应用层负载均衡策略的分析与研究[J]. 计算机工程与应用,2007(32).

[2] 王春娟,董丽丽,贾丽. Web集群系统的负载均衡算法[J]. 计算机工程,2010(2).

[3] 周莹莲,刘甫. 服务器负载均衡技术研究[J]. 计算机与数字工程,2010(4).

猜你喜欢
负载均衡
异构环境下改进的LATE调度算法