haproxy负载均衡
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy负载均衡相关的知识,希望对你有一定的参考价值。
环境:
Ha主机:192.168.10.33
backend主机1:192.168.10.35
backend主机2:192.168.10.38
客户端:192.168.10.184
一.调度方式:
roundrobin:轮询调度
static-rr:静态轮询,当更改权重或者其他配置,必须要重新加载服务才能生效
leastconn:最少连接调度。
source:基于IP的hash调度。对于同一个源端将会调度到同一台后端服务器
uri:基于URL的HASH调度。对于同一个URL将会调度到同一台后端服务器
url_param:基于URL中的参数进行hash调度。
hdr_param:基于header中的参数进行hash调度。
二.配置:/etc/haproxy/haproxy.cfg
global #全局定义
log 127.0.0.1 local0 #日志输出位置
chroot /usr/local/haproxy #定义chroot目录,有助于安全
daemon #指定为守护进程
maxconn 4096 #定义单进程最大连接数
nbproc 2 #定义haproxy进程数<=设备的总核数
pidfile /usr/local/haproxy/run/haproxy.pid#定义pid文件,一般可缺省
defaults #定义默认配置
log global #引用全局定义的日志
mode http #定义使用http模式
option abortonclose #丢弃由于客户端等待时间过长而关闭连接但仍在haproxy等待队列中的请求
option forwardfor #是否记录x-for地址,用于记录实际的客户端IP
option httplog #定义记录HTTP日志
retry 3 #当3次连接失败判定服务器不可用
option redispatch #当后端某台设备不可用时,将原本调度到该(故障)设备的请求强制重定向到其他正常设备
timeout http request 2000 #在客户端建立连接但不请求数据时,关闭客户端连接
timeout queue 5000#等待最大时长
timeout connect 3000 #定义haproxy将请求转发到后端服务器所等待的超时时间
timeout client 5000 #客户端非活动状态的超时时长
frontend web #前端定义
bind *:80 #监听端口
option httpclose
default_backend webgroup #前端的请求默认调度到后端的webgroup组
backend webgroup #后端定义
balance uri #uri调度
option httpchk HEAD / HTTP/1.1 \r\nHost:www.baidu.com #HEAD检测
server servername_one 192.168.10.35:80 weight 1 check inter 5000 rise 3 fall 1
server servername_two 192.168.10.38:80 weight 1 check inter 5000 rise 3 fall 1
#inter 5000 //间隔5000毫秒检测一次
#rise 3 //Ha对处于故障的设备重新成功检测3次后才会将服务器置为可用
#fall 1 //Ha对后端的设备探测只要失败1次立马置为不可用
listen admin_stats #listen是frontend、backend的结合,本处用于设定管理界面
bind *:10086
stats enable #开启haproxy统计状态
stats hide-version #隐藏版本信息
stats refresh 3 #定义页面刷新时间(秒)
stats uri /admin #定义平台地址
stats realm welcome to haproxy admin #定义提示信息
stats auth admin:admin #定义用户信息
stats admin TRUE #当用户信息正常时启用stats
三.测试
(1).检测Ha对后端服务器的check。
(2).检测资源调度
<1>.客户端做HOST绑定相应域名到HA地址,并在浏览器访问域名
<2>.检测后端服务器是否接收到请求
以上是关于haproxy负载均衡的主要内容,如果未能解决你的问题,请参考以下文章