shell,Linux,network,system,http,web

编译安装haproxy-1.8.20

HAProxy是TCP / HTTP反向代理服务器,尤其适合于高可用性高并发环境

  • 可以针对HTTP请求添加cookie,进行路由后端服务器
  • 可平衡负载至后端服务器,并支持持久连接
  • 支持基于cookie进行调度
  • 支持所有主服务器故障切换至备用服务器
  • 支持专用端口实现监控服务
  • 支持不影响现有连接情况下停止接受新连接请求
  • 可以在双向添加,修改或删除HTTP报文首部
  • 支持基于pattern实现连接请求的访问控制
  • 通过特定的URI为授权用户提供详细的状态信息
  • 1.8版本支持多线程,HTTP/2缓存等等

获取源码

wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.20.tar.gz

编译安装

  • 准备编译环境
yum install -y gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zip unzip zlib-devel
  • 编译
tar xf haproxy-1.8.20.tar.gz
cd haproxy-1.8.20
make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy

编译选项

  • ARCH: 目标平台架构
  • TARGET: 目标操作系统内核版本
  • USE_PCRE: 开启支持正则
  • USE_OPENSSL: 支持SSL
  • USE_ZLIB: 支持压缩
  • USE_SYSTEMD: 支持使用systemd对其进行管理
  • USE_CPU_AFFINITY: 启用CPU亲和性
  • PREFIX: 安装目标
  • 安装
make install PREFIX=/usr/local/haproxy

配置haproxy

  • 将二进制程序复制到PATH搜索路劲中
cp haproxy /usr/sbin/
  • 创建服务启动脚本
cat <<EOF | tee /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 /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
EOF
  • 创建haproxy用户
groupadd -g 88 -r haproxy
useradd -g haproxy -u 88 -r -s /sbin/nologin haproxy
  • 配置
mkdir /etc/haproxy
mkdir /var/lib/haproxy
chown haproxy.haproxy /var/lib/haproxy/ -R
cat <<EOF | tee /etc/haproxy/haproxy.cfg
global
    maxconn 100000
    chroot /usr/local/haproxy
    #stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
    uid 88
    gid 88
    daemon
    nbproc 4
    cpu-map 1 0
    cpu-map 2 1
    cpu-map 3 2
    cpu-map 4 3
    pidfile /usr/local/haproxy/run/haproxy.pid
    log 127.0.0.1 local3 info

defaults
    option http-keep-alive
    option  forwardfor
    maxconn 100000
    mode http
    timeout connect 300000ms
    timeout client  300000ms
    timeout server  300000ms

listen stats
    mode http
    bind 0.0.0.0:8000
    stats enable
    log global
    stats uri     /haproxy-status
    stats auth    admin:123456

listen  web_port
    bind 0.0.0.0:80
    mode http
    log global
    server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5
EOF

验证

  • 启动并验证haproxy
systemctl daemon-reload
systemctl start haproxy
ps -ef | grep haproxy
root      17754      1  0 11:54 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy   17757  17754  0 11:54 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy   17758  17754  0 11:54 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy   17759  17754  0 11:54 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy   17760  17754  0 11:54 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
  • 访问haproxy状态页
http://172.20.35.181:8000/haproxy-status

<center></center>

参考

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.