使用Haproxy搭建Web群集

news2025/6/5 19:23:55

一、基础环境准备

  1. 服务器规划 67

    • HAProxy调度器:1台 (2核4G+,CentOS 7/8)

    • Web服务器:至少2台(如Nginx/Apache,建议192.168.1.101-102)

    • 客户端测试机:1台(Windows/Linux)

    • 网络:所有服务器需在同一局域网,关闭防火墙/SELinux

  2. Web服务器配置

    # 在每台Web服务器安装Nginx并创建测试页
    yum install -y nginx
    echo "Server 1" > /usr/share/nginx/html/index.html  # 服务器1标识
    echo "Server 2" > /usr/share/nginx/html/index.html  # 服务器2标识
    systemctl start nginx

二、HAProxy安装与核心配置

  1. 安装依赖与源码编译 78

    yum install -y gcc pcre-devel bzip2-devel
    wget http://www.haproxy.org/download/2.8/src/haproxy-2.8.3.tar.gz
    tar -zxvf haproxy-2.8.3.tar.gz
    cd haproxy-2.8.3
    make TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1
    make install
  2. 配置文件详解 (/etc/haproxy/haproxy.cfg)

    global
        log /dev/log local0 info     # 分离日志级别
        maxconn 10000                # 最大连接数 :cite[3]
        user haproxy
        group haproxy
        daemon                       # 守护进程模式
    
    defaults
        mode http
        timeout connect 5s           # 连接超时
        timeout client  50s          # 客户端超时
        timeout server  50s          # 后端超时 :cite[2]
        option httplog               # 记录HTTP日志
        option dontlognull           # 忽略空请求
        retries 3                    # 节点失败重试次数
    
    frontend http-in
        bind *:80                    # 监听所有IP的80端口
        acl static path_beg -i /static # ACL规则示例
        use_backend static_servers if static
        default_backend web_servers  # 默认后端组
    
    backend web_servers
        balance leastconn            # 最小连接调度算法 :cite[5]:cite[8]
        server web1 192.168.1.101:80 check inter 2000 rise 2 fall 3
        server web2 192.168.1.102:80 check inter 2000 rise 2 fall 3
        # check: 健康检查,inter 2000ms检测一次,rise 2次成功标记存活,fall 3次失败标记宕机 :cite[7]
    
    backend static_servers
        server static1 192.168.1.103:80 check
  3. 创建系统服务

    cp examples/haproxy.init /etc/init.d/haproxy
    chmod +x /etc/init.d/haproxy
    systemctl daemon-reload

三、关键优化配置

  1. 日志分离 37

    • 修改/etc/rsyslog.d/haproxy.conf

      if $programname == 'haproxy' then {
          if $syslogseverity-text == 'info' then /var/log/haproxy-info.log
          if $syslogseverity-text == 'notice' then /var/log/haproxy-notice.log
          stop
      }
    • 重启服务:systemctl restart rsyslog haproxy

  2. 性能调优参数 3

    参数推荐值作用
    maxconn10000+最大并发连接数
    nbprocCPU核数进程数(需绑定CPU)
    timeout http-request5s-10s防止HTTP慢连接攻击
    option httpclose-主动关闭HTTP连接释放资源

四、高级功能实现

  1. 健康检查强化

    backend web_servers
        option httpchk GET /healthcheck  # 自定义检查路径
        http-check expect status 200     # 要求返回200状态码 :cite[7]
        server web1 192.168.1.101:80 check port 8080  # 指定检查端口
  2. SSL终端卸载

    frontend https-in
        bind *:443 ssl crt /etc/haproxy/certs/example.com.pem
        redirect scheme https if !{ ssl_fc }  # HTTP强制跳转HTTPS
        default_backend web_servers
  3. 高可用方案 36

    • 部署双HAProxy节点 + Keepalived

      • 虚拟IP(VIP)如192.168.1.100

      • 配置Keepalived组播地址:224.0.0.18

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        virtual_ipaddress { 192.168.1.100 }
    }

