HAProxy安装
1. apt 安装
ubuntu可以使用apt 安装,默认版本较低
root@z1:~# apt install haproxy
root@z1:~# haproxy -v
HA-Proxy version 1.8.8-1ubuntu0.9 2019/12/02
Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>
安装较新版本, 查看官网文档
root@z1:~# apt-get install software-properties-common
root@z1:~# add-apt-repository ppa:vbernat/haproxy-2.0
root@z1:~# apt update
root@z1:~# apt-cache madison haproxy
root@z1:~# apt install haproxy=2.0.13-1ppa1~bionic
root@z1:~# haproxy -v
HA-Proxy version 2.0.13-1ppa1~bionic 2020/02/15 - https://haproxy.org/
通过包管理工具安装较新的版本,使用第三方源
记住网址 https://pkgs.org/ ,直接收搜索即可,展开下面的操作系统就可以看见了
2. 编译安装(ubuntu)
编译安装HAProxy 2.0 LTS版本, 首页的那个表就可以下载 更多源码包下载地址:http://www.haproxy.org/download/
编译之前先看一下readme 和 INTSTALL 里面介绍了编译的环境要求和如何安装
root@z1:/usr/local/src# tar xf haproxy-2.0.13.tar.gz
root@z1:/usr/local/src# cat haproxy-2.0.13/INSTALL
GNU make >= 3.80
GCC >= 3.4
On debian or Ubuntu 或许下面两条命令用的到
sudo apt-get update
sudo apt-get install build-essentialDependencies
-lua
2.1 解决lua环境
HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,于1993年由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 应用场景
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件,如MySQL Proxy
安全系统,如入侵检测系统
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test
如果遇到下面这个错误 ,缺包
lua.c:82:10: fatal error: readline/readline.h: No such file or directory
#include <readline/readline.h>
apt install libreadline-dev
验证:
root@z1:/usr/local/src/lua-5.3.5/src# ./lua -v
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
2.2 编译安装haproxy
准备编译环境
apt install make gcc build-essential libssl-dev zlib1g-dev libpcre3 libpcre3-dev libsystemd-dev libreadline-dev -y
make
#HAProxy 1.8及1.9版本编译参数:
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
#HAProxy 2.0编译参数:
# make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src/ LUA_LIB=/usr/local/src/lua-5.3.5/src/ PREFIX=/usr/local/haproxy
make install
make install PREFIX=/usr/local/haproxy
2.3 验证haproxy 版本
root@z1:~# /usr/local/haproxy/sbin/haproxy -v
HA-Proxy version 2.0.13 2020/02/13 - https://haproxy.org/
2.4:HAProxy启动脚本:
root@z1:~# ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
'/usr/sbin/haproxy' -> '/usr/local/haproxy/sbin/haproxy'
root@z1:~# cat /lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=network.target rsyslog.service
[Service]
EnvironmentFile=-/etc/default/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/var/lib/haproxy/haproxy.pid" "EXTRAOPTS=-S /run/haproxy-master.sock"
ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS
ExecStart=/usr/sbin/haproxy -Ws -f $CONFIG -p $PIDFILE $EXTRAOPTS
ExecReload=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
Type=notify
[Install]
WantedBy=multi-user.target
注意: execpre 和 execstart添加 -f /etc/haproxy/conf ,实现include 功能 ,可以分离多个配置文件
2.5 配置文件
root@z1:~# cat /etc/haproxy/haproxy.cfg
global
maxconn 100000
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 65534
gid 65534
daemon
pidfile /var/lib/haproxy/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:9999
stats uri /status
stats auth admin:123456
stats realm "Welcome to the haproxy load balancer status page "
stats admin if TRUE
stats refresh 5s
2.5 启动haproxy proxy
root@z1:~# mkdir /var/lib/haproxy
root@z1:~# chown 65534.65534 /var/lib/haproxy/ -R (使用nobody 登录)
root@z1:~# systemctl enable haproxy
root@z1:~# systemctl start haproxy
2.6 验证haproxy状态
已经运行
状态页也可以访问