选择HAProxy代理SQL Server的AlwaysOn援救副本

动用HAProxy代理SQL Server的AlwaysOn援助副本

商店近期数据库升级到SQL Server二零一四 ,并陈设了alwayson高可用集群

机房内有三套程序供给读取数据库

第叁套:主程序,读写数据库,连接主副本

其次套:报表程序,读报表,连接协助副本

其三套:历史库程序,读历史库,连接协理副本

 

软件条件

图片 1

机械环境

图片 2

 

架构图

图片 3

为什麽须要使用HAProxy?

前边机房里面有三千个顶峰,那几个极端是多少个十分的小的嵌入式设备,第②套报表程序原来是采用直连数据库IP(10.11.10.36)来三番五次数据库

但如此有二个弊病,当36那台援助副本宕机,那么报表程序就瘫痪了,因为三千个顶峰要转移数据库连接需求烧写程序到巅峰里面十三分耗时

可能要几天时间

 

终极决定利用HAProxy做负载均衡和TCP连接重定向

行使HAProxy有几个好处

一 、前端不须求后端数据库的实在IP,当需求升级后端数据库,比如打补丁的时候特意福利

② 、HAProxy能够自动检查和测试后端数据库服务,探测1433端口是或不是存活,如果1433端口出问题,能够活动重定向连接到37那台帮忙副本

三 、减轻单台读库压力,使用兰德Escort大切诺基轮询算法,请求均衡分发到36和37那两台匡助副本,减轻36那台机械的压力

图片 4

 

 


HAProxy相关配置步骤

 

#yum安装,版本是1.5.4

yum install -y haproxy.x86_64

 

 

#编辑rsyslog 文件,修改为-c 2 -r -x -m

vi /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-c 2 -m 0 -r -x"

 

 

#编写rsyslog.conf 文件添加两行local3.*  和local0.*

vi /etc/rsyslog.conf
local7.*                                                /var/log/boot.log
local3.*                                                /var/log/haproxy.log
local0.*                                               /var/log/haproxy.log

 

 

 

#重启rsyslog服务

service rsyslog restart

 

 

# 编辑haproxy配置文件 上边以mssql从库负载均衡为例

vi /etc/haproxy/haproxy.cfg

global
log 127.0.0.1 local2 
chroot /var/lib/haproxy 
pidfile /var/run/haproxy.pid 
maxconn 6000 
user haproxy 
group haproxy 
daemon 
#stats socket /var/lib/haproxy/stats     
stats socket /var/run/haproxy.sock mode 666 level admin
stats timeout 2m


defaults 
mode http 
log                 127.0.0.1:514       local3                     
option                  dontlognull
#option http-server-close
#option forwardfor       except 127.0.0.0/8
option redispatch
retries 3 
timeout http-request 10s 
timeout connect 10s 
timeout client 1m 
timeout server 1m 
timeout http-keep-alive 10s
timeout check 10s
maxconn 6000





listen stats 
mode http
bind *:2080
stats enable
stats refresh 30s
stats uri /haproxyadminstats
stats realm HAProxy\ Statistics
stats auth admin:admin
stats admin if TRUE


listen mssql :1433
mode tcp
balance roundrobin
server mssqldb1 10.11.10.36:1433 weight 1 maxconn 6000 check port 1433 inter 2000 rise 2 fall 2
server mssqldb2 10.11.10.37:1433 weight 1 maxconn 6000 check port 1433 inter 2000 rise 2 fall 2

 

 

#反省布置文件是或不是有语法错误

haproxy -f /etc/haproxy/haproxy.cfg -c
Configuration file is valid

 

#启动haproxy

/etc/init.d/haproxy start

 

 

#检查haproxy是还是不是在监听

netstat -lntp

 

在意:Centos机器只供给运用二个网口,不须求卓殊增添网口

图片 5

#打开后台管理界面
http://10.11.30.47:2080/haproxyadminstats

 

HAProxy提供了2个后台管理界面

图片 6

 

查看haproxy的日志

cat /var/log/haproxy.log

图片 7


测试评释

使用SSMS2016来连接HAProxy的IP

10.11.10.39

图片 8

今日是接连到GZC-SQL03那台机

 

现行反革命把 GZC-SQL03那台机的SQL服务停了

图片 9

HAProxy已经探测到 GZC-SQL03那台机的SQL服务停了

图片 10

 再次点击一下推行按钮,能够发现已经重定向到 GZC-SQL02那台机

