负载均衡集群HAproxy

HAProxy 简介

HAProxy 是一款高性能的负载均衡器和代理服务器,支持 TCP 和 HTTP 应用。广泛用于高可用性集群,能够有效分发流量到多个后端服务器,确保服务的稳定性和可扩展性。

HAProxy 核心功能

  • 负载均衡:支持轮询(round-robin)、最少连接(leastconn)、源 IP 哈希(source)等多种调度算法。
  • 健康检查:自动检测后端服务器状态,剔除故障节点。
  • SSL/TLS 终止:支持 HTTPS 流量解密和加密。
  • 高可用性:可结合 Keepalived 实现 VIP 漂移,避免单点故障。

HAProxy 安装与配置

在 Ubuntu/Debian 系统安装 HAProxy:

sudo apt update
sudo apt install haproxy

配置文件位于 /etc/haproxy/haproxy.cfg,典型配置示例:

globallog /dev/log local0maxconn 4000user haproxygroup haproxydaemondefaultsmode httptimeout connect 5000mstimeout client 50000mstimeout server 50000msfrontend http-inbind *:80default_backend serversbackend serversbalance roundrobinserver server1 192.168.1.10:80 checkserver server2 192.168.1.11:80 check

健康检查配置

通过 check 参数启用健康检查,支持主动(HTTP 请求)和被动(TCP 连接)模式:

backend web_serversoption httpchk GET /healthserver web1 192.168.1.10:80 check inter 5s rise 2 fall 3

日志与监控

启用日志需在 global 部分配置 log 指令,并配置系统日志服务(如 rsyslog):

globallog 127.0.0.1 local0 info

HAProxy 高可用方案

结合 Keepalived 实现 VIP 漂移:

  1. 安装 Keepalived:
sudo apt install keepalived

  1. 配置 Keepalived(/etc/keepalived/keepalived.conf):
vrrp_script chk_haproxy {script "pidof haproxy"interval 2
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100/24}track_script {chk_haproxy}
}

HAProxy 基本配置结构

HAProxy 的配置文件通常分为几个主要部分:全局设置(global)、默认设置(defaults)、前端(frontend)和后端(backend)。以下是基本配置的组成部分:

globallog /dev/log    local0log /dev/log    local1 noticechroot /var/lib/haproxystats socket /run/haproxy/admin.sock mode 660 level adminstats timeout 30suser haproxygroup haproxydaemonmaxconn 4000defaultslog     globalmode    httpoption  httplogoption  dontlognulltimeout connect 5000timeout client  50000timeout server  50000errorfile 400 /etc/haproxy/errors/400.httperrorfile 403 /etc/haproxy/errors/403.httperrorfile 408 /etc/haproxy/errors/408.httperrorfile 500 /etc/haproxy/errors/500.httperrorfile 502 /etc/haproxy/errors/502.httperrorfile 503 /etc/haproxy/errors/503.httperrorfile 504 /etc/haproxy/errors/504.httpfrontend http-inbind *:80default_backend serversbackend serversbalance roundrobinserver server1 192.168.1.10:80 checkserver server2 192.168.1.11:80 check

全局配置(global)

全局配置部分定义了 HAProxy 进程的全局参数,通常包括日志、用户权限和性能调优等。

  • log:定义日志输出位置和级别。
  • chroot:将 HAProxy 进程限制在指定目录,增强安全性。
  • stats socket:启用统计信息套接字,用于管理。
  • usergroup:指定运行 HAProxy 的用户和组。
  • daemon:以守护进程模式运行。
  • maxconn:设置最大连接数。

默认配置(defaults)

默认配置部分定义了适用于所有 frontend 和 backend 的默认参数。

  • mode:设置代理模式(http、tcp)。
  • option httplog:启用 HTTP 日志记录。
  • timeout:定义连接、客户端和服务器的超时时间。
  • errorfile:指定错误响应文件路径。

前端配置(frontend)

前端配置定义了 HAProxy 如何接收客户端请求。

  • bind:指定监听的 IP 和端口。
  • default_backend:设置默认的后端服务器组。
  • 其他常用选项:
    • acl:定义访问控制规则。
    • use_backend:根据条件选择后端服务器组。

