HaProxy源码安装(Rocky8)

haproxy具有高性能、高可用性、灵活的负载均衡策略和强大的将恐和日志功能,是法国开发者 威利塔罗(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/[root@localhost ~]# 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 OpenBSD's 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版本

[root@localhost haproxy-3.1.3]# yum list make
Installed Packages
make.x86_64                           1:4.2.1-11.el8
[root@localhost 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_LUA=1,然后在默认情况下haproxy会寻找lua5.4,lua54,lua5.3这种名字,找不到的话可能会报错,所有这里在编译的时候官方也建议使用变量'LUA_LIN_NAME'。如果读者的系统为CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装HAProxy

查看本地默认lua版本信息

[root@localhost 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_LUA=1 LUA_INC=/opt/lua-5.4.6/src LUA_LIB=/opt/lua-5.4.6/srccd /usr/local/src/haproxy-3.1.3/
编译
make  ARCH=x86_64 TARGET=linux-glibc  USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1  USE_SYSTEMD=1  USE_LUA=1 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
[root@localhost 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/

验证是否安装成功:

[root@localhost ~]# 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#用户和密码

 上面这个配置内容是参考官方给的示例设置的:比如下面的都是参考内容

[root@localhost 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]Description=HAProxy Load BalancerAfter=syslog.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]WantedBy=multi-user.target

 重新加载一下守护进程:systemctl daemon-reload

systemctl start haproxy
systemctl status haproxy

 关闭防火墙和selinux之后进入192.168.118.130:9999/haproxy

输入配置文件中的设置的用户和密码,即可完成登录:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20374.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用openssl实现加解密算法

由于工作中涉及到加解密,包括Hash(SHA256)算法、HMAC_SHA256 算法、ECDH算法、ECC签名算法、AES/CBC 128算法一共涉及5类算法,笔者通过查询发现openssl库以上算法都支持,索性借助openssl库实现上述5类算法。笔者用的op…

1-13 tortoiseGit忽略文件与文件夹

前言: 基于本人对小乌龟操作的学习和思考,仅供参考 1-1 忽略问价和文件夹 有时候我们的一些文件是不想要提交,那么我们可以使用stash的方式给这个文件添加忽略,那么我们现在来给这个实际操作创建一个操作的环境。 右键选中添加到忽…

✨2.快速了解HTML5的标签类型

✨✨HTML5 的标签类型丰富多样&#xff0c;每种类型都有其独特的功能和用途&#xff0c;以下是一些常见的 HTML5 标签类型介绍&#xff1a; &#x1f98b;结构标签 &#x1faad;<html>&#xff1a;它是 HTML 文档的根标签&#xff0c;所有其他标签都包含在这个标签内&am…

PostgreSQL 的崛起与无服务器数据库的新时代

根据 2023 年 Stack Overflow 开发人员调查 &#xff0c;PostgreSQL 超越 MySQL 成为最受开发人员推崇和期望的数据库系统&#xff0c;这是一个重要的里程碑。这一转变反映了开发人员社区对 PostgreSQL 强大的功能集、可靠性和可扩展性的日益认同。 这种不断变化的格局激发了数…

Redis(高阶篇)03章——缓存双写一致性之更新策略探讨

一、反馈回来的面试题 一图你只要用缓存&#xff0c;就可能会涉及到redis缓存与数据库双存储双写&#xff0c;你只要是双写&#xff0c;就一定会有数据一致性的问题&#xff0c;那么你如何解决一致性的问题双写一致性&#xff0c;你先动缓存redis还是数据库mysql哪一个&#x…

【机器学习监督学习】:从原理到实践,探索算法奥秘,揭示数据标注、模型训练与预测的全过程,助力人工智能技术应用与发展

&#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏:机器学习专栏 目录 线性回归&#xff08;Linear Regression&#xff09; 基本概念 数学模型 优缺点 利用Python实现线性回归 逻辑回归&#xff08;Logistic Regression&#xff09; 3.2. 数学模型 优缺点 …

数据结构_前言

本次我们将进入一个新的阶段啦~ 要注意哦&#xff1a; 在学数据结构之前&#xff0c;我们要先掌握c语言中所学的指针、结构体、内存的存储这几部分&#xff0c;如果还没太掌握的话&#xff0c;那记得去复习回顾一下噢。 下面我们就一起进入数据结构的学习吧&#xff01; 知识…

VirtualBox 中使用 桥接网卡 并设置 MAC 地址

在 VirtualBox 中使用 桥接网卡 并设置 MAC 地址&#xff0c;可以按照以下步骤操作&#xff1a; 步骤 1&#xff1a;设置桥接网卡 打开 VirtualBox&#xff0c;选择你的虚拟机&#xff0c;点击 “设置” (Settings)。进入 “网络” (Network) 选项卡。在 “适配器 1” (Adapt…

【Mysql】索引

【Mysql】索引 一、索引的简介二、索引结构2.1 Hash2.2 二叉搜索树2.3 B树2.4 B树 三、索引分类3.1 主键索引3.2 普通索引3.3 唯一索引3.4 全文索引3.5 聚集索引3.6 非聚集索引3.7 索引覆盖 四、使用索引4.1 自动创建索引4.2 手动创建索引4.2.1 主键索引4.2.2 唯一索引4.2.3 普…

超全Deepseek资料包,deepseek下载安装部署提示词及本地部署指南介绍

该资料包涵盖了DeepSeek模型的下载、安装、部署以及本地运行的详细指南&#xff0c;适合希望在本地环境中高效运行DeepSeek模型的用户。资料包不仅包括基础的安装步骤&#xff0c;还提供了68G多套独立部署视频教程教程&#xff0c;针对不同硬件配置的模型选择建议&#xff0c;以…

1、Window Android 13模拟器 将编译的映像文件导入Android Studio

1、环境准备 编译环境&#xff1a;Ubuntu-18.04.5编译版本&#xff1a;android13-release下载地址&#xff1a;清华大学开源软件镜像站AOSP # 下载repo # 同步代码&#xff1a;repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android13-r…

UE5 Niagara 粒子远处闪烁解决

在UE5.2中使用Niagara粒子系统制作水特效时&#xff0c;远处出现粒子闪烁的问题&#xff0c;通常由渲染精度、深度冲突或LOD设置引起 .效果如下&#xff1a; 处理深度缓冲冲突&#xff08;Z-Fighting&#xff09; 问题原因&#xff1a;粒子与场景几何体深度值重叠导致闪烁。 …

机器学习入门实战 4 - 基本模型

&#x1f4cc; 机器学习基本模型项目实战&#xff1a;预测泰坦尼克号乘客的生存概率 &#x1f6a2; 项目背景 1912 年 4 月 15 日&#xff0c;泰坦尼克号在处女航中撞上冰山沉没&#xff0c;船上 2224 名乘客和船员中&#xff0c;仅有约 710 人生还。 哪些因素决定了生还几率&…

电子制造企业数字化转型实战:基于Odoo构建MES平台的深度解决方案

作者背景 拥有8年乙方项目经理经验、8年甲方信息化管理经验&#xff0c;主导过12个Odoo制造业项目落地&#xff0c;服务客户涵盖消费电子、汽车电子、工业设备等领域。本文基于华东某电子企业&#xff08;以下简称"A公司"&#xff09;的实战案例&#xff0c;解析行业…

Python - 爬虫利器 - BeautifulSoup4常用 API

文章目录 前言BeautifulSoup4 简介主要特点&#xff1a;安装方式: 常用 API1. 创建 BeautifulSoup 对象2. 查找标签find(): 返回匹配的第一个元素find_all(): 返回所有匹配的元素列表select_one() & select(): CSS 选择器 3. 访问标签内容text 属性: 获取标签内纯文本get_t…

排序与算法:选择排序

执行效果 选择排序的执行效果是这样的&#xff1a; 呃……看不懂吗&#xff1f;没关系&#xff0c;接着往下看介绍 算法介绍 选择排序&#xff08;Selection sort&#xff09;是一种简单直观的排序算法。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置…

Day4:强化学习之Qlearning走迷宫

一、迷宫游戏 1.环境已知 迷宫环境是定义好的&#xff0c;障碍物位置和空位置是已知的&#xff1b; # 定义迷宫 grid [[0, 0, 0, 1, 0],[0, 1, 0, 1, 0],[0, 1, 0, 0, 0],[0, 0, 0, 1, 0],[0, 1, 1, 1, 0] ] 2.奖励方式已知 如果碰到障碍物则得-1&#xff0c;如果到终点则…

Windows 环境下 Grafana 安装指南

目录 下载 Grafana 安装 Grafana 方法 1&#xff1a;使用 .msi 安装程序&#xff08;推荐&#xff09; 方法 2&#xff1a;使用 .zip 压缩包 启动 Grafana 访问 Grafana 配置 Grafana&#xff08;可选&#xff09; 卸载 Grafana&#xff08;如果需要&#xff09; 下载 G…

栈回溯方案

注&#xff1a;栈回溯无法很好的定位到未调优化的函数&#xff0c;需要编译前使用 -fno-optimize-sibling-calls 选项禁止尾调优化。 基于unwind的栈回溯 在 arm 架构下&#xff0c;不少32位系统用的是 unwind 形式的栈回溯&#xff0c;这种栈回溯要复杂很多。首先需要程序有一…

[算法学习笔记]1. 枚举与暴力

一、枚举算法 定义 枚举是基于已有知识来猜测答案的问题求解策略。即在已知可能答案的范围内&#xff0c;通过逐一尝试寻找符合条件的解。 2. 核心思想 穷举验证&#xff1a;对可能答案集合中的每一个元素进行尝试终止条件&#xff1a;找到满足条件的解&#xff0c;或遍历完…