HAproxy负载均衡配置教程

一、简介

haproxy是一个开源的高性能负载均衡软件;支持双机热备、虚拟主机和图形化的管理界面,自带强大的对RS健康检查功能;支持TCP(四层)、HTTP(七层)应用代理功能;多用于PV很大,但是又需要七层应用代理的业务

二、工作原理

1、基于TCP负载均衡工作原理:

使用NAT方式接收和返回请求报文,只单纯对请求流量和返回流量做转发;RS不

用配置公网IP

2、基于HTTP负载均衡工作原理:

使用NAT方式接收和返回请求报文,在接收请求报文后会检查报文头信息,根据

报文头信息匹配Frontend(ACL规则)再转发给Backend(server池);RS不用配

置公网IP

三、安装HAproxy

1、下载haproxy源码包

下载地址:http://download.chinaunix.net/download.php?id=40475&ResourceID=12508

2、tar  xf  haproxy-1.4.22.tar.gz  -C /home

3、cd /home/haproxy-1.4.22

4、make  TARGET=linux26  ARCH=x86_64

5、make install PREFIX=/usr/local/haproxy

6、ln  -s /usr/local/haproxy  /usr/haproxy

7、cd /usr/local/haproxy

8、mkdir -p bin  conf  logs  var/run  var/chroot

9、cd  examples/

10、cp haproxy.cfg /usr/local/haproxy/etc

11、cp  haproxy.init/etc/init.d/haproxy

12、chmod 700 /etc/init.d/haproxy

13、chkconfig  --add haproxy

14、chkconfig  haproxy on

四、配置基于四层负载均衡

1、vim haproxy.cfg

##全局配置信息###

global

chroot /usr/local/haproxy/var/chroot    #chroot运行路径

daemon                           #以后台形式运行harpoxy

group  haproxy                     #启动程序所用组,随便写,只要下面我们

创建这个组即可

user   haproxy                     #启动程序所用用户,随便写,只要下面我

们创建这个用户即可

log 127.0.0.1:514 local0 warring        #定义haproxy 日志存放设备及级别

pidfile /usr/local/haproxy/var/run/haproxy.pid #haproxy 进程PID文件,用于存放pid

maxconn 20480                         #默认最大连接数

spread-checks  3

nbproc  8                             #进程数量,一般为CPU核数2倍

####默认配置选项#######

defaults

log    global

mode  tcp         #所处理的类别(7层代理http,4层代理tcp)

retries 3            #3次连接失败就认为服务器不可用,也可以通过后面设置

option redispatch    #serverID 对应的服务器挂掉后,强制定向到其他健康的服务

contimeout 5000      #设置默认连接超时时间

clitimeout 50000      #设置客户端连接超时时间

srvtimeout 50000      #设置服务器连接超时时间

#########设置图形化监控页面######

listen  admin_status            #定义实例名为admin_status,实例名可以随意起

bind 0.0.0.0:81          #设置Frontend和Backend的组合体,监控组的名称,按

需要自定义名称

mode tcp               #设置模式;tcp为四层http为7 层

stats enable             #激活图形化管理界面

stats  uri  /admin?stats  #设置图形管理界面url打开路径

stats auth admin:admin   #设置监控页面的用户和密码:admin

balance  roundrobin     #设置对RS的调度算法,这里设置的是轮询方式

option  httpclose

option  forwardfor      #让RS节点记录客户端的真实IP,如果不加这条,RS节

点只记录负载均衡服务器的IP

option  httpchk  HEAD /test.html  HTTP /1.0  #定义通过URL方式进行对RS的健

康检查,不加这条,默认是通过IP+端口的方式进行健康检查;如果想通过URL进

行健康检查,后端RS节点上的web定义存放网页的目录下必须有test.html这个页

面,否则健康检查会失败

server www01 10.0.0.8:8080 check inter 1500 fall 3 rise 3 check port 8080 maxconn

3000 weight 1

server www02 10.0.0.9:8080 check inter 1500 fall 3 rise 3 check port 8080 maxconn

3000 weight 1

#定义server地址池,server是规定的server地址池字段,不能变;后面www01

是名字,随便写;10.0.0.X:8080是定义的RS的IP和端口,端口最好不要用80;check

inter 1500是定义健康检查间隔为1.5秒,不定义默认为2秒检查一次;fall 3是定

义检查三次后端RS都失败就把该节点踢掉,不定义默认也是检查三次;rise 3是定

义当RS节点从故障到恢复,健康检查三次才会认为该节点真正正常;check  port

8080是指定健康检查的端口号为8080;maxconn 3000是定义单个节点最大连接数

为3000pv;具体要安装服务器硬件状况配置,否则很可能会因为pv过大把服务器

压垮;weight 1是定义权重,权重值越大,承载的任务越多

2、useradd  haproxy  -s  /sbin/nologin  -M

五、配置基于七层负载均衡

1、vim haproxy.cfg

##全局配置信息###

global

chroot /usr/local/haproxy/var/chroot    #chroot运行路径

daemon                           #以后台形式运行harpoxy

group  haproxy                     #启动程序所用组,随便写,只要下面我们

创建这个组即可

user   haproxy                     #启动程序所用用户,随便写,只要下面我

们创建这个用户即可

log 127.0.0.1:514 local0 warring        #定义haproxy 日志存放设备及级别

pidfile /usr/local/haproxy/var/run/haproxy.pid #haproxy 进程PID文件,用于存放pid

maxconn 20480                         #默认最大连接数

spread-checks  3

nbproc  8                             #进程数量,一般为CPU核数2倍

####默认配置选项#######

defaults

log    global

mode  tcp         #所处理的类别(7层代理http,4层代理tcp)

retries 3            #3次连接失败就认为服务器不可用,也可以通过后面设置