后端配置(backend)

后端配置定义了请求如何转发到后端服务器。

  • balance:设置负载均衡算法(如 roundrobinleastconn)。
  • server:定义后端服务器地址和端口,check 表示启用健康检查。
  • 其他常用选项:
    • cookie:启用会话持久性。
    • http-check:自定义健康检查方式。

负载均衡算法

HAProxy 支持多种负载均衡算法,常见的有:

  • roundrobin:轮询(默认)。
  • leastconn:最少连接数优先。
  • source:基于源 IP 哈希。
  • uri:基于 URI 哈希。

健康检查

HAProxy 支持主动健康检查,确保后端服务器的可用性:

backend serversoption httpchk GET /healthserver server1 192.168.1.10:80 check inter 2000 rise 2 fall 3

  • httpchk:指定健康检查的 HTTP 请求路径。
  • inter:检查间隔(毫秒)。
  • rise:成功次数标记服务器为健康。
  • fall:失败次数标记服务器为不健康。

统计页面

启用统计页面以监控 HAProxy 状态:

listen statsbind *:8404stats enablestats uri /statsstats refresh 10sstats admin if TRUE

  • bind:指定统计页面的监听端口。
  • stats uri:设置访问路径。
  • stats admin:允许通过页面管理服务器状态。

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

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

相关文章

重生之我在10天内卷赢C++ - DAY 1

坐稳了,我们的C重生之旅现在正式发车!请系好安全带,前方高能,但绝对有趣!🚀 重生之我在10天内卷赢C - DAY 1导师寄语:嘿,未来的编程大神!欢迎来到C的世界。我知道&#x…

[mind-elixir]Mind-Elixir 的交互增强:单击、双击与鼠标 Hover 功能实现

[mind-elixir]Mind-Elixir 的交互增强:单击、双击与鼠标 Hover 功能实现 功能简述 通过防抖,实现单击双击区分通过mousemove事件,实现hover效果 实现思路 (一)单击与双击事件 功能描述 单击节点时,可以触发…

c++-迭代器类别仿函数常用算法函数

C常用算法函数 1. 前置知识 1.1 迭代器的类别 C中,迭代器是 STL 容器库的核心组件之一,具有举足轻重的作用,它提供了一种 统一的方式来访问和遍历容器,而无需关心底层数据结构的具体实现。迭代器类似指针,但比指针更通…

Python深度学习框架TensorFlow与Keras的实践探索

基础概念与安装配置 TensorFlow核心架构解析 TensorFlow是由Google Brain团队开发的开源深度学习框架,其核心架构包含数据流图(Data Flow Graph)和张量计算系统。数据流图通过节点表示运算操作(如卷积、激活函数)&…

c# net6.0+ 安装中文智能提示

https://github.com/stratosblue/IntelliSenseLocalizer 1、安装tool dotnet tool install -g islocalizer 2、 安装IntelliSense 文件,安装其他net版本修改下版本号 安装中文net6.0采集包 islocalizer install auto -m net6.0 -l zh-cn 安装中英文双语net6.0采集包…

【建模与仿真】二阶邻居节点信息驱动的节点重要性排序算法

导读: 在复杂网络中,挖掘重要节点对精准推荐、交通管控、谣言控制和疾病遏制等应用至关重要。为此,本文提出一种局部信息驱动的节点重要性排序算法Leaky Noisy Integrate-and-Fire (LNIF)。该算法通过获取节点的二阶邻居信息计算节点重要性&…

指令微调Qwen3实现文本分类任务

参考文档: SwanLab入门深度学习:Qwen3大模型指令微调 - 肖祥 - 博客园 vLLM:让大语言模型推理更高效的新一代引擎 —— 原理详解一_vllm 原理-CSDN博客 概述 为了实现对100个标签的多标签文本分类任务,前期调用gpt-4o进行prom…

【机器学习-3】 | 决策树与鸢尾花分类实践篇

0 序言 本文将深入探讨决策树算法,先回顾下前边的知识,从其基本概念、构建过程讲起,带你理解信息熵、信息增益等核心要点。 接着在引入新知识点,介绍Scikit - learn 库中决策树的实现与应用,再通过一个具体项目的方式来…

