当前位置: 首页 > article >正文

haproxy编译安装及启动脚本

本次安装使用的主机是Rocky 8,安装的haproxy版本为3.0.8,更多源码包下载地址:http://www.haproxy.org/download/

1、编译安装lua环境

haproxy要求的最低lua版本为5.3

# 安装基础命令及编译依赖环境
yum -y install gcc openssl-devel pcre-devel systemd-devel make
wget http://www.lua.org/ftp/lua-5.4.7.tar.gz
tar xf lua-5.4.7.tar.gz -C /opt
cd /opt/lua-5.4.7/
make all test

2、编译安装haproxy

# 下载源码包
wget https://www.haproxy.org/download/3.0/src/haproxy-3.0.8.tar.gz
tar xf haproxy-3.0.8.tar.gz -C /usr/local/src
cd /usr/local/src/haproxy-3.0.8/

# 参考INSTALL文件进行编译安装
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
make install PREFIX=/apps/haproxy
ln -s /apps/haproxy/sbin/haproxy /usr/sbin/

# 查看生成的文件
[root@localhost haproxy-3.0.8]# tree /apps/haproxy/
/apps/haproxy/
├── doc
│   └── haproxy
│       ├── 51Degrees-device-detection.txt
│       ├── architecture.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

3、haproxy配置文件

# 查看配置文件范例
[root@localhost ~]# tree /usr/local/src/haproxy-3.0.8/examples/
/usr/local/src/haproxy-3.0.8/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
├── option-http_proxy.cfg
├── quick-test.cfg
├── socks4.cfg
├── transparent_proxy.cfg
└── wurfl-example.cfg

# 创建自定义的配置文件
[root@localhost ~]# mkdir  /etc/haproxy
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
global
    maxconn 100000
    chroot /apps/haproxy
    stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
    #uid 99
    #gid 99
    user  haproxy
    group haproxy
    daemon
    #nbproc 4
    #cpu-map 1 0
    #cpu-map 2 1
    #cpu-map 3 2
    #cpu-map 4 3
    pidfile /var/lib/haproxy/haproxy.pid
    log 127.0.0.1 local2 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 enable
    log global
    stats uri     /haproxy-status
    stats auth    haadmin:123456

4、haproxy启动脚本

[root@localhost ~]# vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target

[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg  -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

5、启动haproxy

[root@localhost ~]# mkdir  /var/lib/haproxy
[root@localhost ~]# useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy
[root@localhost ~]# systemctl  enable --now haproxy

6、验证haproxy状态

[root@localhost ~]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2025-02-23 15:04:32 CST; 4min 42s ago
  Process: 12318 ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q (code=exited, status=0/SUCCE>
 Main PID: 12321 (haproxy)
    Tasks: 3 (limit: 10927)
   Memory: 19.3M
   CGroup: /system.slice/haproxy.service
           ├─12321 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
           └─12324 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid

Feb 23 15:04:32 localhost.localdomain systemd[1]: Starting HAProxy Load Balancer...
Feb 23 15:04:32 localhost.localdomain systemd[1]: Started HAProxy Load Balancer.
Feb 23 15:04:32 localhost.localdomain haproxy[12321]: [NOTICE]   (12321) : haproxy version is 3.0.8-6036c31
Feb 23 15:04:32 localhost.localdomain haproxy[12321]: [NOTICE]   (12321) : path to executable is /usr/sbin/hap>
Feb 23 15:04:32 localhost.localdomain haproxy[12321]: [ALERT]    (12321) : config : parsing [/etc/haproxy/hapr>
Feb 23 15:04:32 localhost.localdomain haproxy[12321]: [NOTICE]   (12321) : New worker (12324) forked
Feb 23 15:04:32 localhost.localdomain haproxy[12321]: [NOTICE]   (12321) : Loading success.

查看haproxy的状态页面:(账户密码在配置文件中)


http://www.kler.cn/a/558623.html

相关文章:

  • Linux系统安装MySQL5.7(其他版本类似)避坑指南
  • win32汇编环境,对话框中使用菜单示例三
  • 简讯:Rust 2024 edition and v1.85.0 已发布
  • 2025-alibaba-Sentinel组件
  • Uniapp 中布局魔法:display 属性
  • MySQL 中的索引数量是否越多越好?为什么?如何使用 MySQL 的 EXPLAIN 语句进行查询分析?MySQL 中如何进行 SQL 调优?
  • AI多模态梳理与应用思考|从单文本到多视觉的生成式AI的AGI关键路径
  • Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因
  • 【NLP算法面经】腾讯 WXG 技术研究-NLP算法三面复盘(★附面题整理★)
  • 广东英语十二种应用文模版范文
  • Linux 命令大全完整版(03)
  • Spring Boot 日志管理(官网文档解读)
  • Windows程序设计29:对话框之间的数据传递
  • AI 颠覆传统:当遥感影像分析进入“智能体对话时代”
  • 【算法】滑动窗口(上)
  • 使用 DeepSeek 和 ECharts 实现大屏数据可视化
  • Docker+Dify部署DeepSeek-r1本地知识库
  • PolyOS 是面向 RISC-V 架构的智能终端和 AIoT 开源操作系统(基于开源鸿蒙)
  • 便携式动平衡仪Qt应用层详细设计说明书
  • uni-app 系统学习,从入门到实战(一)—— 从零开始搭建第一个跨平台应用