企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置)

企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置)

摘要:本文深入讲解在离线环境下部署HAProxy 3.1.1的全流程,涵盖源码编译、系统服务封装、K8S APIServer四层负载配置等核心环节,并提供生产级高可用方案。适用于金融、政务等隔离网络的负载均衡场景。

一、环境规划与架构设计

1.1 节点信息

节点IP角色服务组件
192.167.14.119主负载节点HAProxy + Keepalived
192.167.14.223备负载节点HAProxy + Keepalived
192.167.14.226备负载节点HAProxy + Keepalived

1.2 服务端口规划

服务端口协议用途
HAProxy Admin33305HTTP监控接口
K8S APIServer16443TCPKubernetes API入口

二、离线安装HAProxy

2.1 源码编译安装

# 在有网环境下载源码包
wget https://www.haproxy.org/download/3.1/src/haproxy-3.1.1.tar.gz# 传输到离线环境后解压编译
tar -zxvf haproxy-3.1.1.tar.gz -C /usr/local
cd /usr/local/haproxy-3.1.1# 指定目标系统和安装路径
make TARGET=linux31 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy# 创建日志目录
mkdir -p /usr/local/haproxy/logs

关键参数解析

  • TARGET=linux31:指定内核版本兼容性
  • PREFIX:定义安装根目录,便于集中管理

三、系统服务封装

3.1 创建SystemV服务脚本

vi /etc/rc.d/init.d/haproxy#!/bin/bash
# chkconfig: 2345 10 90
# description: HAProxy ServiceBASE_DIR="/usr/local/haproxy"
CONFIG_FILE="$BASE_DIR/haproxy.cfg"
PID_FILE="$BASE_DIR/logs/haproxy.pid"start() {echo "Starting HAProxy..."$BASE_DIR/sbin/haproxy -f $CONFIG_FILE -p $PID_FILE[ $? -eq 0 ] && echo "Success" || echo "Failed"
}stop() {echo "Stopping HAProxy..."[ -f $PID_FILE ] && kill -USR1 $(cat $PID_FILE) || pkill haproxy
}restart() {stopsleep 2start
}case "$1" instart)   start ;;stop)    stop ;;restart) restart ;;*) echo "Usage: $0 {start|stop|restart}" ;;
esac

3.2 配置服务自启动

chmod +x /etc/rc.d/init.d/haproxy
chkconfig --add haproxy
chkconfig haproxy on

四、K8S APIServer负载配置

4.1 主配置文件haproxy.cfg

cat > /usr/local/haproxy/haproxy.cfg <<EOF
globalmaxconn  4000            # 最大连接数log /dev/log local0      # 日志输出stats timeout 30s        # 统计接口超时defaultsmode tcp                 # 四层代理模式timeout connect 5s       # 后端连接超时timeout client 30s       # 客户端超时timeout server 30s       # 服务端超时frontend k8s-apiserverbind *:16443             # 监听所有IP的16443端口default_backend apiserver-nodesbackend apiserver-nodesbalance roundrobin       # 轮询负载策略option tcp-check         # TCP健康检查default-server inter 10s fall 2 rise 2server master119 192.167.14.119:6443 checkserver master223 192.167.14.223:6443 checkserver master226 192.167.14.226:6443 checklisten stats               # 监控页面配置bind *:33305mode httpstats enablestats uri /monitorstats auth admin:HAProxy@2023
EOF

4.2 配置解析

配置项说明
balance roundrobin轮询策略,均匀分配请求
inter 10s健康检查间隔
fall 2连续失败2次标记节点不可用
stats uri监控页面路径,用于实时查看状态

五、服务管理与验证

5.1 服务控制命令

# 启动服务
systemctl start haproxy# 查看状态
systemctl status haproxy# 检查端口监听
ss -lntp | grep 16443# 强制终止进程
killall -9 haproxy

5.2 监控页面访问

  • 访问地址http://<节点IP>:33305/monitor
  • 认证信息:admin / HAProxy@2023

六、生产级优化方案

6.1 内核参数调优

# 增加文件描述符限制
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
sysctl -p

6.2 日志切割配置

