haproxy下载地址
haproxy安装:
#解压haproxy-1.9.0.tar.gz
tar -zxvf haproxy-1.9.0.tar.gz
ls -l
-rw-r--r--. 1 root root 2339568 Dec 22 10:10 haproxy-1.9.0.tar.gz
drwxrwxr-x. 11 root root 4096 Dec 20 2018 haproxy-1.9.0
#安装依赖
yum -y install make gcc gcc-c++ openssl-devel
#查看内核版本
uname -r
3.10.0-693.el7.x86_64
#指定操作系统内核类型和安装的路径。也可以直接修改Makefile配置文件中这两个变量的值。如下:
make TARGET=linux2628 PREFIX=/usr/local/haproxy
#修改Makefile配置文件
vi haproxy-1.9.0/Makefile
PREFIX = /usr/local/haproxy
TARGET =linux26
#编译 如果没有修改Makefile配置文件中PREFIX变量的值,就必须在此重新对,PREFIX=/usr/local/haproxy赋值,否则直接执行 make install 时,make install会直接读取Makefile文件中PREFIX的变量值。
make install PREFIX=/usr/local/haproxy
#查看是否生成配置文件
ls /usr/local/haproxy/
#没有生成配置文件,自己手动写一个HAproxy配置文件
mkdir /usr/local/haproxy/etc
#创建日志文件夹
mkdir /usr/local/haproxy/run
#手动创建配置文件 如下
vim /usr/local/haproxy/etc/haproxy.cfg
haproxy.cfg 配置文件
global
log 127.0.0.1 local3
maxconn 20480
chroot /usr/local/haproxy
uid 1004 #1004为haproxy 用户的uid ,haproxy用户需要自己手动创建
gid 1004 #所属运行的用户组
daemon #以后台形式运行haproxy
quiet #安静
nbproc 1 #启动1个haproxy实例。作进程数量(CPU数量) ,实际工作中,应该设置成和CPU核心数一样。 这样可以发挥出最大的性能。
pidfile /var/run/haproxy.pid #将所有进程写入pid文件
#debug #调试错误时用
defaults
log global
mode http #工作模式,所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
maxconn 20480 #最大连接数
option httplog #日志类别,记载http日志
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
option http-pretend-keepalive
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option dontlognull #不记录空连接,产生的日志
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
retries 3 #重试
balance roundrobin #负载均衡算法
# balance url_param userid
stats uri /haproxy-stats #haproxy 监控页面的访问地址
contimeout 5000 #连接超时时间。 单位:ms 毫秒
clitimeout 86400000 #客户端连接超时时间
srvtimeout 86400000 #服务器端连接超时时间
listen http_queue
bind *:10535
mode http
http-request set-header http_req yes #自定义header 头信息
balance roundrobin
option httplog
option dontlognull
option logasap
option forwardfor
option httpclose
option http-pretend-keepalive
server http_queue1 192.168.15.56:10535 cookie 1 check inter 2000 rise 3 fall 3
haproxy负载策略
① roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
② static-rr,表示根据权重,建议关注;
③ leastconn,表示最少连接者先处理,建议关注;
④ source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
⑤ ri,表示根据请求的URI;
⑥ rl_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name;
⑦ hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
⑧ rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
启停命令
#启动haproxy指定配置文件
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
#查看状态:
ps -axu | grep haproxy
netstat -antup | grep 80
#停止haproxy
killall haproxy
haproxy web UI