前置条件

使用sqlserver的发布订阅功能实现读写分离,并创建多个读库。

本文的负载均衡是针对多个读库而言的。

测试环境

vmware 10 64位

windows server 2008 R2

sql server 2008

centOS 6.6

haproxy 1.5

虚拟机配置

(1)虚拟机1:安装centos, 并安装HAProxy。ip为:172.16.1.1。作为负载均衡器。

(2)虚拟机2:安装windows server 2008 R2, 并安装sql server 2008。ip为:172.16.1.2,作为数据库服务器1。

(3)虚拟机3:克隆虚拟机2。ip为:172.16.1.6。作为数据库服务器2。

如下图:

haproxy配置

这里最重要的是对haproxy进行配置,配置文件如下:

global
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 2
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
mode http
option httplog
option dontlognull
log 127.0.0.1 local3
retries 3
option redispatch
maxconn 2000
contimeout 50000
clitimeout 50000
srvtimeout 50000 listen mssql :1433
mode tcp
balance roundrobin
server mssql1 172.16.1.2:1433 check weight 1 check
server mssql2 172.16.1.6:1433 check weight 1 check listen stats :8888
mode http
transparent
stats uri / haproxy-stats
stats realm Haproxy \ statistic

 测试

(1) 创建一个测试表:

CREATE TABLE [dbo].[table1](
[f1] [nchar](10) NULL
) ON [PRIMARY]

(2)为了看到负载均衡的结果,请将两个读库中table1表的数据设置为不一样

(3)连接至172.16.1.1(负载均衡器),使用以下查询语句进行查询。

SELECT TOP 1000 [f1]  FROM [test1].[dbo].[table1]

需要在每次查询前先断开连接,然后再建立与sql server的连接,如下图所示:

特别说明

(1)若是不重新建立连接的话,则每次得到的结果是一样的,因为sqlserver的客户端采用了数据库连接池技术,在没有主动地关闭的情况下,TCP连接会一直被保持着。

(2)断开连接之后,再重新连接一次的话,则得到的结果是不一样的。

本文的介绍的方法仅在测试环境中通过,尚未在正式环境中使用。

haproxy的安装请见:

http://www.cnblogs.com/dehai/p/4885016.html

最新文章

  1. linux 环境变量PATH路径的三种方法
  2. Python 基礎 - 認識模塊
  3. Scala underscore的用途
  4. Android--解析XML之SAX
  5. TP复习15
  6. 【android-cocos2d-X 环境配置】在Mac下搭建Cocos2d-X-android开发环境!
  7. 网页布局只mian部分左右固定,中间部分自适应
  8. 2016 ACM/ICPC Asia Regional Qingdao Online 1001 I Count Two Three
  9. 为Android系统的Application Frameworks层增加硬件访问服务
  10. 基于Python,scrapy,redis的分布式爬虫实现框架
  11. Java中如何实现j并发更新数据库同一条数据
  12. Eclipse新建动态页面
  13. array_slice()函数造成的一次sql注入
  14. SQLAlchemy 增删改查 一对多 多对多
  15. 树莓派连接不上WiFi
  16. 用php获取js变量的值
  17. 创建PCB原理图的模板
  18. 玩具装箱&土地购买
  19. spark rdd 宽窄依赖理解
  20. 解题9(StringReversedOrder)

热门文章

  1. spring Springmvc mybatis maven整合
  2. DNSlog实现Mysql注入
  3. SVN 钩子 同步测试服务器
  4. 【统一异常处理】@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常
  5. HTML5中的Web Notification桌面通知(右下角提示)
  6. ajax在jQuery中的应用 (1)加载异步数据
  7. 【搜索】Shuffle'm Up
  8. spring学习 六 spring与mybatis整合
  9. AJAX-URL-HTTP协议-缓存-DOM操作-HTML元素事件
  10. 55.UIbutton点击切换颜色