负载均衡集群介绍,LVS介绍,LVS调治算法,LVS

作者:数据库

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

信用合作社近来数据库进级到SQL Server二零一四 ,并安排了alwayson高可用集群

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

首先套:主程序,读写数据库,连接主别本

其次套:报表程序,读报表,连接协理别本

其三套:历史库程序,读历史库,连接帮忙别本

 

软件条件

数据库 1

机器遇到

数据库 2

 

架构图

数据库 3

为什麽需求运用HAProxy?

后面机房里面有两千个顶峰,那一个极端是四个比相当小的嵌入式设备,第二套报表程序原本是采纳直连数据库IP(10.11.10.36)来连接数据库

但与上述同类有几个害处,当36那台协助别本宕机,那么报表程序就瘫痪了,因为两千个极端要转移数据库连接须求烧写程序到巅峰里面特别耗时

兴许要几天时间

 

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

选拔HAProxy有几个好处

1、前端无需后端数据库的其实IP,当须要升高后端数据库,举个例子打补丁的时候特意方便

2、HAProxy能够自动质量评定后端数据库服务,探测1433端口是不是存活,若是1433端口出标题,能够自行重定向连接到37这台帮忙别本

3、缓慢解决单台读库压力,使用奥迪Q5帕杰罗轮询算法,诉求均衡分发到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 NAT情势搭建

常备不懈工作

  • 三台机械
  • 分发器,也叫调治器(简写为dir)
  • 内网:133.130,外网:142.147(vmware仅主机格局)
  • rs1
  • 内网:133.132,设置网关为133.130
  • rs2
  • 内网:133.133,设置网关为133.130
  • 三台机械上都进行实行
  • systemctl stop firewalld; systemc disable firewalld
  • systemctl start iptables-services; iptables -F; service iptables save

NAT形式搭建

  • 在dir上安装ipvsadm
  • yum install -y ipvsdam
  • 在dir上编写制定脚本,vim /usr/local/sbin/lvs_nat.sh//内容如下
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.133.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.147.144:80 -s wlc -p 3
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.132:80 -m -w 1
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.133:80 -m -w 1

NAT格局功效测量试验

  • 两台rs上都安装nginx
  • 安装两台rs的主页,做一个组别,也正是说直接curl两台rs的ip时,获得分化的结果
  • 浏览器里拜见192.168.142.147,多访问三次看结果差距

预备三台机器,一台作为分发器(内网:133.130,外网:142.147),别的两台是real server,分别为rs1(内网:133.132,网关为133.130)和rs2(内网:133.133,网关为133.130)

分发器扩张一块网卡,查看网卡网段,所以设置IP192.168.142.147

数据库 15

数据库 16

数据库 17

然后查看是不是ping通

数据库 18

三台机器配置好了后头,全部内需关闭防火墙

数据库 19

然后在rs1,rs2上安装iptables-services包,启动iptables服务

数据库 20

 systemctl start iptables
 systemctl enable iptables

下一场调用新准则,避防暗中同意准则影响实验效果;最后关闭selinux,最佳修改下布置文件

数据库 21

数据库 22

数据库 23

安装ipvsadm工具

数据库 24

然后编写脚本,vim /usr/local/sbin/lvs_nat.sh,保存退出;然后推行该脚本sh /usr/local/sbin/lvs_nat.sh,脚本无输出表示无不当

数据库 25

$IPVSADM -A -t 192.168.147.144:80 -s rr -p 3 #-A:=add,增加法规;-t:=tcp;-s 内定算法; -p:钦定超时时间

在rs1和rs2上设置nginx,并分别修改主页内容

数据库 26

数据库 27

下一场能够做测量检验,如下表示测量试验成功

数据库 28

LVS IP Tunnel模式

数据库 29

  • 这种情势,要求有二个公共的IP配置在分发器和颇具rs上,我们把它称作vip
  • 客户端央浼的靶子IP为vip,分发器接收到央浼数据包后,会对数码包做八个加工,会把目标IP改为rs的IP,这样数据包就到了rs上
  • rs接收数据包后,会出山小草原始数据包,那样目标IP为vip,因为兼具rs上配备了那一个vip,所以它会以为是它自个儿
  • 介绍
    1. HAProxy是支持虚构主机的,通过frontend指令来兑现
    2. 可见补充Nginx的片段毛病举例Session的维持,Cookie的辅导等职业
    3. 支持url检查评定后端的服务器出难题的检验会有很好的辅助。
    4. 它跟LVS一样,本人只是就只是一款负载均衡软件;单纯从效能上来讲HAProxy更会比Nginx有更优质的载荷均衡速度,在产出管理上也是优于Nginx的。
    5. HAProxy能够对Mysql读实行负荷均衡,对后端的MySQL节点开展检查测验和负载均衡,不过在后端的MySQL slaves数量抢先10台时质量不比LVS,所以笔者向大家推荐LVS Keepalived。
    6. 能对央求的url和header中的音讯做协作,有比lvs有更加好的7层完结
    7. HAProxy的载荷均衡算法以往也愈增加了,具体有如下8种:
      ① roundrobin,表示轻易的轮询,那么些十分的少说,这几个是负载均衡基本都具有的;
      ②static-rr,表示依据权重,建议关心;
      ③leastconn,表示最少连接者先管理,建议关怀;
      ④source,表示按照诉求源IP,那几个跟Nginx的IP_hash机制类似,我们用其当做搞定session难点的一种办法
      ⑤ri,表示依照央浼的ULacrosseI;
      ⑥rl_param,表示依据央求的U景逸SUVl参数'balance url_param' requires an URL parameter name;
      ⑦hdr(name),表示依照HTTP诉求头来锁定每一次HTTP央求;
      ⑧rdp-cookie(name),表示依据据cookie(name)来锁定并哈希每二次TCP要求。
  • 安装
    1 下载链接
    2 tar -zxvf haproxy-version.tar.gz
    3 cd haproxy-version
    4 uname -a
    Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
    5 make TARGET=linux31
    6 make install PREFIX=/data/haproxy
    7 cd /data/haproxy
    8 mkdir conf
    9 cd conf
    9 touch haproxy.conf
    10 vim haproxy.conf
  • 配置haproxy.conf

扩展

lvs 三种形式详解

lvs三种算法

关于arp_ignore和 arp_announce

lvs原理相关的

groupadd haproxy #添加haproxy组
useradd -g haproxy haproxy -s /bin/false #创建nginx运行账户haproxy并加入到haproxy组,不允许haproxy用户直接登录系统

本文由ca88发布,转载请注明来源

关键词: ca88网址 Linux yzc888 Linux高级知识 lvs