图片 14

负载均衡集群介绍,LVS介绍,LVS调度算法,LVS NAT模式搭建

行使HAProxy代理SQL Server的AlwaysOn辅助别本

公司这段时间数据库晋级到SQL Server2015 ,并安顿了alwayson高可用集群

机室内有三套程序需求读取数据库

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

第二套:报表程序,读报表,连接扶助别本

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

 

软件条件

图片 1

机械情况

图片 2

 

架构图

图片 3

为什麽需求使用HAProxy?

前边机房里面有两千个顶峰,这几个极端是七个异常的小的嵌入式设备,第二套报表程序原本是采用直连数据库IP(10.11.10.36)来连接数据库

但如此有一个缺陷,当36那台支持别本宕机,那么报表程序就瘫痪了,因为3000个顶峰要改换数据库连接须求烧写程序到顶点里面特别耗时

想要求几天时间

 

聊到底决定使用HAProxy做负载均衡和TCP连接重定向

运用HAProxy有多少个低价

1、前端无需后端数据库的其实IP,当须要进步后端数据库,比方打补丁的时候极其有利

2、HAProxy能够自动物检疫查测量试验后端数据库服务,探测1433端口是还是不是存活,假使1433端口出标题,可以自动重定向连接到37那台协助别本

3、缓慢化解单台读库压力,使用PRADOENVISION轮询算法,央浼均衡分发到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

#开荒后台管理分界面

 

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

图片 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已经大半1个月,于今从未有过出现过难题,比较牢固

对于HAProxy原理上的东西这里就不陈说了,网络有众多资料

 

参谋小说:

 

例如是种种业务使用不相同端口,能够接纳下边包车型客车布置文件

比方报表使用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 

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

负载均衡集群介绍

  • 主流开源软件LVS、keepalived、haproxy、nginx等
  • 在那之中LVS属于4层(互联网OSI
    7层模型),nginx属于7层,haproxy不仅能够感到是4层,也足以当作7层使用
  • keepalived的载重均衡功能实在就是lvs
  • lvs这种4层的负荷均衡是足以分发TCP协议,web服务是80端口,除了分发80端口,还会有别的的端口通讯的,例如MySQL的载重均衡,就足以用LVS完成,而nginx仅仅支持http,https,mail,haproxy;haproxy也支撑MySQL这种TCP负载均衡的
  • 相比较来讲,LVS这种4层的更安宁,能承受越多的央求,承载的并发量越来越高,而nginx这种7层的愈益灵活,能达成更多的特性化必要

LVS介绍

  • LVS是由国人章文嵩开采
  • 流行度不亚于apache的httpd,基于TCP/IP做的路由和转化,稳固性和频率非常高
  • LVS最新版本基于Linux内核2.6,有众多年不更新了
  • LVS有二种广泛的方式:NAT、DCR-V、IP Tunnel
  • LVS架构中有两当中坚剧中人物叫做分发器(Load
    balance),它用来散发用户的伸手,还大概有相当多拍卖用户伏乞的服务器(Real
    Server,简称rs)

LVS NAT模式

图片 15

  • 借助iptables的nat表来落到实处
  • 用户的央浼到分发器后,通过预设的iptables法规,把伏乞的多少包转载到后端的rs上去
  • rs需求设定网关为分发器的内网ip
  • 用户央求的数据包和重临给用户的数额包全数因而分发器,所以分发器成为瓶颈
  • 在nat形式中,只供给分发器有公网ip即可,所以相比节省公网ip能源

LVS IP Tunnel模式

图片 16

  • 这种方式,需求有三个集体的IP配置在分发器和颇具rs上,大家把它称为vip
  • 客户端乞请的指标IP为vip,分发器接收到伏乞数据包后,会对数码包做二个加工,会把目标IP改为rs的IP,那样数据包就到了rs上
  • rs接收数据包后,会大张旗鼓原始数据包,那样目的IP为vip,因为具有rs上布署了那几个vip,所以它会以为是它自身