可以去 mirrors.huaweicloud.com/home 查找相应的国内源 也可以使用其他源
1 下载haproxy
wget https://mirrors.huaweicloud.com/haproxy/2.4/src/haproxy-2.4.2.tar.gz
2 下载lua
wget https://www.lua.org/ftp/lua-5.4.3.tar.gz
3 安装依赖库
yum -y install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget libevent-devel.x86_64 ncurses-devel.x86_64 readline-devel.x86_64 libtermcap-devel ntpdate
注意如果是centos 8 ntpdata被chrony替换了
4 安装lua
tar -xvf lua-5.4.3.tar.gz
cd lua-5.4.3/
make linux test
make install
lua -v #确认lua版本号
5 安装haproxy
tar -xvf haproxy-2.4.2.tar.gz
mkdir /usr/local/haproxy
cd haproxy-2.4.2/
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=/root/lua-5.4.3/src/ LUA_LIB=/root/lua-5.4.3/src/ PREFIX=/usr/local/haproxy LUA_LIB_NAME=lua
make install PREFIX=/usr/local/haproxy
ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/
haproxy -v # 确认haproxy的版本号
mkdir -p /var/lib/haproxy #用于存储 haproxy.pid文件
6 haproxy配置文件
cat /etc/haproxy/haproxy.cfg
文件内容
global
#日志文件的输出定向
log 127.0.0.1 local3 info
#运行目录
chroot /usr/local/haproxy
#将所有进程写入pid文件
pidfile /var/lib/haproxy/haproxy.pid
#最大连接
maxconn 4000
#用户名
user haproxy
#用户组
group haproxy
#以后台形式运行haproxy
daemon
#开启多进程工作模式,默认单进程多线程方式 2.5版本将移除不建议使用
#nbproc 2
# turn on stats unix socket
stats socket /var/lib/haproxy/haproxy.sock
defaults
#工作模式,所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
mode http
log global
#日志类别,记载http日志
option httplog
#不记录健康检查日志信息
option dontlognull
#每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
option http-server-close
#如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
#option forwardfor except 127.0.0.0/8
#是否允许重新分配在session 失败后
option redispatch
#3次连接失败就认为服务器不可用,主要通过后面的check检查
retries 3
#当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
option abortonclose
#默认http请求超时时间
timeout http-request 10s
#默认队列超时时间
timeout queue 1m
#连接超时时间
timeout connect 10s
#客户端连接超时时间
timeout client 5m
#服务器端连接超时时间
timeout server 5m
#默认持久连接超时时间
timeout http-keep-alive 10s
#设置心跳检查超时时间
timeout check 10s
#最大连接数
maxconn 3000
#健康检测#注意实际工作中测试时,应该下载某一个页面来进行测试,因此这个页面应该是个小页面,而不要用首页面。这里是每隔一秒检查一次页面。
#option httpchk GET /index.html
listen admin_stats
#开关
mode http
bind 0.0.0.0:10086
stats enable
stats uri /haproxy-stats
stats realm HAProxy\ Statistics
#认证账号密码
stats auth admin:admin123
#启用管理功能
stats admin if TRUE
#统计页面自动刷新时间
stats refresh 30s
#管理界面,如果认证成功了,可通过webui管理节点
stats admin if TRUE
#http-request set-header X-Forwarded-For req.hdr(X-Forwarded-For)
frontend myweb
bind 0.0.0.0:80
mode http
log global
option httplog
option httpclose
default_backend myweb
backend myweb
balance leastconn
server web3 10.0.2.3:80 check
server web4 10.0.2.4:80 check
server web6 10.0.2.6:80 check
server web8 10.0.2.8:80 check
server web10 10.0.2.10:80 check
server web11 10.0.2.11:80 check
server web7 10.0.2.7:80 check
7 安装 rsyslog
yum install rsyslog -y
配置haproxy的日志通道
cd /etc/rsyslog.d/
vi haproxy.conf
文件内容
$ModLoad imudp
$UDPServerRun 514
local3.* /var/log/haproxy.log
重启rsyslog
systemctl restart rsyslog
8 创建systemd启动服务 [弃用]
vi /etc/systemd/system/haproxy.service
文件内容
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
ExecStart=/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
9 启动服务 [弃用]
systemctl deamon-reload
systemctl start haproxy
8 安装 supervisor
采用简便方式 直接安装宝塔面板 在应用功能商店搜索 supervisor 建议通过链接注册 可以获取礼包
9 设置任务
在supervisor的管理界面新增守护进程。注意 在我安装中发现必须使用root进程启动 然后才能创建haproxy用户的进程。 【猜测】上面的
systemd重启机器后无法自动开始 也很有可能是这个原因,本着能够通过其他方式处理,就不深究的原则。