1、haproxy 安装包:haproxy-1.7.8.tar.gz,下载地址:https://src.fedoraproject.org/repo/pkgs/haproxy/
2、主机准备
主机 | IP地址 |
haproxy | 192.168.148.130 |
websercer1 | 192.168.148.136 |
webserver2 | 192.168.148.134 |
1、安装依赖包:
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
2、将下载下来的安装包上传到/usr/local/src/目录下并解压
# cd /usr/local/src/
# rz
# tar -zxvf haproxy-1.7.8.tar.gz #解压
# mv haproxy-1.7.8 haproxy #重命名
3、安装
# cd /usr/local/src/haproxy
# make TARGET=linux26 #此处需要指定TARGET参数才可安装,后面具体的值请参照下图,具体可查询解压/usr/local/src/haproxy/README文件
# make install PREFIX=/usr/local/haproxy #PREFIX指定安装路径
4、修改配置文件(默认不存在,得自己新建)
# vim /usr/local/haproxy/etc/haproxy.cfg
global
log 127.0.0.1 local2
maxconn 51200
chroot /usr/local/haproxy
uid 99
gid 99
daemon
#quiet
nbproc 1 #进程数
pidfile /usr/local/haproxy/logs/haproxy.pid #需要在安装路径下新建logs目录
defaults
mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
#retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option httplog
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms #服务器超时
#timeout check 2000 #=心跳检测超时
log global
#log 127.0.0.1 local0 err #[err warning info debug]
balance roundrobin #负载均衡算法
# option httplog #日志类别,采用httplog
# option httpclose #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
# option dontlognull
# option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
listen admin_stats #配置后台管理页面
bind 0.0.0.0:8888 #监听端口
option httplog #采用http日志格式
log global
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
#stats hide-version #隐藏统计页面上HAProxy的版本信息
listen test
bind *:80
option httpclose
option forwardfor
server s1 192.168.148.134:80 check weight 1 minconn 1 maxconn 3 check inter 40000
server s2 192.168.148.136:80 check weight 1 minconn 1 maxconn 3 check inter 40000
5、配置日志及新建pid存放的目录
# vim /etc/rsyslog.conf
$ModLoad imudp # 取消这两句注释,否则不能收到日志信息
$UDPServerRun 514
local2.* /var/log/haproxy.log # 将日志记录到该地
# mkdir /usr/local/haproxy/logs
6、启动
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg 启动
# ps -ef |grep haproxy #查看状态
# vim /etc/init.d/haproxy
#!/bin/bash
BASE_DIR="/usr/local/haproxy"
ARGV="$@"
start()
{
echo "start haproxy service"
$BASE_DIR/sbin/haproxy -f $BASE_DIR/etc/haproxy.cfg
}
stop()
{
echo "stop haproxy listen"
kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)
echo "stop haproxy process"
kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)
}
case $ARGV in
start)
start
ERROR=$?
;;
stop)
stop
ERROR=$?
;;
restart)
stop
start
ERROR=$?
;;
*)
echo "hactl.sh [start|restart|stop]"
esac
exit $ERROR
赋予脚本执行权限即可使用service haproxy [start | stop | restart]
# chmod 755 /etc/init.d/haproxy
1、两台服务器均安装httpd
# yum -y install httpd
2、书写不同的html页面以便区分
192.168.148.136(web服务器1):
# vim /var/www/html/index.html
1111
192.169.148.134(web服务器2):
# vim /var/www/html/index.html
2222
3、两台服务器均启动httpd,并关闭防火墙,在浏览器测试页面是否可以成功访问
在浏览器输入:http://192.168.148.130:8888/stats 其中192.168.148.130为haproxy的IP地址,8888为端口,/stats 为访问监控页面的上下文
2、负载均衡测试
在浏览器输入haproxyIP地址:192.168.148.130,点刷新会出现两个页面交替出现的现象,即为成功