111-OracleLinux 安装HA Proxy 代理

业务通知需要业务的IP通过代理给予外部客户端访问,业务系统--网闸--外部代理,通过如此的路径过滤后方可使用内网的地址。直接在Oracle Linux 8.10上直接安装HAProxy lts版本后做出调优配置。

准备环境dnf update更新最新的组件

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

setenforce 0

HAProxy 下载链接

https://www.haproxy.org/

https://www.haproxy.org/download/3.2/src/haproxy-3.2.10.tar.gz

安装 HAProxy LTS 3.2.10 的详细指南,包含源码编译和 DNF 安装两种方式及优化配置步骤:

两种安装方式对比

|--------|-----------------|---------------------------------|
| 特性 | 源码编译安装 | yum/DNF 安装 |
| 版本​ | 3.2.10 (最新LTS)​ | 系统仓库版本 (通常较旧) 1.8.27-5.el8_10.1 |
| 灵活性​ | 高,可定制功能模块 | 低,功能固定 |
| 性能优化​ | 可深度优化,针对硬件特性 | 通用优化 |
| 安装复杂度​ | 较高 | 简单快捷​ |
| 推荐场景​ | 生产环境、高性能需求 | 测试/开发环境 |

源码编译安装 HAProxy 3.2.10 LTS

步骤 1:安装依赖环境
bash 复制代码
sudo dnf update -y
sudo dnf install -y gcc make pcre-devel openssl-devel systemd-devel zlib-devel
步骤 2:下载并编译 HAProxy 3.2.10
bash 复制代码
# 下载指定版本
wget https://www.haproxy.org/download/3.2/src/haproxy-3.2.10.tar.gz
tar -xzf haproxy-3.2.10.tar.gz
cd haproxy-3.2.10
步骤 3:安装到系统目录

sudo make install

步骤 4:创建系统服务
bash 复制代码
# 创建配置目录
sudo mkdir -p /etc/haproxy /var/lib/haproxy
# 创建专用用户
sudo useradd -r -s /sbin/nologin haproxy
# 创建systemd服务文件
sudo tee /etc/systemd/system/haproxy.service << 'EOF'
[Unit]
Description=HAProxy Load Balancer
After=network.target

[Service]
ExecStartPre=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/local/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
ExecReload=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecReload=/bin/kill -USR2 $MAINPID
Restart=on-failure
RestartSec=5
KillMode=process
Type=notify

[Install]
WantedBy=multi-user.target
EOF

# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable haproxy

DNF 安装方式(快速部署)-简单但版本较老

bash 复制代码
# 添加HAProxy官方仓库
sudo tee /etc/yum.repos.d/haproxy.repo << 'EOF'
[haproxy]
name=HAProxy
baseurl=https://www.haproxy.org/rpm/centos/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://haproxy.org/RPM-GPG-KEY
EOF

# 安装HAProxy
sudo dnf install -y haproxy

# 启动服务
sudo systemctl enable --now haproxy

注意:官方仓库不包含最新3.2.10版本,如需特定版本仍需源码编译

通用优化配置(两种安装方式均可)

1. 系统内核优化 (/etc/sysctl.conf)
bash 复制代码
# 添加以下参数by root
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 60000
net.core.netdev_max_backlog = 300000
vm.swappiness = 10

# 应用配置
sudo sysctl -p
2. HAProxy 配置 (/etc/haproxy/haproxy.cfg)--代理是否成功的核心
bash 复制代码
# 全局配置段
global
    log /dev/log local0
    log /dev/log local1 notice
    log 127.0.0.1 local3 info
    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    daemon
    maxconn 65535
    stats socket /var/lib/haproxy/stats level admin

defaults
    log global
    mode tcp
    option tcplog
    option dontlognull
    timeout connect 10s
    timeout client 1h
    timeout server 1h
    retries 3

# 监控面板
listen stats
    mode http
    bind *:8404
    stats enable
    stats uri /admin?stats
    stats refresh 10s
    stats admin if TRUE
    stats auth admin:P@ssw0rd2wsx

# BI_8086 代理配置
frontend BI_8086_frontend
    bind *:8086
    #tcp-request connection reject if ! { src -f /etc/haproxy/allowed_ips.txt }
    default_backend BI_8086_backend

backend BI_8086_backend
    server BI_8086_server 10.6.0.187:8086 check inter 5s fall 3 rise 2

# BI_8087 代理配置
frontend BI_8087_frontend
    bind *:8087
    #tcp-request connection reject if ! { src -f /etc/haproxy/allowed_ips.txt }
    default_backend BI_8087_backend

backend BI_8087_backend
    server BI_8087_server 10.6.0.187:8087 check inter 5s fall 3 rise 2

验证与测试

检查服务状态
sudo systemctl status haproxy
查看实时日志
sudo journalctl -u haproxy -f
测试监控页面
curl -u admin:P@ssw0rd2wsx http://10.2.0.187:8404/admin?stats

测试8086端口 nc -zv localhost 8086

测试8087端口 nc -zv localhost 8087

TIPS:

  1. 确保 /etc/haproxy/allowed_ips.txt文件存在并包含允许的IP地址,做出黑白名单
  2. 如果从非允许IP访问,连接应该被拒绝
  3. 确保后端服务器 比如10.6.0.187:8086和 10.6.0.187:8087正常运行
相关推荐
用户962377954481 天前
VulnHub DC-3 靶机渗透测试笔记
安全
SelectDB1 天前
易车 × Apache Doris:构建湖仓一体新架构,加速 AI 业务融合实践
大数据·agent·mcp
武子康1 天前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql
IvanCodes1 天前
一、消息队列理论基础与Kafka架构价值解析
大数据·后端·kafka
叶落阁主2 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
武子康2 天前
大数据-240 离线数仓 - 广告业务 Hive ADS 实战:DataX 将 HDFS 分区表导出到 MySQL
大数据·后端·apache hive
字节跳动数据平台3 天前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
武子康3 天前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
用户962377954484 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent