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. Reverse Engineering Custom DataTypes -> GUID() in SQL Server to PostgreSQL

    原文 https://archive.sap.com/discussions/thread/3641585 First you reverse engineer from a script where ...

  2. 微信小程序实战之百思不得姐精简版

    原文:微信小程序实战之百思不得姐精简版 微信小程序基本组件和API已撸完,总归要回到正题的,花了大半天时间做了个精简版的百思不得姐,包括段子,图片,音频,视频,四个模块.这篇就带着大家简述下这个小的A ...

  3. asp.net下ueditor上传大容量视频报http请求错误的解决方法

    故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报“http请求错误”的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点 ...

  4. getch(),getche(),getchar()的区别

    先说基本区别. (1) getch()和getche()函数     这两个函数都是从键盘上读入一个字符.其调用格式为:      getch();      getche();     两者的区别是 ...

  5. 一条命令,秒秒钟完成MD5、SHA1校验,这就叫效率!

    相信很多奋斗在运维战线的小伙伴们经常会遇到版本升级之类的问题.笔者之前所在的公司每次进行版本发布的时候都会附带MD5校验哈希值,每次升级之前一般都要核对MD5哈希值的,刚刚开始的时候对Linux并不是 ...

  6. 浅谈stylus与sass的对比

    all we konw , 这两个都是css的预编译工具,但虽然都是编译工具,但还是存在差别的,下面来讲讲其中的区别 1.变量 sass定义变量是以这种形式进行定义的$xxx:10;而stylus的定 ...

  7. CMD 从文件中截取匹配规则字符串并输出到文件

    *******************command**********************git diff 8d71d92b2d957fd1b697b4cf785fb984f190e5d2 or ...

  8. Spring Boot入门篇(基于Spring Boot 2.0系列)

    1:概述: Spring Boot是用来简化Spring应用的初始化开发过程. 2:特性: 创建独立的应用(jar|war形式); 需要用到spring-boot-maven-plugin插件 直接嵌 ...

  9. 细谈unity资源加载和卸载

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 在了解unity的资源管理方式之后,接下来细谈一下Unity的资源是如何从磁盘中加载到运行时的内存中,以及又是如 ...

  10. 每日一问:浅谈 onAttachedToWindow 和 onDetachedFromWindow

    基本上所有 Android 开发都会接触到 onCreate().onDestory().onStart().onStop() 等这些生命周期方法,但却不是所有人都会去关注到 onAttachXXX( ...