haproxy下载地址

Haproxy 下载地址1haproxy 下载地址2

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

http://ip:port/haproxy-statshaproxy 源IP透传 haproxy tcp_配置文件