五、验证与维护

  1. 功能测试

    # 连续访问测试负载均衡
    for i in {1..10}; do curl http://haproxy-ip; done
    # 模拟节点故障(观察日志)
    systemctl stop nginx@web1
    tail -f /var/log/haproxy-info.log  # 查看健康检查日志
  2. 监控命令

    echo "show stat" | socat stdio /var/run/haproxy/admin.sock  # 实时状态:cite[2]
    watch -n 1 "echo 'show info' | socat stdio /var/run/haproxy/admin.sock"

六、故障排查要点

  1. 常见问题 3

    • 503错误:检查后端服务是否存活,nbproc是否超限

    • 日志不记录:确认rsyslog配置权限,检查/dev/log设备存在

    • 性能瓶颈:调整maxconn,启用option http-server-close

生产环境建议

  • 重要配置变更前执行语法检查:haproxy -c -f /etc/haproxy/haproxy.cfg

  • 启用多进程时绑定CPU核心:nbproc 4 cpu-map 1 0 cpu-map 2 1 ...

  • 对于会话保持场景使用balance sourcecookie SERVERID insert8

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

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

相关文章

【Unity】相机 Cameras

1 前言 主要介绍官方文档中相机模块的内容。 关于“9动态分辨率”,这部分很多API文档只是提了一下,具体细节还需要自己深入API才行。 2 摄像机介绍 Unity 场景在三维空间中表示游戏对象。由于观察者的屏幕是二维屏幕,Unity 需要捕捉视图并将…

如何在 Solana 上发币,并创建初始流动性让项目真正“动”起来?

在 Solana 上发行代币如今已不再是技术门槛,而是市场策略和执行效率的较量。如果你只是简单发了一个代币,却没为它建立流动性和市场机制,那么它就只是一个“死币”。 本文将带你一步步理解,如何从发币到建立流动性池,…

核心机制:滑动窗口

TCP 协议 1.确认应答 可靠传输的核心机制 2.超时重传 可靠传输的核心机制 3.连接管理 TCP/网络 最高的面试题 三次握手,建立连接(必须是 三次) 四次挥手,断开连接(可能是 三次) 核心机制四:滑动窗口 算法中的"滑动窗口" 出自 TCP 前面的三个…

苹果电脑深度清理,让老旧Mac重焕新生

在日常使用苹果电脑的过程中,随着时间推移,系统内会积累大量冗余数据,导致电脑运行速度变慢、磁盘空间紧张。想要让设备恢复流畅,苹果电脑深度清理必不可少。那么,如何进行苹果电脑深度清理呢?接下来为你详…

微服务面试(分布式事务、注册中心、远程调用、服务保护)

1.分布式事务 分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如: 跨数据源的分布式事务跨服务的分布式事务综合情况 我们之前解决分布式事务问题是直接使用Seata框架的AT模式,但是解决分布式事务…

高性能MYSQL(三):性能剖析

一、性能剖析概述 (一)关于性能优化 1.什么是性能? 我们将性能定义为完成某件任务所需要的时间度量,换句话说,性能即响应时间,这是一个非常重要的原则。 我们通过任务和时间而不是资源来测量性能。数据…

mysql(十四)

目录 多表查询 1.准备工作 2--创建表格 3--插入数据 2.笛卡尔积查询 3.内连接查询 1--隐式内连接 格式 查询 2--显示内连接(Inner join .. on ) 格式 查询 4.外连接查询 1--左外连接查询(LEFT OUTER JOIN .. ON ) 格式 查询 2-- 右…

工业物联网中的事件驱动采样架构及优化

论文标题 Event-Based Sampling Architecture and Optimization for Industrial Internet of Things 工业物联网中的事件驱动采样架构及优化 作者信息 Tejas Thosani Process Control Systems, Micron Technology Inc., Manassas, USA tthosanimicron.com Andres Prado Esp…

基于 HT for Web 的轻量化 3D 数字孪生数据中心解决方案

一、技术架构:HT for Web 的核心能力 图扑软件自主研发的 HT for Web 是基于 HTML5 的 2D/3D 可视化引擎,核心技术特性包括: 跨平台渲染:采用 WebGL 技术,支持 PC、移动端浏览器直接访问,兼容主流操作系统…

JavaScript 性能优化:从入门到实战

在当今快节奏的互联网时代,用户对网页和应用的加载速度与响应性能要求越来越高。JavaScript 作为网页交互的核心语言,其性能表现直接影响用户体验。本文将用简单易懂的语言,带你了解 JavaScript 性能优化的实用技巧,帮助你的代码跑…

