当前位置:   article > 正文

源码编译安装haproxy2.4.8,配置服务启动脚本,实现web负载均衡,配置日志,实现智能负载均衡_haproxy2.8 系统服务脚本

haproxy2.8 系统服务脚本

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

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

1. 下载Haproxy源码包:

wget -c https://repo.huaweicloud.com/haproxy/2.4/src/haproxy-2.4.8.tar.gz

2. 下载源码编译工具:

yum install -y gcc gcc-c++ make

3. 下载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
  • 1
  • 2
  • 3
  • 4

4. 查看lua版本信息:

cp /usr/local/src/lua-5.4.4/src/lua /usr/bin/lua
    
lua -v
  • 1
  • 2
  • 3

5. 解压Haproxy源码包:

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

6. 安装编译时需要的依赖包

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

7. 编译安装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
  • 1
  • 2
  • 3

8. 查看haproxy的目录结构

tree /usr/local/haproxy/
  • 1

在这里插入图片描述

9. 对/usr/local/haproxy/sbin/haproxy做软连接:

ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy

10. 查看haproxy版本信息:

haproxy -v
在这里插入图片描述

11. 为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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

12. 创建haproxy服务的配置文件:

可以配置文件示例中复制,配置文件示例位置:/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

13. 创建用户和组:

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

14. 启动haproxy服务:

systemctl start haproxy.service

15. 在后端两台真实服务器上创建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
  • 1
  • 2
  • 3
  • 4
  • 5

16. 测试haproxy是否实验负载均衡:

在这里插入图片描述

17. 查看haproxy的状态页面

http://172.25.10.110:9999/haproxy-status
在这里插入图片描述
在这里插入图片描述

3. 配置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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Rsyslog配置

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

验证HAProxy日志

重启syslog服务并访问app页面,然后验证是否生成日志
tail -f /var/log/haproxy.log
在这里插入图片描述

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

由于HAProy可以工作在七层模型下,因此,要实现 HAProxy的强大功能,一定要使用强大灵活的ACL规则,通过ACL规则可以实现基于HAProy的智能负载均衡功能。HARroxy 通过ACL 规则完成两种主要的功能,分别是∶

1)通过设置的ACL规则检查客户端请求是否合法。如果符合ACL规则要求,那么就将放行,反正,如果不符合规则,则直接中断请求。

2)符合ACL 规则要求的请求将被提交到后端的backend 服务器集群,进而实现基于ACL 规则的负载均衡

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

在这里插入图片描述

ACL-匹配访问路径实现动静分离

配置文件

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

创建相关文件

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

测试访问
curl 172.25.10.110/static/test.html
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/261660
推荐阅读
相关标签
  

闽ICP备14008679号