赞
踩
wget -c https://repo.huaweicloud.com/haproxy/2.4/src/haproxy-2.4.8.tar.gz
yum install -y gcc gcc-c++ make
curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz
tar zxf lua-5.4.4.tar.gz -C /usr/local/src/
cd /usr/local/src/lua-5.4.4
make linux test
cp /usr/local/src/lua-5.4.4/src/lua /usr/bin/lua
lua -v
tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
cd /usr/local/src/haproxy-2.4.8
yum install openssl-devel pcre-devel systemd-devel -y
make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.4/src/ LUA_LIB=/usr/local/src/lua-5.4.4/src/
make install PREFIX=/usr/local/haproxy
tree /usr/local/haproxy/
ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
haproxy -v
vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /usr/local/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
可以配置文件示例中复制,配置文件示例位置:/usr/local/src/haproxy-2.4.8/examples/
mkdir /etc/haproxy vim /etc/haproxy/haproxy.cfg global ##全局配置 maxconn 10000 stats socket /var/run/haproxy.stat mode 600 level admin log 127.0.0.1 local2 info user haproxy ##指定用户 group haproxy ##指定组 chroot /usr/local/haproxy ##服务工作目录 daemon ##开启保护进程 defaults ##默认配置 mode http option httplog log global timeout client 1m timeout server 1m timeout connect 10s timeout http-keep-alive 2m timeout queue 15s timeout tunnel 4h # for websocket default-server inter 1000 weight 3 listen app1 ##此部分是前端部分和后端部分的结合 bind :80 ##监听的端口 log global server web1 172.25.10.120:80 check ##后端的真实服务器地址 server web2 172.25.10.130:80 check ##后端的真实服务器地址 listen stats #配置监听页面 mode http bind :9999 ##使用9999端口 stats enable log global stats uri /haproxy-status stats auth haadmin:123456 ##指定登录监听页面的用户是haadmin,密码是123456
useradd -r -s /sbin/nologin -d /usr/local/haproxy/ haproxy
systemctl start haproxy.service
记得关闭防火墙
RS1:echo "`hostname -I`,web test page" > /var/www/html/index.html
RS2: echo "`hostname -I`,web test page" > /var/www/html/index.html
systemctl start httpd
http://172.25.10.110:9999/haproxy-status
#在global配置项定义:
log 127.0.0.1 local{1-7} info #基于syslog记录日志到指定设备,级别有(err、warning、info、debug)
listen app1
bind :80
log global
mode http
server web1 172.25.10.120:80 check inter 3000 fall 3 rise 5
server web2 172.25.10.130:80 check inter 3000 fall 3 rise 5
# systemctl restart haproxy
vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
......
# Save haproxy messages also to haproxy.log
local2.* /var/log/haproxy.log
......
# systemctl restart rsyslog
重启syslog服务并访问app页面,然后验证是否生成日志
tail -f /var/log/haproxy.log
由于HAProy可以工作在七层模型下,因此,要实现 HAProxy的强大功能,一定要使用强大灵活的ACL规则,通过ACL规则可以实现基于HAProy的智能负载均衡功能。HARroxy 通过ACL 规则完成两种主要的功能,分别是∶
1)通过设置的ACL规则检查客户端请求是否合法。如果符合ACL规则要求,那么就将放行,反正,如果不符合规则,则直接中断请求。
2)符合ACL 规则要求的请求将被提交到后端的backend 服务器集群,进而实现基于ACL 规则的负载均衡
mkdir /etc/haproxy/conf.d/ vim /etc/haproxy/conf.d/test.cfg frontend openlab_http_port bind :88 mode http balance roundrobin log global option httplog ###################### acl setting ############################### acl pc_domain hdr_dom(host) -i www.openlab.org acl mobile_domain hdr_dom(host) -i mobile.openlab.org ###################### acl hosts ################################# use_backend pc_hosts if pc_domain use_backend mobile_hosts if mobile_domain default_backend pc_hosts ###################### backend hosts ############################# backend mobile_hosts mode http server w1 172.25.10.120:80 check inter 2000 fall 3 rise 5 backend pc_hosts mode http server w2 172.25.10.130:80 check inter 2000 fall 3 rise 5 vim /etc/hosts 172.25.10.110 mobile.openlab.org www.openlab.org openlab.org
配置文件
vim /etc/haproxy/conf.d/test.cfg frontend openlab_http_port bind :88 mode http balance roundrobin log global option httplog ###################### acl setting ############################### acl acl_static path_beg -i /static /images /javascript acl acl_static path_end -i .jpg .jpeg .png .gif .css.js ###################### acl hosts ################################# use_backend static_hosts if acl_static default_backend app_hosts ###################### backend hosts ############################# backend mobile_hosts mode http server w1 172.25.10.120:80 check inter 2000 fall 3 rise 5 backend pc_hosts mode http server w2 172.25.10.130:80 check inter 2000 fall 3 rise 5
创建相关文件
mkdir /var/www/html/static
echo "`hostname -I`" > /var/www/html/static/test.html
测试访问
curl 172.25.10.110/static/test.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。