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已生成