当前位置:   article > 正文

零基础认识haproxy,手把手教你配置haproxy_haproxy配置

haproxy配置

1. 源码编译安装haproxy 2.x,配置服务启动脚本。

2. 配置haproxy日志。

3. 配置haproxy实现web服务器负载均衡。

4. 通过haproxy的acl规则实现智能负载均衡(动静分离)。


haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用、负载均衡,以及基于TCP和HTTP的应用程序代理。haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

1. 源码编译安装haproxy 2.x,配置服务启动脚本。

下载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并编译安装

  1. curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz
  2. tar zxf lua-5.4.4.tar.gz -C /usr/local/src/
  3. cd /usr/local/src/lua-5.4.4
  4. make linux test

查看lua版本信息

  1. tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
  2. cd /usr/local/src/haproxy-2.4.8

解压Haproxy源码包

  1. tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
  2. cd /usr/local/src/haproxy-2.4.8

安装编译时需要的依赖包

yum install openssl-devel pcre-devel systemd-devel -y

编译安装Haproxy

  1. 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/
  2. make install PREFIX=/usr/local/haproxy

 查看haproxy的目录结构

tree /usr/local/haproxy/

对/usr/local/haproxy/sbin/haproxy做软连接

haproxy -v

为haproxy服务配置启动脚本 

  1. vim /usr/lib/systemd/system/haproxy.service
  2. [Unit]
  3. Description=HAProxy Load Balancer
  4. After=syslog.target network.target
  5. [Service]
  6. ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
  7. ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /usr/local/haproxy/haproxy.pid
  8. ExecReload=/bin/kill -USR2 $MAINPID
  9. [Install]
  10. WantedBy=multi-user.target

查看haproxy状态

  1. systemctl daemon-reload
  2. systemctl start haproxy

2. 配置haproxy日志。

HAProxy配置

  1. #在global配置项定义:
  2. log 127.0.0.1 local{1-7} info #基于syslog记录日志到指定设备,级别有(err、warning、info、debug)
  3. listen app1
  4. bind :80
  5. log global
  6. mode http
  7. server web1 172.25.10.120:80 check inter 3000 fall 3 rise 5
  8. server web2 172.25.10.130:80 check inter 3000 fall 3 rise 5
  9. # systemctl restart haproxy

Rsyslog配置 

  1. vim /etc/rsyslog.conf
  2. $ModLoad imudp
  3. $UDPServerRun 514
  4. ......
  5. # Save haproxy messages also to haproxy.log
  6. local2.* /var/log/haproxy.log
  7. ......
  8. # systemctl restart rsyslog

验证HAProxy日志

  1. 重启syslog服务并访问app页面,然后验证是否生成日志
  2. tail -f /var/log/haproxy.log

3. 配置haproxy实现web服务器负载均衡。

创建haproxy服务的配置文件

  1. mkdir /etc/haproxy
  2. vim /etc/haproxy/haproxy.cfg
  3. global ##全局配置
  4. maxconn 10000
  5. stats socket /var/run/haproxy.stat mode 600 level admin
  6. log 127.0.0.1 local2 info
  7. user haproxy ##指定用户
  8. group haproxy ##指定组
  9. chroot /usr/local/haproxy ##服务工作目录
  10. daemon ##开启保护进程
  11. defaults ##默认配置
  12. mode http
  13. option httplog
  14. log global
  15. timeout client 1m
  16. timeout server 1m
  17. timeout connect 10s
  18. timeout http-keep-alive 2m
  19. timeout queue 15s
  20. timeout tunnel 4h # for websocket
  21. default-server inter 1000 weight 3
  22. listen app1 ##此部分是前端部分和后端部分的结合
  23. bind :80 ##监听的端口
  24. log global
  25. server web1 172.25.10.120:80 check ##后端的真实服务器地址
  26. server web2 172.25.10.130:80 check ##后端的真实服务器地址
  27. listen stats #配置监听页面
  28. mode http
  29. bind :9999 ##使用9999端口
  30. stats enable
  31. log global
  32. stats uri /haproxy-status
  33. stats auth haadmin:123456 ##指定登录监听页面的用户是haadmin,密码是123456

创建用户和组

useradd -r -s /sbin/nologin -d /usr/local/haproxy/ haproxy

启动haproxy服务

systemctl start haproxy.service

 在后端两台真实服务器上创建web页面,并开启apache服务

  1. RS1:echo "`hostname -I`,web test page" > /var/www/html/index.html
  2. RS2: echo "`hostname -I`,web test page" > /var/www/html/index.html
  3. systemctl start httpd

测试haproxy是否实验负载均衡 

查看haproxy的状态页面

http://172.25.10.110:9999/haproxy-status

4. 通过haproxy的acl规则实现智能负载均衡(动静分离)。

访问控制列表(ACL, Access Control Lists )是一种基于包过滤的访问控制技术,它可以根据设定的条 件对经过服务器传输的数据包进行过滤( 条件匹配 ) ,即对接收到的报文进行匹配和过滤,基于请求报文 头部中的源地址、源端口、目标地址、目标端口、请求方法、URL 、文件后缀等信息内容进行匹配并执 行进一步操作,比如允许其通过或丢弃。

配置文件

  1. vim /etc/haproxy/conf.d/test.cfg
  2. frontend openlab_http_port
  3. bind :88
  4. mode http
  5. balance roundrobin
  6. log global
  7. option httplog
  8. ###################### acl setting ###############################
  9. acl acl_static path_beg -i /static /images /javascript
  10. acl acl_static path_end -i .jpg .jpeg .png .gif .css.js
  11. ###################### acl hosts #################################
  12. use_backend static_hosts if acl_static
  13. default_backend app_hosts
  14. ###################### backend hosts #############################
  15. backend mobile_hosts
  16. mode http
  17. server w1 172.25.10.120:80 check inter 2000 fall 3 rise 5
  18. backend pc_hosts
  19. mode http
  20. server w2 172.25.10.130:80 check inter 2000 fall 3 rise 5

创建相关文件

  1. mkdir /var/www/html/static
  2. echo "`hostname -I`" > /var/www/html/static/test.html

测试访问

curl 172.25.10.110/static/test.html
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/303080
推荐阅读
相关标签
  

闽ICP备14008679号