网站模板怎么修改logo,重构网站,网站建设费用 做个网站要多少钱,沈阳网站建设三好街haproxy具有高性能、高可用性、灵活的负载均衡策略和强大的将恐和日志功能#xff0c;是法国开发者 威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件#xff0c;是一款具 备高并发(一万以上)、高性能的TCP和HTTP负载均衡器#xff0c;支持基于cookie的持久性是法国开发者 威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件是一款具 备高并发(一万以上)、高性能的TCP和HTTP负载均衡器支持基于cookie的持久性自动故障切换支 持正则表达式及web状态统计。
这里对安装社区免费的版本进行介绍(3.1):Index of /download/3.1/src
wget https://www.haproxy.org/download/3.1/src/haproxy-3.1.3.tar.gz解压到/etc/local/src
tar -zxvf haproxy-3.1.3.tar.gz -C /usr/local/src/[rootlocalhost ~]# ll /usr/local/src/
total 4
drwxrwxr-x. 13 root root 4096 Jan 29 21:20 haproxy-3.1.3 我们可以在安装好的这个目录中找到INSTALL这个文件more INSTALL这里提供的是官方文档我们找到Build environment这里提到了编译环境的要求几个软件包的版本比如 HAProxy requires a working GCC or Clang toolchain and GNU make : - GNU make 3.80. Note that neither Solaris nor OpenBSDs make work with the GNU Makefile. If you get many syntax errors when running make, you may want to retry with gmake which is the name commonly used for GNU make on BSD systems. - GCC 4.2 (up to 14 tested). Older versions can be made to work with a few minor adaptations if really needed. Newer versions may sometimes break due to compiler regressions or behaviour changes. The version shipped with your operating system is very likely to work with no trouble. Clang 3.0 is also known to work as an alternative solution. Recent versions may emit a bit more warnings that are worth reporting as they may reveal real bugs. TCC (https://repo.or.cz/tinycc.git) is also usable for developers but will not support threading and was found at least once to produce bad code in some rare corner cases (since fixed). But it builds extremely quickly (typically half a second for the whole project) and is very convenient to run quick tests during API changes or code refactoring. - GNU ld (binutils package), with no particular version. Other linkers might work but were not tested. 我们检查一下自己的安装的make和gcc版本
[rootlocalhost haproxy-3.1.3]# yum list make
Installed Packages
make.x86_64 1:4.2.1-11.el8
[rootlocalhost haproxy-3.1.3]# yum list gcc
Installed Packages
gcc.x86_64 8.5.0-23.el8_10 appstream可以看到是满足上述要求的未安装的话可以yum安装这里还建议安装openssl-devel(haproxy加密通信),pcre-devel(正则请求匹配和处理),systemd-devel(使用systemd管理 haproxy)这几个软件提供额外的功能支持yum install openssl-devel pcre-devel systemd-devel -y
haproxy是对lua是有要求的比如以下信息说明至少要大于等于5.3这在编译haproxy时应该是需要的我们要指定USE_LUA1然后在默认情况下haproxy会寻找lua5.4,lua54,lua5.3这种名字找不到的话可能会报错所有这里在编译的时候官方也建议使用变量LUA_LIN_NAME。如果读者的系统为CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求因此需要编译安装较新版本的lua环境然后才能编译安装HAProxy 查看本地默认lua版本信息
[rootlocalhost haproxy-3.1.3]# yum list lua
Available Packages
lua.x86_64 5.3.4-12.el8 appstream 可以yum直接安装或者源码安装这里我选择源码安装5.4版本的。官网地址Lua: download
我们下载下来之后根据上图haproxy的提示的extracted and built步骤或者lua官网提示步骤进行操作
tar -zxvf lua-5.4.7.tar.gz -C /opt/
ll /opt
#total 0
#drwxr-xr-x. 4 1026 1000 58 Jun 14 2024 lua-5.4.7
cd /opt/lua-5.4.7/
make all test
#-------------------------------------------------
sed -n /lua-5.4.6/ p /usr/local/src/haproxy-3.1.3/INSTALL$ cd /opt/lua-5.4.6USE_LUA1 LUA_INC/opt/lua-5.4.6/src LUA_LIB/opt/lua-5.4.6/srccd /usr/local/src/haproxy-3.1.3/
编译
make ARCHx86_64 TARGETlinux-glibc USE_PCRE1 USE_OPENSSL1 USE_ZLIB1 USE_SYSTEMD1 USE_LUA1 LUA_INC/opt/lua-5.4.7/src LUA_LIB/opt/lua-5.4.7/src
#上面将我们之前安装的软件对应的服务打开在编译的时候使用变量名1
安装
make -p /app/haproxy
make install PREFIX/apps/haproxy
[rootlocalhost haproxy]# tree
.
├── doc
│ └── haproxy
│ ├── 51Degrees-device-detection.txt
│ ├── configuration.txt
│ ├── cookie-options.txt
│ ├── DeviceAtlas-device-detection.txt
│ ├── intro.txt
│ ├── linux-syn-cookies.txt
│ ├── lua.txt
│ ├── management.txt
│ ├── netscaler-client-ip-insertion-protocol.txt
│ ├── network-namespaces.txt
│ ├── peers.txt
│ ├── peers-v2.0.txt
│ ├── proxy-protocol.txt
│ ├── regression-testing.txt
│ ├── seamless_reload.txt
│ ├── SOCKS4.protocol.txt
│ ├── SPOE.txt
│ └── WURFL-device-detection.txt
├── sbin
│ └── haproxy
└── share└── man└── man1└── haproxy.1 最后添加到环境变量或在创建软连接
ln -s /app/haproxy/sbin/haproxy /usr/sbin/
验证是否安装成功
[rootlocalhost ~]# haproxy -v
HAProxy version 3.1.3-929bedf 2025/01/29 - https://haproxy.org/
Status: stable branch - will stop receiving fixes around Q1 2026.
Known bugs: http://www.haproxy.org/bugs/bugs-3.1.3.html
Running on: Linux 4.18.0-553.el8_10.x86_64 #1 SMP Fri May 24 13:05:10 UTC 2024 x86_64 安装就正式完成了但是启动还需要一定的配置我们现在还需要配置一下pid文件和系统配置文件让它能够通过systemctl启动然后再配置下haproxy的配置文件
首先先创建pid的目录这个目录应该是haproxy可以读写的所以这里需要创建一个用户haproxy它的家目录就是pid文件所在目录。
mkdri /var/lib/haproxy
useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy#-r表示系统用户-s用于设置登录权限-d指定家目录 haproxy的配置文件
make /etc/haproxy
vim /etc/haproxy/haproxy.cfg
globalmaxconn 100000chroot /app/haproxystats socket /var/lib/haproxy/haproxy.sock mode 600 level adminuser haproxygroup haproxydaemonpidfile /var/lib/haproxy/haproxy.pidlog 127.0.0.1 local2 info
defaultsoption http-keep-aliveoption forwardformaxconn 100000mode httptimeout connect 300000mstimeout client 300000mstimeout server 300000ms
listen statsmode httpbind 0.0.0.0:9999#监听端口设置为9999stats enablelog globalstats uri /haproxy#后面用于登录的路由stats auth haproxy:123456#用户和密码 上面这个配置内容是参考官方给的示例设置的比如下面的都是参考内容 [rootlocalhost haproxy]# tree /usr/local/src/haproxy-3.1.3/examples/ /usr/local/src/haproxy-3.1.3/examples/ ├── basic-config-edge.cfg ├── content-sw-sample.cfg ├── errorfiles │ ├── 400.http │ ├── 403.http │ ├── 408.http │ ├── 500.http │ ├── 502.http │ ├── 503.http │ ├── 504.http │ └── README ├── haproxy.init ├── lua │ ├── event_handler.lua │ ├── mailers.lua │ └── README ├── mptcp-backend.py ├── mptcp.cfg ├── option-http_proxy.cfg ├── quick-test.cfg ├── socks4.cfg ├── traces.cfg ├── transparent_proxy.cfg └── wurfl-example.cfg 创建系统启动haproxy的配置文件vim /usr/lib/systemd/system/haproxy.service
[Unit]DescriptionHAProxy Load BalancerAftersyslog.target network.target[Service]ExecStartPre/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -qExecStart/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pidExecReload/bin/kill -USR2 $MAINPID[Install]WantedBymulti-user.target 重新加载一下守护进程systemctl daemon-reload
systemctl start haproxy
systemctl status haproxy关闭防火墙和selinux之后进入192.168.118.130:9999/haproxy 输入配置文件中的设置的用户和密码即可完成登录