# 安装logrotate
cat > /etc/logrotate.d/haproxy <<EOF
/usr/local/haproxy/logs/*.log {dailyrotate 7missingoknotifemptycompressdelaycompresssharedscriptspostrotate/bin/kill -USR1 $(cat /usr/local/haproxy/logs/haproxy.pid 2>/dev/null) 2>/dev/null || trueendscript
}
EOF

七、高可用联动Keepalived

7.1 VIP漂移验证

# 查看当前VIP绑定
ip addr show | grep 192.167.14.205# 模拟主节点故障
systemctl stop haproxy
tail -f /var/log/messages  # 观察切换日志

八、故障排查指南

现象排查命令解决方案
端口未监听`netstat -lntpgrep haproxy`
健康检查失败telnet <后端IP> 6443验证APIServer服务状态
负载不均衡监控页面查看后端节点状态调整balance策略为leastconn
内存占用过高top -p $(pgrep haproxy)优化maxconn参数,增加系统内存

扩展阅读:《HAProxy七层负载实战》

如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!欲了解密码学知识,请订阅《密码学实战》专栏 → 密码学实战

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

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

相关文章

Python网络爬虫设计(一)

目录 一、网络爬虫 1、基本的爬虫 2、获取URL 3、查找网页源码关键字 4、代码实现 二、requests库 1、requests的优势和劣势 2、获取网页的其他库 &#xff08;1&#xff09;selenium库 &#xff08;2&#xff09;pyppeteer库 三、pyppeteer库 1、pyppeteer库的来历…

BR_频谱20dB 带宽(RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Bandwidth])

目录 一、规范要求 1、协议章节 2、测试目的 二、测试方法 1、样机初值条件&#xff1a; 2、测试步骤: 方法一&#xff1a;频谱仪 方法二&#xff1a;综测仪CMW500 3、预期结果 一、规范要求 1、协议章节 4.5.5 RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Ba…

【橘子大模型】初探rag知识库的构建

一、简介 我们在实现了一系列功能之后&#xff0c;终于来到了rag的部分&#xff0c;下面我们将基于langchain来实现一个rag检索。 关于rag方面的知识&#xff0c;可以查看这两篇文章&#xff1a; 大模型应用之RAG详解 什么是 RAG&#xff08;检索增强生成&#xff09; 或者是去…

CentOS7执行yum命令报错 Could not retrieve mirrorlist http://mirrorlist.centos.org

CentOS7执行yum命令报错 引更新yum源备份原有源创建新的源文件清理并重建缓存 引 CentOS 7 系统无法连接到 CentOS 的官方镜像站点。这通常是由于网络问题或 CentOS 7 已停止维护导致的&#xff08;2024年6月30日后 CentOS 7 已进入 EOL&#xff09; 报错明细&#xff1a; 已…

VSCode安装与环境配置(Mac环境)

20250419 - 概述 大概是非常久之前了&#xff0c;装了VSCode&#xff0c;估计都得21的时候了&#xff0c;电脑上也没更新过。当时安装也直接装上就完事了。这次把版本更新一下&#xff0c;同时记录一下这个安装过程。 安装 mac下安装非常简单&#xff0c;直接从官网下载&am…

QML动画--ParallelAnimation和SequentialAnimation

一、ParallelAnimation ParallelAnimation 是 QML 中用于并行执行多个动画的容器动画类型&#xff0c;可以同时运行多个子动画。 基本用法 qml import QtQuick 2.15Rectangle {id: rectwidth: 100; height: 100color: "red"x: 0; y: 0; opacity: 1.0ParallelAnim…

NLP高频面试题(四十三)——什么是人类偏好对齐中的「对齐税」(Alignment Tax)?如何缓解?

一、什么是「对齐税」(Alignment Tax)? 所谓「对齐税」(Alignment Tax),指的是在使人工智能系统符合人类偏好的过程中,所不可避免付出的性能损失或代价。换句话说,当我们迫使AI遵循人类价值观和规范时,AI系统往往无法达到其最大理论性能。这种性能上的妥协和折衷,就…

速查手册:TA-Lib 超过150种量化技术指标计算全解 - 1. Overlap Studies(重叠指标)

速查手册&#xff1a;TA-Lib 超过150种量化技术指标计算全解 - 1. Overlap Studies&#xff08;重叠指标&#xff09; TA-Lib&#xff08;Technical Analysis Library&#xff09;是广泛使用的金融技术分析库&#xff0c;实现了超过150种技术指标计算函数&#xff0c;适用于股票…

重构未来智能:Anthropic 解码Agent设计哲学三重奏

第一章 智能体进化论&#xff1a;从工具到自主体的认知跃迁 1.1 LLM应用范式演进图谱 阶段技术形态应用特征代表场景初级阶段单功能模型硬编码规则执行文本摘要/分类进阶阶段工作流编排多模型协同调度跨语言翻译流水线高级阶段自主智能体动态决策交互编程调试/客服对话 1.1.…

Git 中修改某个特定的commit提交内容

在 Git 中修改某个特定的提交&#xff08;commit&#xff09;通常需要使用 交互式变基&#xff08;Interactive Rebase&#xff09; 或 修改提交&#xff08;Commit Amend&#xff09;。以下是不同场景下的具体操作步骤&#xff1a; 一、修改最近的提交&#xff08;最新提交&am…

ZLMediaKit流媒体服务器

ZLMediaKit 简介 ZLMediaKit 是一个基于 C11 开发的高性能流媒体服务器框架&#xff0c;支持 RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4 等多种流媒体协议。 主要特性 多协议支持&#xff1a; 支持 RTSP/RTMP/HLS/HTTP-F…

数字电子技术基础(五十)——硬件描述语言简介

目录 1 硬件描述语言简介 1.1 硬件描述语言简介 1.2 硬件编程语言的发展历史 1.3 两种硬件描述的比较 1.4 硬件描述语言的应用场景 1.5 基本程序结构 1.5.1 基本程序结构 1.5.2 基本语句和描述方法 1.5.3 仿真 1 硬件描述语言简介 1.1 硬件描述语言简介 硬件描述语…

SQL系列:常用函数

1、【MySQL】合并字段函数&#xff08;列转行&#xff09; 它可以将两个字段中的数据合并到一个字段中。 1&#xff09;CONCAT函数 CONCAT函数可以将多个字段中的数据合并到一个字段中。它的语法格式如下&#xff1a; SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELEC…

多线程和线程同步

多线程在项目开发中使用频率高,使用多线程能够提高程序的并发性 提高程序的并发性:1.多线程,对系统资源的消耗更小一些 2.多进程 系统的cpu资源有线,cpu时间片被分好后,由系统进行调度,每个线程在执行的时候都需要抢这个cpu的时间片。如果抢到了,就执行,如果没抢到,…

时序数据预测:TDengine 与机器学习框架的结合(一)

一、引言 在当今数字化时代&#xff0c;时序数据如潮水般涌来&#xff0c;广泛存在于物联网、工业监控、金融交易、气象监测等众多领域。这些按时间顺序记录的数据蕴含着丰富的信息&#xff0c;对其进行准确预测&#xff0c;能够为企业和组织的决策提供有力支持&#xff0c;带…

elementUI中MessageBox.confirm()默认不聚焦问题处理

在项目中使用elementUI的MessageBox.confirm()出现了默认不聚焦的问题&#xff0c;默认确认按钮是浅色的&#xff0c;需要点击一下才会变成正常。面对这种问题&#xff0c;创建新组件&#xff0c;实现聚焦。替换默认的MessageBox.confirm() 解决 创建components/MessageBoxCo…

yarn的定义

YARN 即 Yet Another Resource Negotiator&#xff0c;它是 Apache Hadoop 2.x 及后续版本中的集群资源管理系统&#xff0c;也是 Hadoop 生态系统的核心组件之一。 YARN 的诞生是为了解决 Hadoop 1.x 中 MapReduce 框架将资源管理和作业调度任务耦合在一起所带来的可扩展性差等…

http、https、TLS、证书原理理解,对称加密到非对称加密问题,以及对应的大致流程

http 超文本传输协议 存在问题&#xff1a; 安全性、隐私性、数据完整性 易被中间人&#xff08;黑客之类的&#xff09;对数据进行劫持、篡改、隐私泄露 引出了 https &#xff08;source&#xff09; http 在网络模型中的应用层 Application > transport > inter…

深度补全网络:如CSPN++填补稀疏点云的深度信息

深度补全网络&#xff1a;CSPN填补稀疏点云的深度信息 深度补全(Depth Completion)是计算机视觉中的一个重要任务&#xff0c;旨在从稀疏的深度测量中恢复密集的深度图。CSPN(Convolutional Spatial Propagation Network)是这一领域的前沿方法之一。 CSPN概述 CSPN是对原始CSPN…

QT网络拓扑图绘制实验

前言 在网络通讯中&#xff0c;我qt常用的是TCP或者UDP协议&#xff0c;就比方说TCP吧&#xff0c;一台服务器有时可能会和多台客户端相连接&#xff0c;我之前都是处理单链接情况&#xff0c;最近研究图结构的时候&#xff0c;突然就想到了这个问题。那么如何解决这个问题呢&…