配置示例:

backend htmpool
mode http
option redispatch
option abortonclose
balance static-rr
cookie SESSION_COOKIE insert indirect nocache
option httpchk GET /index.jsp
server 237server 192.168.81.237: cookie server1 weight check inter rise fall
server iivey234 192.168.81.234: cookie server2 weight check inter rise fall

这个部分通过backend 关键字定义了一个名为“htmpool”的后端真实服务器组。下面介绍每个选项的含义。

option redispatch:此参数用于cookie 保持的环境中。在默认情况下,HAProxy会将其请求的后端服务器的serverID 插入到cookie 中,以保证会话的SESSION持久性。而如果后端的服务器出现故障,客户端的cookie 是不会刷新的,这就出现了问题。此时,如果设置此参数,就会将客户的请求强制定向到另外一个健康的后端服务器上,以保证服务的正常。

option abortonclose:如果设置了此参数,可以在服务器负载很高的情况下,自动结束掉当前队列中处理时间比较长的链接。

balance:此关键字用来定义负载均衡算法。目前HAProxy 支持多种负载均衡算法,常用的有如下几种:

roundrobin:是基于权重进行轮询调度的算法,在服务器的性能分布比较均匀的时候,这是一种最公平、最合理的算法。此算法经常使用。

static-rr:也是基于权重进行轮询的调度算法,不过此算法为静态方法,在运行时调整其服务器权重不会生效。

source:是基于请求源IP 的算法。此算法先对请求的源IP 进行hash 运算,然后将结果与后端服务器的权重总数相除后转发至某个匹配的后端服务器。这种方式可以使同一个客户端IP 的请求始终被转发到某特定的后端服务器。

leastconn:此算法会将新的连接请求转发到具有最少连接数目的后端服务器。在会话时间较长的场景中推荐使用此算法,例如数据库负载均衡等。此算法不适合会话较短的环境中,例如基于HTTP 的应用。

uri:此算法会对部分或整个URI 进行hash 运算,再经过与服务器的总权重相除,最后转发到某台匹配的后端服务器上。

uri_param : 此算法会根据URL 路径中的参数进行转发,这样可保证在后端真实服务器数量不变时,同一个用户的请求始终分发到同一台机器上。

hdr(<name>) : 此算法根据http 头进行转发,如果指定的http 头名称不存在,则使用roundrobin 算法进行策略转发。

cookie:表示允许向cookie 插入SESSION_COOKIE,每台服务器的SERVERID 可在下面的server 关键字中使用cookie 关键字定义。

option httpchk:此选项表示启用HTTP 的服务状态检测功能。HAProxy 作为一款专业的负载均衡器,它支持对backend 部分指定的后端服务节点的健康检查,以保证在后端backend 中某个节点不能服务时,把从frotend 端进来的客户端请求分配至backend 中其他健康节点上,从而保证整体服务的可用性。

  “optionhttpchk”的用法如下:

  option httpchk <method> <uri> <version>

    其中,各个参数的含义如下:

    method:表示HTTP 请求的方式,常用的有OPTIONS、GET、HEAD 几种方式。一般的健康检查可以采用HEAD 方式进行,而不是才采用GET 方式,这是因为HEAD 方式没有数据返回,仅检查Response 的HEAD 是不是200 状态。因此相对与GET 来说,HEAD 方式更快,更简单。

    uri:表示要检测的URL 地址,通过执行此URL,可以获取后端服务器的运行状态。在正常情况下将返回状态码200,返回其他状态码均为异常状态。

    version:指定心跳检测时的HTTP 的版本号。

server:这个关键字用来定义多个后端真实服务器,不能用于defaults 和frontend部分。

使用格式为:

server <name> <address>[:port] [param*]

其中,每个参数含义如下:

<name>:为后端真实服务器指定一个内部名称,随便定义一个即可。

<address>:后端真实服务器的IP 地址或主机名。

<port>:指定连接请求发往真实服务器时的目标端口。在未设定时,将使用客户端请求时的同一端口。

[param*]:为后端服务器设定的一系参数,可用参数非常多,这里仅介绍常用的一些参数:

check:表示启用对此后端服务器执行健康状态检查。

inter:设置健康状态检查的时间间隔,单位为毫秒。

rise:设置从故障状态转换至正常状态需要成功检查的次数,例如。“rise 2”表示2 次检查正确就认为此服务器可用。

fall:设置后端服务器从正常状态转换为不可用状态需要检查的次数,例如,“fall 3”表示3 次检查失败就认为此服务器不可用。

