编译安装HAProxy 2.0 LTS版本,官方源码包下载地址:http://www.haproxy.org/download/
系统:Centos 7.6
解决lua环境
LUA源码下载地址: https://www.lua.org/ftp/
HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,于1993年由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
应用场景
- 游戏开发
- 独立应用脚本
- Web 应用脚本
- 扩展和数据库插件,如MySQL Proxy
- 安全系统,如入侵检测系统
由于CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装HAProxy,过程如下:
查看现有的lua版本,如果版本太旧需要先更新lua
lua -v
安装基础命令及编译依赖环境
yum install gcc readline-devel
下载lua-5.4.4
cd /usr/local/src
wget --no-check-certificate https://www.lua.org/ftp/lua-5.4.4.tar.gz
解包
tar xvf lua-5.4.4.tar.gz
开始编译
make linux test
查看编译安装的版本
src/lua -v
mv /usr/bin/lua /usr/bin/lua.old
把旧版本移走,换成新的版本,我这里用了软连接
mv /usr/bin/lua /usr/bin/lua.old
ln -s /usr/local/src/lua-5.4.4/src/lua /usr/bin/lua
编译安装HAProxy
创建用户
useradd -r -s /sbin/nologin haproxy
安装依赖
yum -y install gcc openssl-devel pcre-devel systemd-devel
下载HAProxy源码包到/usr/local/src/(国内的VPS有可能无法下载,可以找台其他国家的VPS下了scp传过去)
cd /usr/local/src
wget http://www.haproxy.org/download/2.6/src/haproxy-2.6.6.tar.gz
解压缩后进入文件夹
tar xvf haproxy-2.6.6.tar.gz
cd haproxy-2.6.6/
查看安装方法,由于已经有Makefile文件了所以不用执行 “./configure”命令
ll Makefile
cat README
编译安装
make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=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=/apps/haproxy
查看编辑安装后的文件
tree /apps/haproxy
创建软链接
ln -s /apps/haproxy/sbin/haproxy /usr/bin/haproxy
验证安装的版本
haproxy -v
查看帮助
haproxy -V
创建service文件
编辑/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 -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
配置文件
创建配置文件目录
mkdir /etc/haproxy
创建socket文件目录
mkdir /var/lib/haproxy
编辑/etc/haproxy/haproxy.cfg (内容根据实际需求配置这里仅供参考)
global
maxconn 100000
chroot /apps/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
user haproxy
group haproxy
daemon
pidfile /var/lib/haproxy/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:9999
stats enable
log global
stats uri /haproxy-status
stats auth haadmin:123456
listen web_port
bind :80
mode http
log global
server web1 131.186.22.232:80 check inter 3000 fall 2 rise 5
server web2 146.56.38.151:80 check inter 3000 fall 2 rise 5
启动HAProxy
检查配置文件语法
[22:31:47 root@VM-4-3-centos ~]#haproxy -f /etc/haproxy/haproxy.cfg -c
Configuration file is valid
加载service文件,启动服务
systemctl daemon-reload
systemctl start haproxy
最后用浏览器查看haproxy的状态页面
浏览器访问:
http://服务器IP:9999/haproxy-status