利用HAProxy代理SQL Server的AlwaysOn帮助别本

历史库程序,机房内有三套程序需要读取数据库,历史库程序,机房内有三套程序需要读取数据库,网关为133.130)和rs2(内网,分别为rs1(内网,负载均衡器与客户端及后端的服务器会分别建立一次TCP连接,一个TCP连接是客户端和服务器直接建立的

金沙国际唯一官网网址 30

行使HAProxy代理SQL Server的AlwaysOn帮衬别本

信用合作社目前数据库进级到SQL Server201肆 ,并布署了alwayson高可用集群

机室内有3套程序要求读取数据库

第1套:主程序,读写数据库,连接主别本

第3套:报表程序,读报表,连接帮忙别本

其3套:历史库程序,读历史库,连接支持别本

 

软件条件

金沙国际唯一官网网址 1

机械情状

金沙国际唯一官网网址 2

 

架构图

金沙国际唯一官网网址 3

为什麽要求使用HAProxy?

后边机房里面有3000个顶峰,那个极端是一个比相当小的嵌入式设备,第3套报表程序原来是应用直连数据库IP(拾.11.十.3陆)来连接数据库

但如此有多少个弊端,当3陆这台扶助别本宕机,那么报表程序就瘫痪了,因为三千个顶峰要退换数据库连接须要烧写程序到极限里面特别耗时

莫不要几天时间

 

末段决定使用HAProxy做负载均衡和TCP连接重定向

行使HAProxy有多少个便宜

一、前端不须求后端数据库的其实IP,当须要晋级后端数据库,比方打补丁的时候特别便利

2、HAProxy能够自动物检疫查测试后端数据库服务,探测143三端口是还是不是存活,若是143三端口出标题,能够自动重定向连接到三七那台帮衬别本

叁、缓慢解决单台读库压力,使用KugaCRUISER轮询算法,请求均衡分发到3陆和三七这两台扶助副本,减轻3六这台机器的下压力

金沙国际唯一官网网址 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 文件增添两行local三.*  和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

#张开后台管理分界面

 

HAProxy提供了贰个后台管理分界面

金沙国际唯一官网网址 6

 

查看haproxy的日志

cat /var/log/haproxy.log

金沙国际唯一官网网址 7


测试注明

使用SSMS2016来连接HAProxy的IP

10.11.10.39

金沙国际唯一官网网址 8

现行反革命是连接到GZC-SQL0三那台机

 

方今把 GZC-SQL0三这台机的SQL服务停了

金沙国际唯一官网网址 9

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

金沙国际唯一官网网址 10

 再度点击一下实践开关,能够窥见早已重定向到 GZC-SQL0二那台机

金沙国际唯一官网网址 11

 

 

即便通过HAProxy那一层,但是品质方面也不算太差

金沙国际唯一官网网址 12


 

HAProxy的通讯格局

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

LVS的NAT情势(调解器将呼吁的目标ip即vip地址改为Real server的ip,
再次来到的多寡包也通过调节器,调整器再把源地址修改为vip)

金沙国际唯一官网网址 13

金沙国际唯一官网网址 14

 

 


总结

线上蒙受使用HAProxy已经大半二个月,到后天并未有出现过难点,比较稳固

对于HAProxy原理上的事物那里就不叙述了,网络有大多素材

 

参考作品:

 

如假使每一种职业使用差异端口,能够动用上面包车型地铁配备文件

比方报表使用143三端口,BI抽出数据运用243三端口

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 Server201肆 ,并陈设了alwayson高可用集群

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

第一套:主程序,读写数据库,连接主别本

第一套:报表程序,读报表,连接协理别本

其3套:历史库程序,读历史库,连接援助别本

 

软件条件

金沙国际唯一官网网址 1

金沙国际唯一官网网址,机械意况

金沙国际唯一官网网址 2

 

架构图

金沙国际唯一官网网址 3

为什麽须要动用HAProxy?

前边机房里面有两千个顶峰,那一个极端是三个不大的嵌入式设备,第叁套报表程序原来是行使直连数据库IP(10.11.10.3六)来连接数据库

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

或者要几天时间

 

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

使用HAProxy有多少个便宜

一、前端不供给后端数据库的实际上IP,当必要进步后端数据库,比方打补丁的时候更加有益

2、HAProxy可以自动物检疫验后端数据库服务,探测143三端口是不是存活,假若143三端口出难点,能够活动重定向连接到三七那台扶助别本

3、缓慢消除单台读库压力,使用路虎极光逍钢铁船询算法,请求均衡分发到3六和三7那两台帮忙别本,减轻3陆那台机械的压力

金沙国际唯一官网网址 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 文件增添两行local三.*  和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机器只供给采用3个网口,不须要格外扩大网口

金沙国际唯一官网网址 5

#张开后台管理分界面

 

HAProxy提供了多个后台处理分界面

金沙国际唯一官网网址 6

 

查看haproxy的日志

cat /var/log/haproxy.log

金沙国际唯一官网网址 7


测试证明

使用SSMS2016来连接HAProxy的IP

10.11.10.39

金沙国际唯一官网网址 8

目前是接二连3到GZC-SQL0三这台机

 

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

金沙国际唯一官网网址 9

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

金沙国际唯一官网网址 10

 再一次点击一下实践开关,能够发掘已经重定向到 GZC-SQL0贰那台机

金沙国际唯一官网网址 11

 

 

虽说经过HAProxy那1层,不过品质方面也不算太差

金沙国际唯一官网网址 12


 

HAProxy的通信格局

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

LVS的NAT方式(调节器将请求的目的ip即vip地址改为Real server的ip,
再次来到的数码包也通过调整器,调节器再把源地址修改为vip)

金沙国际唯一官网网址 13

金沙国际唯一官网网址 14

 

 


总结

线上情形使用HAProxy已经大半二个月,到未来未有出现过难点,相比较稳定

对此HAProxy原理上的东西那里就不叙述了,网络有数不尽素材

 

参照作品:

 

假若是各种业务应用分化端口,能够应用上面包车型大巴安顿文件

举个例子说报表使用143叁端口,BI收取数据利用243三端口

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 

本文版权归作者全体,未经小编同意不得转发。

LVS介绍

  • LVS是由国人章文嵩开垦
  • 流行度不亚于apache的httpd,基于TCP/IP做的路由和中间转播,牢固性和频率非常高
  • LVS最新版本基于Linux内核二.陆,有无数年不立异了
  • LVS有三种遍布的方式:NAT、D景逸SUV、IP Tunnel
  • LVS架构中有1个主干剧中人物叫做分发器(Load
    balance),它用来散发用户的请求,还有繁多拍卖用户请求的服务器(Real
    Server,简称rs)

一、四层和7层负载均衡的界别

所谓的四层正是ISO参考模型中的第伍层。四层负载均衡也叫做四层交流机,它根本是经过分析IP层及TCP/UDP层的流量完毕的基于IP加端口的载荷均衡。常见的基于四层的载重均衡器有LVS、F5等。
以大规模的TCP应用为例,负载均衡器在接收到第多个来源客户端的SYN请求时,会经过设定的负载均衡算法选取2个极品的后端服务器,同时将报文中目的IP地址修改为后端服务器IP,然后直接转载给该后端服务器,那样八个载荷均衡请求就到位了。从那么些历程来看,八个TCP连接是客户端和服务器间接建立的,而负载均衡器只可是完毕了八个近似路由器的转会动作。在少数负载均衡战术中,为保险后端服务器再次回到的报文可以准确传递给负载均衡器,在转会报文的同时也许还会对报文原来的源地址进行改变。整个经过下图所示。

 金沙国际唯一官网网址 29

 

 

同理,7层负载均衡器也称之为7层调换机,位于OSI的最高层,即应用层,此时负荷均衡器帮忙多样施用协议,常见的有HTTP、FTP、SMTP等。七层负载均衡器能够根据报文内容,再合营负载均衡算法来摘取后端服务器,因而也叫做“内容调换器”。举例,对于Web服务器的负载均衡,7层负载均衡器不但能够依据“IP+端口”的主意举办负荷分流,还足以依靠网址的UCRUISERL、访问域名、浏览器连串、语言等决定负载均衡的政策。举个例子,有两台Web服务器分别对应中国和英国文七个网址,三个域名分别是A、B,要兑现访问A域名时进入中文网址,访问B域名时进入英文网址,那在4层负载均衡器中差不多是无能为力兑现的,而7层负载均衡能够依靠客户端访问域名的例外选项相应的网页进行负荷均衡管理。常见的七层负载均衡器有HAproxy、Nginx等。

此处仍以常见的TCP应用为例,由于负载均衡器要得到到报文的始末,因而不得不先代替后端服务器和客户端建立连接,接着,技术选择客户端发送过来的报文内容,然后再依据该报文中一定字段加上负载均衡器中设置的负载均衡算法来支配最后挑选的里边服务器。纵观整个经过,7层负载均衡器在那种景色下类似于1个代理服务器。整个进程如下图所示。

金沙国际唯一官网网址 30

 

相比较肆层负载均衡和7层负载均衡运营的整体进程,能够看出,在七层负载均衡格局下,负载均衡器与客户端及后端的服务器会分别成立一次TCP连接,而在4层负载均衡形式下,仅确立一回TCP连接。因而可见,七层负载均衡对负荷均衡设备的须求更加高,而七层负载均衡的处理技术也决然低于4层方式的载重均衡。

LVS IP Tunnel模式

金沙国际唯一官网网址 31

  • 那种情势,要求有3个公家的IP配置在分发器和持有rs上,咱们把它称作vip
  • 客户端请求的靶子IP为vip,分发器接收到请求数据包后,会对数据包做3个加工,会把目标IP改为rs的IP,那样数据包就到了rs上
  • rs接收数据包后,会恢复生机原始数据包,那样目的IP为vip,因为兼具rs上安排了这几个vip,所以它会以为是它和煦

陆、HAProxy负载均衡器算法与行使本事

一、HAProxy援助的载重均衡算法
(一)、roundrobin,表示轻巧的轮询,负载均衡基础算法
(二)、static-rr,表示依照权重
(3)、leastconn,表示最少连接者先管理
(4)、source,表示依据请求源IP
(伍)、uri,表示依据请求的U冠道I;
(6)、url_param,表示根据请求的U猎豹CS6l参数来拓展调治
(七)、hdr(name),表示依据HTTP请求头来锁定每2回HTTP请求;
(八)、rdp-cookie(name),表示依据据cookie(name)来锁定并哈希每3回TCP请求。

贰、常用的载重均衡算法

(1)轮询算法:roundrobin
(二)依据请求源IP算法:source
(3)最少连接者先拍卖算法:lestconn

扩展

lvs 三种情势详解

lvs两种算法

关于arp_ignore和
arp_announce

lvs原理相关的

四、HAProxy基础配置文件详解

HAProxy配置文件依附成效和用途,首要有四个部分组成,但多少部分并不是必须的,能够依据须要采用相应的一些开始展览安插。
(1)global部分
用来设定全局配置参数,属于进程级的配置,通常和操作系统配置有关。
(2)defaults部分
暗中同意参数的配置部分。在此部分装置的参数值,暗中同意会自动被引用到下边包车型地铁frontend、backend和listen部分中,由此,如若某些参数属于公用的布署,只需在defaults部分增加3遍就可以。而一旦在frontend、backend和listen部分中也安插了与defaults部分雷同的参数,那么defaults部分参数对应的值自动被遮住。
(3)frontend部分
此部分用于安装接收用户请求的前端虚拟节点。frontend是在HAProxy①.三本子之后才引进的三个零部件,同时引进的还有backend组件。通过引进这么些零件,在十分大程度上简化了HAProxy配置文件的繁杂。frontend能够依据ACL规则直接内定要选用的后端backend。
(4)backend部分
此部分用来安装集群后端服务集群的铺排,也正是用来加多一组真实服务器,以管理前端用户的呼吁。增加的实际服务器类似于LVS中的real
server节点。
(5)listen部分
此部分是frontend部分和backend部分的结合体。在HAProxy1.三本子从前,HAProxy的享有配置选项都在那些有个别中设置。为了维持包容性,HAProxy新的版本依然保留了listen组件的安插方式。方今在HAProxy中,三种配备形式任选其一就可以。

下边是一个总体的HAProxy配置文件

global
log 127.0.0.1 local0 info
maxconn 4096
user nobody
group nobody
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid

defaults
mode http
retries 3
timeout connect 10s
timeout client 20s
timeout server 30s
timeout check 5s

frontend www
bind *:80
mode http
option httplog
option forwardfor
option httpclose
log global
#acl host_www hdr_dom(host) -i www.zb.com
#acl host_img hdr_dom(host) -i img.zb.com
#use_backend htmpool if host_www
#use_backend imgpool if host_img
default_backend htmpool

backend htmpool
mode http
option redispatch
option abortonclose
balance static-rr
cookie SERVERID
option httpchk GET /index.jsp
server 237server 192.168.81.237:8080 cookie server1 weight 6 check inter
2000 rise 2 fall 3
server iivey234 192.168.81.234:8080 cookie server2 weight 3 check inter
2000 rise 2 fall 3

backend imgpool
mode http
option redispatch
option abortonclose
balance static-rr
cookie SERVERID
option httpchk GET /index.jsp
server host236 192.168.81.236:8080 cookie server1 weight 6 check inter
2000 rise 2 fall 3

listen admin_stats
bind 0.0.0.0:9188
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /haproxy-status
stats realm welcome login\ Haproxy
stats auth admin:admin~!@
stats hide-version
stats admin if TRUE