启动metastore时报错MetaException(message:Version information not found in metastore

把hdfs清空重新安装了一下&#xff0c;hive的mysql元数据库删除掉之后重建之后一直启动报错 metastore.RetryingHMSHandler (RetryingHMSHandler.java:<init>(83)) - HMSHandler Fatal error: MetaException(message:Version information not found in metastore.) 后来…

MyBatisPlus(1):快速入门

我们知道&#xff0c;MyBatis是一个优秀的操作数据库的持久层框架&#xff08;优秀持久层框架——MyBatis&#xff09;&#xff0c;其基于底层的JDBC进行高度封装&#xff0c;极大的简化了开发。但是对于单表操作而言&#xff0c;我们需要重复地编写简单的CRUD语句。这其实是不…

京东热点缓存探测系统JDhotkey架构剖析

热点探测使用场景 MySQL 中被频繁访问的数据 &#xff0c;如热门商品的主键 IdRedis 缓存中被密集访问的 Key&#xff0c;如热门商品的详情需要 get goods$Id恶意攻击或机器人爬虫的请求信息&#xff0c;如特定标识的 userId、机器 IP频繁被访问的接口地址&#xff0c;如获取用…

【Elasticsearch】ILM(Index Lifecycle Management)策略详解

ILM&#xff08;Index Lifecycle Management&#xff09;策略详解 1.什么是 ILM 策略&#xff1f;2.ILM 解决的核心业务问题3.ILM 生命周期阶段3.1 Hot&#xff08;热阶段&#xff09;3.2 Warm&#xff08;温阶段&#xff09;3.3 Cold&#xff08;冷阶段&#xff09;3.4 Delete…

linux 后记

Linux Server 下载一个Server的版本&#xff0c;就是那种只有命令行的 学会这个就可以去租一个aliyun服务器&#xff0c;挺便宜的 如果在aliyun买服务器的话就不用管镜像源 但是如果是自己的虚拟机就必须设置镜像源&#xff0c;上网搜索阿里的镜像源&#xff0c;然后手动输入&…

【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)

&#x1f4dd; 在 MSYS2 MINGW64 环境中安装构建工具链&#xff08;CMake、GCC、Make&#xff09; ✅ 目标说明 记录在 MSYS2 的 MINGW64 工具链环境中&#xff0c;成功安装用于 C/C 构建的常用开发工具。 包括&#xff1a; GCC 编译器Make 构建系统CMake 跨平台构建工具基础开…

PyTorch -TensorBoard的使用 (一)

设置环境 新建python文件 .py 安装Tensorboard 在终端进行安装 显示安装成功 两个logs&#xff0c;出现这种情况怎么解决 所有的logs文件删掉delete&#xff0c;重新运行 add_image 不满足要求 Opencv-numpy 安装Opencv add_image 用法示例 &#xff08;500&#xff0c;375&am…

Redis最佳实践——性能优化技巧之数据结构选择

Redis在电商应用中的数据结构选择与性能优化技巧 一、电商核心场景与数据结构选型矩阵 应用场景推荐数据结构内存占用读写复杂度典型操作商品详情缓存Hash低O(1)HGETALL, HMSET购物车管理Hash中O(1)HINCRBY, HDEL用户会话管理Hash低O(1)HSETEX, HGET商品分类目录Sorted Set高O…

网络安全方向在校生有哪些证书适合考取?

工作7年得出结论&#xff1a;网络安全&#xff0c;考任何证书都没有用&#xff0c;实力才是根本。我是2021年考的 CISSP&#xff0c;报了培训班&#xff0c;花了1万一千块钱&#xff0c;签的保障班还是服务班不记得了&#xff0c;大概意思就是你放心去考&#xff0c;考不过可以…

从0开始学习R语言--Day14--贝叶斯统计与结构方程模型

贝叶斯统计 在很多时候&#xff0c;我们经常会看到在统计分析中出现很多反直觉的结论&#xff0c;比如假如有一种病&#xff0c;人群中的患病率为1%&#xff0c;患者真患病时&#xff0c;检测结果为阳性的概率是99%&#xff0c;如果没有&#xff0c;则检测结果为阳性的概率是5…