zoukankan      html  css  js  c++  java
  • 使用HAProxy实现sql server读库的负载均衡

    前置条件

    使用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

  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/dehai/p/4885021.html
Copyright © 2011-2022 走看看