图片 11

 

 

即便如此经过HAProxy这一层,可是质量方面也不算太差

图片 12


 

HAProxy的通讯格局

通讯格局接近于LVS的NAT方式

LVS的NAT格局(调度器将呼吁的靶子ip即vip地址改为Real server的ip,
重临的多少包也经过调度器,调度器再把源地址修改为vip)

图片 13

图片 14

 

 


总结

线上环境使用HAProxy已经基本上三个月,到前几日不曾出现过难点,相比稳定

对此HAProxy原理上的东西那里就不叙述了,网上有不计其数资料

 

参照文章:

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

 

一经是各类业务应用分化端口,能够采纳上边包车型地铁布置文件

譬如报表使用1433端口,BI抽取数据采用2433端口

vi /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2 
    chroot      /var/lib/haproxy       
    pidfile     /var/run/haproxy.pid     
    maxconn     6000                               
    user        haproxy           
    group       haproxy           
    daemon
    #stats socket /var/lib/haproxy/stats 
    stats socket /var/run/haproxy.sock mode 666 level admin
    stats timeout 2m




defaults         
    mode                    http               
    log                     global                         
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3                 
    timeout http-request    10s        
    timeout connect         10s               
    timeout client          1m                 
    timeout server          1m                 
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 6000               





listen stats     
    mode http
    bind *:2080
    stats enable
    stats refresh 30s
    stats uri   /haproxyadminstats
    stats realm  HAProxy\ Statistics
    stats auth   admin:admin
    stats admin if TRUE


listen mssql :1433
    mode tcp
    balance roundrobin
    server mssqldb1 10.11.10.36:1433  weight 1 maxconn 6000 check port 1433 inter 2000  rise 2 fall 2
    server mssqldb2 10.11.10.37:1433  weight 1 maxconn 6000 check port 1433 inter 2000  rise 2 fall 2


listen mssql2 :2433
    mode tcp
    balance leastconn
    server mssqldb3 10.11.10.37:1433   maxconn 6000 check port 1433 inter 2000  rise 2 fall 2

 

 

如有不对的地方,欢迎我们拍砖o(∩_∩)o 

正文版权归小编全部,未经小编同意不得转发。

利用HAProxy代理SQL Server的AlwaysOn扶助副本

信用合作社近期数据库升级到SQL Server贰零壹伍 ,并安排了alwayson高可用集群

机房内有三套程序供给读取数据库

第贰套:主程序,读写数据库,连接主副本

其次套:报表程序,读报表,连接协助副本

其三套:历史库程序,读历史库,连接协助副本

 

软件条件

图片 15

机械环境

图片 16

 

架构图

图片 17

为什麽供给选择HAProxy?

事先机房里面有3000个顶峰,那些极端是一个相当小的嵌入式设备,第②套报表程序原来是运用直连数据库IP(10.11.10.36)来三番五次数据库

但如此有四个害处,当36那台协助副本宕机,那么报表程序就瘫痪了,因为三千个顶峰要改成数据库连接必要烧写程序到终点里面特别耗时

兴许要几天时间

 

最终决定动用HAProxy做负载均衡和TCP连接重定向

应用HAProxy有多少个便宜

① 、前端不供给后端数据库的骨子里IP,当须求升级后端数据库,比如打补丁的时候特意有益

2、HAProxy能够自动物检疫测后端数据库服务,探测1433端口是或不是存活,固然1433端口出题目,能够自行重定向连接到37那台协理副本

③ 、减轻单台读库压力,使用途达奥迪Q7轮询算法,请求均衡分发到36和37那两台援助副本,减轻36那台机器的压力

图片 18

 

 


HAProxy相关配置步骤

 

#yum安装,版本是1.5.4

yum install -y haproxy.x86_64

 

 

#编辑rsyslog 文件,修改为-c 2 -r -x -m

vi /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-c 2 -m 0 -r -x"

 

 

#编辑rsyslog.conf 文件添加两行local3.*  和local0.*

vi /etc/rsyslog.conf
local7.*                                                /var/log/boot.log
local3.*                                                /var/log/haproxy.log
local0.*                                               /var/log/haproxy.log

 

 

 

#重启rsyslog服务

service rsyslog restart

 

 

# 编辑haproxy配置文件 上面以mssql从库负载均衡为例

vi /etc/haproxy/haproxy.cfg