cookie:为指定的后端服务器设定cookie 值,此处指定的值将在请求入站时被检查,第一次为此值挑选的后端服务器将在后续的请求中一直被选中,其目的在于实现持久连接的功能。上面的“cookie server1”表示web1 的serverid 为server1。同理,“cookie server2”表示web2 的serverid 为server2。

weight:设置后端真实服务器的权重,默认为1,最大值为256。设置为0 表示不参与负载均衡。

backup:设置后端真实服务器的备份服务器,仅仅在后端所有真实服务器均不可用的情况下才启用。

haproxy 配置文件详解 之 backend的更多相关文章

  1. haproxy配置文件详解和ACL功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. haproxy 配置文件详解 之 frontend

    配置示例: frontend www bind *: mode http option httplog option forwardfor option httpclose log global #a ...

  3. haproxy 配置文件详解 之 综述

    HAProxy 配置文件根据功能和用途,主要有5 个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置. 1.global 部分 用来设定全局配置参数,属于进程级的配置,通常和操作系 ...

  4. 千万级高并发负载均衡软件haproxy配置文件详解

    balance roundrobin         #轮询方式 balance source               #将用户IP经过hash计算后,使同一IP地址的所有请求都发送到同一固定的后 ...

  5. haproxy配置文件详解--转

    原始出处:http://itnihao.blog.51cto.com/1741976/915537 #/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.c ...

  6. Haproxy配置文件详解

    #/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid` ################ ...

  7. haproxy 配置文件详解 之 WEB监控平台

    HAProxy 虽然实现了服务的故障转移,但是在主机或者服务出现故障的时候,并不能发出通知告知运维人员,这对于及时性要求很高的业务系统来说,是非常不便的,不过,HAProxy 似乎也考虑到了这一点,在 ...

  8. haproxy 配置文件详解 之 ACL 智能负载均衡

    由于HAProxy 可以工作在七层模型下, 因此,要实现 HAProxy 的强大功能,一定要使用强大灵活的ACL 规则,通过ACL 规则可以实现基于HAProxy 的智能负载均衡系统. HAProxy ...

  9. haproxy 配置文件详解 之 配置文件示例

    此示例文件在haproxy1.8.20 测试没有问题: global log 127.0.0.1 local0 info maxconn user nobody group nobody daemon ...

随机推荐

  1. scrapy Crawl_spider

    命令行输入:scrapy genspider --list 可以看到scrapy给我们提供的爬虫模板: basiccrawlcsvfeedxmlfeed 一般都是用默认模板生成的spider,如果需要 ...

  2. java自带日志框架打印info以下级别日志

    本文为CSDN博主「LanTingShuXu」的原创文章,原文链接:https://blog.csdn.net/LanTingShuXu/article/details/80528558 java.u ...

  3. 私钥、公钥与https

    HTTP的安全缺陷 通信内容不加密,导致被窃听 不验证客户端和服务端的身份,导致: 服务器伪装 响应返回到了其他的客户端 海量恶意连接 无法证明报文的完整性,导致:请求和响应内容被篡改,这称为中间人攻 ...

  4. oracle中如何生成awr【性能调优】报告

    1.进入数据库 sqlplus / as sysdba 2.查看用户 show parameter db_name 3.开始压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CR ...

  5. php服务端搜索,功能改进

    php中 ,一直以来,服务端搜索,我都是写一堆条件判断,搜索条件少时还好,条件一多,就显的代码有点丑陋了: 看着非常不舒服.今天在园子里看到一篇文章(http://www.cnblogs.com/xq ...

  6. Sublimetext3运行Python及python交互环境配置(便捷大法)

    1.首先安装Sublimetext3 安装路径保持默认,点击下一步直到安装完成. 2.安装Python 安装步骤参考百度:https://baijiahao.baidu.com/s?id=160657 ...

  7. 个人项目 python实现

    一.  github地址:https://github.com/zjh1234562/WC 二 . PSP表格 PSP2.1 Personal Software Process Stages 预估耗时 ...

  8. Java集合目录

    java集合学习(1):集合框架 java集合学习(2):Map和HashMap Java集合学习(4):HashTable Java集合学习(5):LinkedHashMap Java集合学习(6) ...

  9. poi坑点(springboot)

    工作上需要写了一个将数据库数据生成excel表的接口,在此过程中遇到了一些坑点,现在此纪录 PS:一部分可能是因为我没用明白 1. 样式问题 自动调整尽量不要使用,部分列留白过多,空列列宽过窄,可能是 ...

  10. Java枚举的用法和原理深入

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10843644.html 一:枚举的用法 1.定义和组织常量 在JDK1.5之前,我们定义常量都是:publi ...