option redispatch    #serverID 对应的服务器挂掉后,强制定向到其他健康的服务

contimeout 5000      #设置默认连接超时时间

clitimeout 50000      #设置客户端连接超时时间

srvtimeout 50000      #设置服务器连接超时时间

##### 设置frontend#########

frontend http_80_in

bind 10.0.0.7:80          #设置监听端口,即haproxy提供的web服务端口和VIP,

和lvs的vip 类似

####acl 策略配置######

acl  frank_web hdr_reg(host)  -i ^(www.test.com.sh|news.test.com.sh)$

mane 如果请求的域名 不区分大小写为这两个域名

#如果请求的域名满足正则表达式中的2个域名则把该条请求匹配给frank_web这条

acl ;-i 是忽略大小写

redirect prefix http://192.168.151.249 code 301 if fran_web

#如果请求的域名满足正则表达式中的2个域名则把该条请求匹配给frank_web这条

acl 并用301跳转给http://192.168.151.249这台服务器处理;最后的fran_web一定

要和acl上的frank_web一样,也就是 name处是什么,这里就写什么

default_backend  wwwpools  #定义了默认的请求交由wwwpools这个地址组处理

backend  wwwpools         #定义地址组,取名为wwwpools

balance  roundrobin     #定义调度算法为轮询模式

server  www  10.0.0.8:8080  check inter 1500 rise 3 fall 3 weight 1

#定义一个地址RS节点,取名为www,健康检查间隔为1.5秒,检查三次则把RS

节点剔除;故障恢复后健康检查3次则认为真正正常

六、在301跳转的基础上做ACL分流

1、acl  web_www  path_beg  /www/  #把后缀带/www/的请求定义为名字为

web_www的acl列表

2、acl  web_bbs   path_beg  /bbs/    # #把后缀带/bbs/的请求定义为名字为

web_bbs的acl列表

3、use_backend  wwwpools  if  web_www  #调用web_www acl,只要请求后缀

有/www/字符就交由wwwpools这个地址组处理

4、usr_backend   wwwbbs  if   web_bbs   #调用web_bbs acl,只要请求后缀有

/bbs/字符就交由wwwbbs这个地址组处理

注意:操作之前先要配置wwwpools和wwwbbs这两个地址组

[记录]HAproxy负载均衡配置教程的更多相关文章

  1. haproxy负载均衡的安装配置

    haproxy是一款可靠,高性能的并且可以支持TCP/HTTP的负载均衡器,和前面说过的nginx负载均衡类似,这里haproxy对于负载均衡来说更专业,支持的配置选项更多,稳定性也很强,甚至只需要一 ...

  2. Linux记录-Nginx+Tomcat负载均衡配置

    Nginx负载均衡配置及策略: 轮询(默认) 优点:实现简单缺点:不考虑每台服务器的处理能力配置示例如下:upstream www.xxx.com {# 需要负载的server列表server www ...

  3. HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】

    一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:Ce ...

  4. RabbitMq+Haproxy负载均衡

    HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保 ...

  5. Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  6. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  7. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  8. (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  9. 解决 RabbitMQ 集群 Channel shutdown: connection error 错误(HAProxy 负载均衡)

    相关文章:搭建 RabbitMQ Server 高可用集群 具体错误信息: 2018-05-04 11:21:48.116 ERROR 60848 --- [.168.0.202:8001] o.s. ...

随机推荐

  1. SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原

    原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原 --作业定时压缩脚本 多库批量操作 DECLARE @DatabaseName NVARCHAR(50) DECLARE @ ...

  2. DELPHI XE2 采用 JSON 的方式来序列化对象

    DELPHI XE2 采用 JSON 的方式来序列化对象 以下代码测试通过.问题是里面的中文,在反序列化后是乱码. 1. 序列化对象为字符串,Subject 里面的中文看起来正常,仍然是中文: 2.  ...

  3. Qt DLL总结【二】-创建及调用QT的 DLL(三篇)good

    目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...

  4. How Qt Signals and Slots Work(感觉是通过Meta根据名字来调用)

    Qt is well known for its signals and slots mechanism. But how does it work? In this blog post, we wi ...

  5. 一键增加swap空间脚本

    #!/bin/bash echo -e "\033[33m Your current swap is \033[0m" free -h mkdir /SwapDir cd /Swa ...

  6. VC6下 try catch 在release下的杯具(默认情况下,要加上throw语句catch才不会被优化掉)

    IDE:VC6 今天遇到一个小问题,把我郁闷了好久,××医生的VulEngine不时在wcsstr处发生crash,加了一番强大的参数检查后,再加上了强大的try catch,其实不是很喜欢用try和 ...

  7. 浅谈js闭包(closure)

    相信很多从事js开发的朋友都或多或少了解一些有关js闭包(closure)的知识. 本篇文章是从小编个人角度,简单地介绍一下有关js闭包(closure)的相关知识.目的是帮助一些对js开发经验不是很 ...

  8. win2003浏览器提示是否需要将当前访问的网站添加到自己信任的站点中去

    Win2003的操作系统,的确比其它操作系统在安全上增加了不少,这是为用户所考虑的.当然,既然提供了安全性,尤其是在上网的时候,可以禁止某些活动脚本的显示,这样,就可以多方面的避免在使用Win2003 ...

  9. hadoop之hive集合数据类型

    除了string,boolean,date等基本数据类型之外,hive还支持三种高级数据类型: 1.ARRAY ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问.比如有一个A ...

  10. Mac上使用brew安装nvm来支持多版本的Nodejs

    brew方式 如果机器没有安装过node,那么首先brew install nvm安装nvm. 其次需要在shell的配置文件(~/.bashrc, ~/.profile, or ~/.zshrc)中 ...