Debian 安装 HAProxy

HAProxy 是一款老而弥坚的 TCP/HTTP 负载均衡,开发相当活跃。
本文将简单介绍 Debian 系统安装 HAProxy 的两种方式,即包管理与编译安装。
Ubuntu 用户也可以参考,没什么区别。

包管理安装

没有特殊需求可以直接通过包管理工具也就是 apt 安装 HAProxy,具体步骤参考 Debian/Ubuntu HAProxy packages 即可。
如果有特殊需求比如启用 TLS 1.3(目前来说 HAProxy 打包组没有启用 TLS 1.3)则需要自行使用 openssl 1.1.1 以上分支编译。
请继续阅读下文我个人的编译过程。每个人需求不同,所以仅供参考。

编译安装

准备工作

依赖

如果个别包提示冲突,可能是因为包来源不一致,此时需要统一使用 backports 或 默认源进行安装。

1
apt install build-essential libpcre2-dev zlib1g-dev libsystemd-dev liblua5.3-dev

OpenSSL

1
2
3
4
5
6
7
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz
tar -xzf openssl-1.1.1a.tar.gz
cd openssl-1.1.1a
# 禁用动态链接库
./config --prefix=/opt/openssl-1.1.1a no-shared
make && make install
cd .. && rm -rf openssl-1.1.1a*

开始编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 定义 HAProxy 版本,目前主要分支为 1.9
HAPROXY_MAJOR=1.9
HAPROXY_VERSION=1.9.4
# 基础的编译参数,使用 gcc 编译的话移除 CC=clang 即可
CC=clang
CPU=native
TARGET=linux2628
PREFIX=/usr/local/haproxy
# 创建并进入工作目录
cd && mkdir HAProxy && cd HAProxy
# 下载 malloc 及 HAProxy 源码
wget -4 ftp://gee.cs.oswego.edu/pub/misc/malloc.c
wget -4 "http://www.haproxy.org/download/${HAPROXY_MAJOR}/src/haproxy-${HAPROXY_VERSION}.tar.gz"
tar -xzf haproxy-${HAPROXY_VERSION}.tar.gz
cd haproxy-${HAPROXY_VERSION}
# 此处可通过 make help 获取全部参数说明,务必仔细阅读
make \
CC=$CC \
CPU=$CPU \
TARGET=$TARGET \
PREFIX=$PREFIX \
USE_DLMALLOC=1 \
USE_PCRE2=1 \
USE_PCRE2_JIT=1 \
USE_THREAD=1 \
USE_PTHREAD_PSHARED=1 \
USE_LIBCRYPT=1 \
USE_GETADDRINFO=1 \
USE_OPENSSL=1 \
USE_LUA=1 \
USE_ZLIB=1 \
USE_TFO=1 \
USE_NS=1 \
USE_SYSTEMD=1 \
DLMALLOC_SRC=../malloc.c \
SSL_LIB=/opt/openssl-1.1.1a/lib \
SSL_INC=/opt/openssl-1.1.1a/include
make install PREFIX=$PREFIX
install -d /usr/sbin
install haproxy /usr/sbin
install -d /usr/local/share/man/man1
install -m 644 doc/haproxy.1 /usr/local/share/man/man1
cp -ar $PREFIX/doc/haproxy /usr/local/doc/haproxy
mkdir -pv /var/lib/haproxy
cd && rm -rf HAProxy

验证 HAProxy

1
2
# 查找二进制文件并获取版本信息
which haproxy && haproxy -vv

收工

遇事不决请查阅文档,man haproxy 的话还是让人头大。
建议访问 cbonte,内有 HAProxy 全家桶。