文章目录
1.Haproxy 基本介绍
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。如果说在功能上,能以proxy反向代理方式实现 WEB均衡负载,这样的产品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke 等。
但要明确一点的,Haproxy并不是Http服务器。以上提到所有带反向代理均衡负载的产品,都清一色是WEB服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif…)或动态(php,cgi…)文件的传输以及处理。而Haproxy仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。
2.HAProxy的算法分类:
1. roundrobin,表示简单的轮询
2. static-rr,表示根据权重,
3. leastconn,表示最少连接者先处理,
4. source,表示根据请求源IP,
5. uri,表示根据请求的URI;
6. url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
7. hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
8. rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
3. Haproxy 编译安装
1. 编译安装
tar zxf haproxy-1.4.22.tar.gz
tar zxf keepalived-1.2.7.tar.gz
uname -r
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
2. cp模板文件
cp -ar examples /usr/local/haproxy/
rsync -arvz /usr/local/haproxy/share/man /usr/share/
cp -ar tests /usr/local/haproxy/
cp doc/configuration.txt /usr/local/haproxy/
rsync -arvz soft/haproxy-1.4.22/examples/errorfiles /usr/local/haproxy/
cp examples/haproxy.cfg /usr/local/haproxy/etc/
cp examples/haproxy.init /etc/init.d/haproxy
3. Init 脚本的配置,需要修改,在后面介绍
chmod a+x /etc/init.d/haproxy
chkconfig --add haproxy
4. selinux 的配置
#yum install selinux-policy-devel
#cd contrib/selinux/
#make -f /usr/share/selinux/devel/Makefile
#sudo semodule -i haproxy.pp
#restorecon /usr/sbin/haproxy /etc/haproxy/haproxy.cfg /var/run/haproxy.pid /var/run/haproxy.sock*
#mkdir /usr/local/haproxy/etc
4. 日志支持,接口和你自己定义的有关系
#vim /etc/syslog.conf
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log
#vim /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-r -m 0"
#service syslog restart
5. Haproxy的相关启动参数
# /usr/local/haproxy/sbin/haproxy –help
haproxy -f < 配置文件>
[-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p ] [-s] [-l] [-dk]
[-ds] [-de] [-dp] [-db] [-m < 内存限制M>] [{
-sf|-st} pidlist...]
-d 前台,debug模式
-D daemon模式启动
-q 安静模式,不输出信息
-V 详细模式
-c 对配置文件进行语法检查
-s 显示统计数据
-l 显示详细统计数据
-dk 不使用kqueue
-ds 不使用speculative epoll
-de 不使用epoll
-dp 不使用poll
-db 禁用后台模式,程序跑在前台
-sf 程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
-st 程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后
列:
# /usr/local/haproxy/sbin/haproxy -c -f /usr/local/haproxy/etc/haproxy.cfg # 对haproxy 语法做检查
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg -sf `cat /var/run/haproxy.pid` # reload
# killall haproxy 或者 kill -9 `pidof haproxy`
4.Haproxy 配置文件解说
# cat /usr/local/haproxy/etc/haproxy.cfg
####################全局配置信息#############参数是进程级的,通常和操作系统(OS)相关#########
global
maxconn 20480 #默认最大连接数
log 127.0.0.1 local3 #[err warning info debug]
chroot /usr/local/haproxy #chroot运行的路径
uid 99 #所属运行的用户uid
gid 99 #所属运行的用户组
daemon #以后台形式运行haproxy
nbproc 1 #进程数量(可以设置多个进程提高性能)
pidfile /var/run/haproxy.pid #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
ulimit-n 65535 #ulimit的数量限制
#####################默认的全局设置##############这些参数可以被利用配置到frontend,backend,listen组件##
defaults
log global
mode http #所处理的类别 (#7层 http;4层tcp )
maxconn 20480 #最大连接数
option httplog #日志类别http日志格式
option httpclose #每次请求完毕后主动关闭http通道
option dontlognull #不记录健康检查的日志信息
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option redis