haproxy配置安装,实现web服务器负载均衡

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

  1. 下载Haproxy源码包:

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

  1. 下载源码编译工具:

yum install -y gcc gcc-c++ make

  1. 下载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

4.查看lua版本信息:

复制代码
cp /usr/local/src/lua-5.4.4/src/lua /usr/bin/lua
    
lua -v

5. 解压Haproxy源码包:

复制代码
tar xf haproxy-2.4.8.tar.gz -C /usr/local/src/
 
cd /usr/local/src/haproxy-2.4.8

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

8. 查看haproxy的目录结构

复制代码
tree /usr/local/haproxy/

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

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

10. 查看haproxy版本信息:

haproxy -v

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

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. 创建用户和组:

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

  1. 启动haproxy服务:

systemctl start haproxy.service

  1. 在后端两台真实服务器上创建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

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

17. 查看haproxy的状态页面

http://172.25.10.110:9999/haproxy-status

二、配置haproxy日志

三、 配置haproxy实现web服务器负载均衡

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

相关推荐
Dontla9 小时前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh
Lonely 净土10 小时前
Rocky Linux 安装教程
linux·运维·服务器
光影少年10 小时前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
A 糖醋排骨11 小时前
grafana loki alloy轻量级日志采集
运维·grafana·loki
林间码客13 小时前
从DevOps到DevSecOps:构建现代软件交付的基石与护城河
大数据·运维·devsecops·devops
Lust Dusk14 小时前
记一次Linux应急响应题目解析
linux·运维·服务器·网络·安全·网络安全
凌肖战15 小时前
TCP网络通信中setsockopt()函数解决地址已占用问题
服务器·网络·tcp/ip
轻揉小乔 真新人16 小时前
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
运维·nginx·缓存
Yan_chen66616 小时前
SSH(Secure Shell)安全外壳协议详解
运维·网络协议·ssh
隔窗听雨眠16 小时前
OceanBase旁路导入与自增主键冲突深度解析:原理、排查与解决方案
java·服务器·数据库