CentOS7安装HAProxy2.4.3


https://src.fedoraproject.org/repo/pkgs/haproxy/ #下载haproxy包

yum install make gcc gcc-c++ openssl openssl-devel readline-devel pcre-devel systemd-devel zlib-devel -y  #安装haproxy、lua依赖
yum -y install pcre-static make perl -y #这个应该是不需要,如果make失败,可尝试运行
yum install build-essential libssl-dev zlib1g-dev libpcre3 libpcre3-dev -y #这个不需要

#下载并安装lua-5.3.5

wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar xvf lua-5.4.3.tar.gz
cp lua-5.4.3 /usr/local/lua-5.4.3 -r
cd /usr/local/lua-5.4.3
make linux test
/usr/local/lua.5.4.3/src/lua -v #显示lua版本即表示安装正确

#编译安装haproxy

cd /root/haproxy-2.4.3
make TARGET=linux-glic USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_DL=1 USE_LUA=1 LUA_INC=/usr/local/lua-5.4.3/src  LUA_LIB=/usr/local/lua-5.4.3/src PREFIX=/usr/local/haproxy  
#USE_DL表示允许系统自动寻找ldl依赖,否则会报错误“undefined reference to symbol 'dlclose@@GLIBC_2.2.5'”,cat Makefile,可以看到USE_DL参数,加上即可 make install PREFIX=/usr/local/haproxy ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy #添加软链接

安装完成后,添加haproxy服务,内容如下:

vim /usr/lib/systemd/system/haproxy.service

[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /usr/local/haproxy/sbin/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /usr/local/haproxy/sbin/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target

mkdir /var/lib/haproxy

systemctl start haproxy

参考:https://blog.csdn.net/studywinwin/article/details/104717662/

普通安装haproxy,没有支持lua

yum install make gcc gcc-c++ openssl openssl-devel -y
wget https://www.haproxy.org/download/2.4/src/haproxy-2.4.3.tar.gz
tar haproxy-2.4.3.tar.gz
make TARGET=linux-glic PREFIX=/srv/app/haproxy
make install PREFIX=/srv/app/haproxy
cat /usr/lib/systemd/system/haproxy.service

[Unit]
Description=HAProxy Load Balancer
After=network.target

[Service]
EnvironmentFile=-/srv/app/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/srv/app/haproxy/sbin/config/haproxy.cfg" "PIDFILE=/run/haproxy.pid" "EXTRAOPTS=-S /run/haproxy-master.sock"
ExecStartPre=/srv/app/haproxy/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS
ExecStart=/srv/app/haproxy/sbin/haproxy -W -f $CONFIG -p $PIDFILE $EXTRAOPTS
ExecReload=/srv/app/haproxy/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
Type=forking

[Install]
WantedBy=multi-user.target

haproxy.cfg内容如下:

global
    log 127.0.0.1 local0 info #开启日志记录
    daemon
    maxconn 1000

defaults
    log global
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http-in
    bind *:80
    mode http #使用http模式
    option httplog
    option forwardfor  #记录客户端真是IP,IIS安装F5 xforwardfor插件即可
    default_backend servers

backend servers
    mode http
    server ex1901 10.10.202.133:801 maxconn 1000

listen stats
#开启ha健康检查,访问:http://ip:8100/monitor
    bind *:8100
    mode http
    option httplog
    option dontlognull
    #option forwardfor
    stats enable
    stats auth admin:123
    stats uri /monitor
    stats refresh 5s

 参数解释:http://www.ttlsa.com/linux/haproxy-study-tutorial/

service haproxy status

修改配置文件后,热加载

ln -s /srv/app/haproxy/sbin/haproxy /usr/sbin/haproxy

haproxy -f /srv/app/haproxy/sbin/config/haproxy.cfg -p /run/haproxy.pid -sf $(cat /run/haproxy.pid)

配置haproxy日志:

vim /etc/rsyslog.conf,内容如下:

#haproxy的日志是用udp传输的,所以要启用rsyslog的udp监听
$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/haproxy.log

systemctl restart rsyslog

重启haproxy服务,可以看到haproxy.log已生成