赞
踩
1. 源码编译安装haproxy 2.x,配置服务启动脚本。
4. 通过haproxy的acl规则实现智能负载均衡(动静分离)。
haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用、负载均衡,以及基于TCP和HTTP的应用程序代理。haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
下载Haproxy源码包
wget -c https://repo.huaweicloud.com/haproxy/2.4/src/haproxy-2.4.8.tar.gz
下载源码编译工具
yum install -y gcc gcc-c++ make
下载Haproxy依赖包lua并编译安装
- 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
查看lua版本信息
- tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
- cd /usr/local/src/haproxy-2.4.8
解压Haproxy源码包
- 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
编译安装Haproxy
- 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
查看haproxy的目录结构
tree /usr/local/haproxy/
对/usr/local/haproxy/sbin/haproxy做软连接
haproxy -v
为haproxy服务配置启动脚本
- 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
查看haproxy状态
- systemctl daemon-reload
- systemctl start haproxy
HAProxy配置
- #在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
Rsyslog配置
- vim /etc/rsyslog.conf
- $ModLoad imudp
- $UDPServerRun 514
- ......
- # Save haproxy messages also to haproxy.log
- local2.* /var/log/haproxy.log
- ......
- # systemctl restart rsyslog
验证HAProxy日志
- 重启syslog服务并访问app页面,然后验证是否生成日志
- tail -f /var/log/haproxy.log
创建haproxy服务的配置文件
- 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
在后端两台真实服务器上创建web页面,并开启apache服务
- 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
测试haproxy是否实验负载均衡
查看haproxy的状态页面
http://172.25.10.110:9999/haproxy-status
配置文件
- 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 版权所有,并保留所有权利。