【数字投影】折幕影院都是沉浸式吗?

折幕影院作为一种现代化的展示形式,其核心特点在于通过多块屏幕拼接和投影融合技术,打造更具包围感的视觉体验。折幕影院设计通常采用多折幕结构,如三折幕、五折幕等,利用多台投影机的协同工作,呈现无缝衔接的超大画面…

数据结构——图(三、图的 广度/深度 优先搜索)

一、广度优先搜索(BFS)①找到与一个顶点相邻的所有顶点 ②标记哪些顶点被访问过 ③需要一个辅助队列#define MaxVertexNum 100 bool visited[MaxVertexNum]; //访问标记数组 void BFSTraverse(Graph G){ //对图进行广度优先遍历,处理非连通图的函数 for(int i0;i…

直击WAIC | 百度袁佛玉:加速具身智能技术及产品研发,助力场景应用多样化落地

7月26日,2025世界人工智能大会暨人工智能全球治理高级别会议(WAIC)在上海开幕。同期,由国家地方共建人形机器人创新中心(以下简称“国地中心”)与中国电子学会联合承办,百度智能云、中国联通上海…

2025年人形机器人动捕技术研讨会将在本周四召开

2025年7月31日爱迪斯通所主办的【2025人形机器动作捕捉技术研讨会】是携手北京天树探界公司线下活动结合线上直播的形式,会议将聚焦在“动作捕捉软硬件协同,加速人形机器人训练”,将深度讲解多项核心技术,包含全球知名的惯性动捕大…

Apple基础(Xcode①-项目结构解析)

要运行设备之前先选择好设备Product---->Destination---->选择设备首次运行手机提示如出现 “未受信任的企业级开发者” → 手机打开 设置 ▸ 通用 ▸ VPN与设备管理 → 信任你的 Apple ID 即可ContentView 是 SwiftUI 项目里 最顶层、最主界面 的那个“页面”&#xff0…

微服务 02

一、网关路由网关就是网络的关口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验。路由是网关的核心功能之一,决定如何将客户端请求映射到后端服务。1、快速入门创建新模块,引入网关依赖…

04动手学深度学习笔记(上)

04数据操作 import torch(1)张量表示一个数据组成的数组,这个数组可能有多个维度。 xtorch.arange(12) xtensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])(2)通过shape来访问张量的形状和张量中元素的总数 x.shapetorch.Size([12])(3)number of elements表…

MCU中的RTC(Real-Time Clock,实时时钟)是什么?

MCU中的RTC(Real-Time Clock,实时时钟)是什么? 在MCU(微控制器单元)中,RTC(Real-Time Clock,实时时钟) 是一个独立计时模块,用于在系统断电或低功耗状态下持续记录时间和日期。以下是关于RTC的详细说明: 1. RTC的核心功能 精准计时:提供年、月、日、时、分、秒、…

Linux 进程调度管理

进程调度器可粗略分为两类:实时调度器(kernel),系统中重要的进程由实时调度器调度,获得CPU能力强。非实时调度器(user),系统中大部分进程由非实时调度器调度,获得CPU能力弱。实时调度器实时调度器支持的调度策略&#…

基于 C 语言视角:流程图中分支与循环结构的深度解析

前言(约 1500 字)在 C 语言程序设计中,控制结构是构建逻辑的核心骨架,而流程图作为可视化工具,是将抽象代码逻辑转化为直观图形的桥梁。对于入门 C 语言的工程师而言,掌握流程图与分支、循环结构的对应关系…

threejs创建自定义多段柱

最近在研究自定义建模,有一个多断柱模型比较有意思,分享下,就是利用几组点串,比如上中下,然后每组点又不一样多,点续还不一样,(比如第一个环的第一个点在左边,第二个环在右边)&#…

Language Models are Few-Shot Learners: 开箱即用的GPT-3(四)

Result续 Winograd-Style Tasks Winograd-Style Tasks 是自然语言处理中的一类经典任务。它源于 Winograd Schema Challenge(WSC),主要涉及确定代词指的是哪个单词,旨在评估模型的常识推理和自然语言理解能力。 这个任务中的具体通常包含高度歧义的代词,但从语义角度看…