global
log 127.0.0.1 local2 
chroot /var/lib/haproxy 
pidfile /var/run/haproxy.pid 
maxconn 6000 
user haproxy 
group haproxy 
daemon 
#stats socket /var/lib/haproxy/stats     
stats socket /var/run/haproxy.sock mode 666 level admin
stats timeout 2m


defaults 
mode http 
log                 127.0.0.1:514       local3                     
option                  dontlognull
#option http-server-close
#option forwardfor       except 127.0.0.0/8
option redispatch
retries 3 
timeout http-request 10s 
timeout connect 10s 
timeout client 1m 
timeout server 1m 
timeout http-keep-alive 10s
timeout check 10s
maxconn 6000





listen stats 
mode http
bind *:2080
stats enable
stats refresh 30s
stats uri /haproxyadminstats
stats realm HAProxy\ Statistics
stats auth admin:admin
stats admin if TRUE


listen mssql :1433
mode tcp
balance roundrobin
server mssqldb1 10.11.10.36:1433 weight 1 maxconn 6000 check port 1433 inter 2000 rise 2 fall 2
server mssqldb2 10.11.10.37:1433 weight 1 maxconn 6000 check port 1433 inter 2000 rise 2 fall 2

 

 

#反省布署文件是不是有语法错误

haproxy -f /etc/haproxy/haproxy.cfg -c
Configuration file is valid

 

#启动haproxy

/etc/init.d/haproxy start

 

 

#检查haproxy是或不是在监听

netstat -lntp

 

专注:Centos机器只须求使用一个网口,不供给格外扩充网口

图片 19

#开辟后台管理界面
http://10.11.30.47:2080/haproxyadminstats

 

HAProxy提供了一个后台管理界面

图片 20

 

查看haproxy的日志

cat /var/log/haproxy.log

图片 21


测试申明

使用SSMS2016来连接HAProxy的IP

10.11.10.39

图片 22

当今是延续到GZC-SQL03那台机

 

今日把 GZC-SQL03那台机的SQL服务停了

图片 23

HAProxy已经探测到 GZC-SQL03那台机的SQL服务停了

图片 24

 再一次点击一下实践按钮,能够窥见已经重定向到 GZC-SQL02那台机

图片 25

 

 

即使通过HAProxy这一层,不过质量方面也不算太差

图片 26


 

HAProxy的通信方式

通讯格局接近于LVS的NAT格局

LVS的NAT情势(调度器将呼吁的靶子ip即vip地址改为Real server的ip,
重回的数目包也经过调度器,调度器再把源地址修改为vip)

图片 27

图片 28

 

 


总结

线上环境使用HAProxy已经基本上二个月,到今后从未有过出现过难题,相比较稳定

对于HAProxy原理上的事物这里就不叙述了,网上有为数不少质地

 

参考文章:

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

 

如假诺各样事情使用区别端口,能够利用上面包车型客车配置文件

譬如说报表使用1433端口,BI抽取数据运用2433端口

vi /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2 
    chroot      /var/lib/haproxy       
    pidfile     /var/run/haproxy.pid     
    maxconn     6000                               
    user        haproxy           
    group       haproxy           
    daemon
    #stats socket /var/lib/haproxy/stats 
    stats socket /var/run/haproxy.sock mode 666 level admin
    stats timeout 2m




defaults         
    mode                    http               
    log                     global                         
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3                 
    timeout http-request    10s        
    timeout connect         10s               
    timeout client          1m                 
    timeout server          1m                 
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 6000               





listen stats     
    mode http
    bind *:2080
    stats enable
    stats refresh 30s
    stats uri   /haproxyadminstats
    stats realm  HAProxy\ Statistics
    stats auth   admin:admin
    stats admin if TRUE


listen mssql :1433
    mode tcp
    balance roundrobin
    server mssqldb1 10.11.10.36:1433  weight 1 maxconn 6000 check port 1433 inter 2000  rise 2 fall 2
    server mssqldb2 10.11.10.37:1433  weight 1 maxconn 6000 check port 1433 inter 2000  rise 2 fall 2


listen mssql2 :2433
    mode tcp
    balance leastconn
    server mssqldb3 10.11.10.37:1433   maxconn 6000 check port 1433 inter 2000  rise 2 fall 2

 

 

如有不对的地点,欢迎大家拍砖o(∩_∩)o 

正文版权归作者全部,未经作者同意不得转发。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图