haproxy实现负载均衡

一、实验准备

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

 

二、安装haproxy

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指定安装路径

haproxy实现负载均衡_第1张图片

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                #查看状态

三、编写脚本控制haproxy [ start | stop | restart ]

# 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

四、两台web服务器安装httpd

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,并关闭防火墙,在浏览器测试页面是否可以成功访问

haproxy实现负载均衡_第2张图片

haproxy实现负载均衡_第3张图片

五、测试

1、监控页面测试

在浏览器输入:http://192.168.148.130:8888/stats           其中192.168.148.130为haproxy的IP地址,8888为端口,/stats 为访问监控页面的上下文

haproxy实现负载均衡_第4张图片

2、负载均衡测试

在浏览器输入haproxyIP地址:192.168.148.130,点刷新会出现两个页面交替出现的现象,即为成功

haproxy实现负载均衡_第5张图片

haproxy实现负载均衡_第6张图片

你可能感兴趣的:(笔记)