编译安装HAProxy 2.8 LTS版本,官方源码包下载地址:http://www.haproxy.org/download/
由于CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装HAProxy。
1、查看现有的lua版本,如果版本太旧需要先更新lua
lua -v Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
2、安装基础命令及编译依赖环境
yum install gcc readline-devel
3、下载和编译lua-5.4.6
cd /usr/local/src wget --no-check-certificate https://www.lua.org/ftp/lua-5.4.6.tar.gz tar xvf lua-5.4.6.tar.gz
开始编译
cd lua-5.4.6 make linux test 查看编译安装的版本 src/lua -v Lua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio 把旧版本移走,换成新的版本 mv /usr/bin/lua /usr/bin/lua.old cp /usr/local/src/lua-5.4.6/src/lua /usr/bin/lua 确认现在的版本 lua -v Lua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio
4、安装Haproxy
创建用户 useradd -r -s /sbin/nologin haproxy
5、安装依赖
yum -y install gcc openssl-devel pcre-devel systemd-devel
6、下载和编译
wget --no-check-certificate https://www.haproxy.org/download/2.8/src/haproxy-2.8.9.tar.gz tar xvf haproxy-2.8.9.tar.gz cd haproxy-2.8.9/ make TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.6/src LUA_LIB=/usr/local/src/lua-5.4.6/src make install PREFIX=/etc/haproxy 创建软连接 ln -s /etc/haproxy/sbin/haproxy /usr/bin/haproxy www.zhangfangzhou.cn 查看版本 haproxy -v HAProxy version 2.8.9-1842fd0 2024/04/05 - https://haproxy.org/ Status: long-term supported branch - will stop receiving fixes around Q2 2028. Known bugs: http://www.haproxy.org/bugs/bugs-2.8.9.html Running on: Linux 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
7、创建配置文件
vi /etc/haproxy/haproxy.cfg global maxconn 100000 chroot /etc/haproxy stats socket /var/tmp/haproxy.sock mode 600 level admin user haproxy group haproxy daemon pidfile /var/tmp/haproxy.pid 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:3306 stats enable log global stats uri /haproxy-status stats auth haadmin:Admin@2018.. listen db_port bind :3306 mode tcp log global balance roundrobin option tcplog server db1 10.53.123.104:3306 check inter 3000 fall 2 rise 3 server db2 10.53.123.105:3306 check inter 3000 fall 2 rise 3 server db3 10.53.123.106:3306 check inter 3000 fall 2 rise 3
8、创建service服务
vi /usr/lib/systemd/system/haproxy.service [Unit] Description=HAProxy Load Balancer After=syslog.target network.target [Service] ExecStartPre=/usr/bin/haproxy -f /etc/haproxy/haproxy.cfg -c -q ExecStart=/usr/bin/haproxy -Ws -f /etc/haproxy/haproxy.cfg ExecReload=/bin/kill -USR2 $MAINPID LimitNOFILE=100000 [Install] WantedBy=multi-user.target
systemctl enable haproxy
systemctl start haproxy
9、设置监听脚本
vi ha_watchdog.sh #!/bin/bash #www.zhangfangzhou.cn # 定义日志文件路径 LOG_FILE="/var/log/haproxy_watchdog.log" # 定义 HAProxy 进程的名称 HAPROXY_PROCESS="haproxy" # 检查 HAProxy 进程是否在运行 check_haproxy_process() { # 使用 pgrep 命令检查是否存在名为 haproxy 的进程 pgrep -x $HAPROXY_PROCESS > /dev/null } # 启动 HAProxy 进程 start_haproxy() { echo "$(date +'%Y-%m-%d %H:%M:%S') - Starting HAProxy..." >> $LOG_FILE systemctl start haproxy } # 主循环 while true; do # 检查 HAProxy 进程是否在运行 if ! check_haproxy_process; then # 如果进程不存在,则重新启动 HAProxy 并记录日志 start_haproxy fi # 休眠一段时间后再次检查 sleep 60 done #设置开机启动 chmod +x ha_watchdog.sh vi /etc/rc.local nohup /root/ha_watchdog.sh &