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

NGINX 集群负载与配置管理

NGINX 集群负载与配置管理

多层负载均衡架构

在企业级应用中,负载均衡架构通常采用多层设计,形成完整的流量分发体系:

  1. DNS解析:第一道流量分配

    • 通过DNS服务器返回不同IP地址,实现地理区域或机房级别的负载均衡
    • 优点:实现简单,成本低
    • 缺点:无法感知后端服务状态,TTL缓存影响故障转移速度
  2. CDN加速:边缘节点缓存

    • 静态资源缓存(JS/CSS/图片)
    • 动态内容加速(BGP Anycast路由优化)
    • DDoS防护、访问控制
  3. LVS:四层负载均衡

    • 工作在传输层(TCP/UDP),基于IP负载均衡技术
    • 低延迟、高吞吐量,适合处理大量并发请求
  4. Nginx:七层负载与反向代理

    • 工作在应用层(HTTP/HTTPS),基于内容请求分发
    • 支持更复杂的负载均衡算法和内容处理
  5. Apisix:云原生API网关

    • 提供强大的路由管理、认证、限流等功能
    • 适合微服务架构和云原生环境

典型场景:小规模应用可直接使用Nginx七层代理;高并发场景需要CDN+LVS+Nginx分层处理;云原生微服务架构建议加上Apisix等安全网关。

LVS简介

LVS (Linux Virtual Server) 是由章文嵩博士于1998年5月发起的开源项目,是中国早期具有代表性的自由软件项目之一。

核心特点

  • 采用三层架构:前端负载调度器、中间服务器池、底层共享存储
  • 三种IP负载均衡技术:
    • VS/NAT:基于网络地址转换,服务器需通过调度器进行通信
    • VS/TUN:采用IP隧道技术,服务器可直接响应客户端
    • VS/DR:通过直接路由机制,在数据链路层转发请求

三种技术比较

特性VS/NATVS/TUNVS/DR
服务器类型任意隧道非ARP设备
服务器网络私有LAN/WANLANLAN
服务器数量低(10~20)高(100+)高(100+)
服务器网关调度器自有路由器自有路由器

LVS是Linux内核的一部分,广泛应用于Web、邮件等高并发场景,形成覆盖千级节点的集群框架。

Keepalived简介

Keepalived是一个用于实现高可用的软件,主要功能包括:

  1. RealServer健康状态检查:监控后端服务器的健康状况
  2. LoadBalance主机与Backup主机之间failover:实现主从或主主模式的高可用
  3. 虚拟IP(VIP)管理:通过VRRP协议实现IP地址的自动转移

Keepalived在LVS集群中扮演关键角色,确保在主节点故障时,备节点能够接管服务,保证系统的高可用性。

Keepalived工作原理

  • 通过VRRP协议形成虚拟路由器
  • 主节点(MASTER)负责处理流量
  • 备节点(BACKUP)监控主节点状态
  • 当主节点故障时,备节点接管虚拟IP,继续提供服务

NGINX集群负载搭建

基础环境准备

  1. 关闭防火墙和SELinux(实验环境简化,生产环境需配置端口放行)

    # CentOS
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    # 永久关闭需编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled
    
  2. 测试网络互通:确保负载均衡器能与后端服务器通信

    ping 192.168.1.11 -c 3
    ping 192.168.1.12 -c 3
    

后端Web服务器部署

  1. 安装Nginx(在所有后端服务器上执行)

    # CentOS
    yum install epel-release -y
    yum install nginx -y# Ubuntu
    apt update
    apt install nginx -y
    
  2. 配置差异化测试页面(区分后端服务器)

    # 后端1 (192.168.1.11)
    echo "<h1>Backend Server 1 (192.168.1.11)</h1>" > /usr/share/nginx/html/index.html# 后端2 (192.168.1.12)
    echo "<h1>Backend Server 2 (192.168.1.12)</h1>" > /usr/share/nginx/html/index.html
    
  3. 启动并验证服务

    systemctl start nginx && systemctl enable nginx
    curl localhost  # 本地验证
    curl 192.168.1.11  # 跨机验证
    

负载均衡器配置(LVS+Keepalived+Nginx)

  1. 安装LVS和Keepalived

    yum install -y ipvsadm keepalived
    
  2. 配置Keepalived(主节点和备节点配置不同)

    主节点配置(/etc/keepalived/keepalived.conf):

    vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100}
    }virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.1.101 80 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.1.102 80 {weight 1TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}
    }
    

    备节点配置:将state改为BACKUPpriority改为90

  3. 启动Keepalived

    systemctl start keepalived
    systemctl enable keepalived
    
  4. 配置Nginx后端服务器ARP抑制(在后端服务器上执行):

    echo "net.ipv4.conf.all.arp_ignore = 1" | sudo tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.all.arp_announce = 2" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    

验证配置

  1. 访问虚拟IPhttp://192.168.1.100

    • 应能轮询显示后端服务器的测试页面
  2. 故障转移验证

    • 关闭LVS主节点的Keepalived,查看备节点是否接管虚拟IP
    • 访问虚拟IP,确认服务是否正常

负载均衡算法

Nginx支持多种负载均衡算法:

  1. 轮询(Round Robin):默认算法,按服务器顺序依次分发请求
  2. 加权轮询(Weighted Round Robin):根据服务器性能分配不同权重
  3. IP哈希(IP Hash):根据客户端IP地址进行哈希计算,确保同一客户端请求始终发送到同一服务器
  4. 最少连接(Least Connections):将请求分发到当前连接数最少的服务器

配置示例

upstream backend_servers {server 192.168.1.101:80 weight=3;server 192.168.1.102:80 weight=1;least_conn;
}

总结

NGINX集群负载与配置管理是构建高性能、高可用系统的关键。通过LVS+Keepalived+Nginx的组合,可以实现:

  1. 四层负载均衡(LVS):高效处理大量并发请求
  2. 七层负载均衡(Nginx):基于内容的智能请求分发
  3. 高可用性(Keepalived):确保服务持续可用

这种多层负载均衡架构能有效应对高并发场景,提高系统的吞吐量、伸缩性和可靠性,是企业级应用的首选架构方案。
在这里插入图片描述

http://www.dtcms.com/a/549883.html

相关文章:

  • OpenStack虚拟化平台之T版搭建部署
  • 东软专业力考试--Java基础语法部分
  • 从企业开发到AI时代:Java的新征程与技术蜕变
  • 株洲做网站建设广东上海专业网站建设公司排名
  • 上海专业建网站简历免费模板下载
  • 两数之和
  • 扩展阅读:什么是Pandas?
  • 怎样注册网站域名html5响应式模板
  • ☆本博客Simulink/FPGA/Matlab/RK3588等系统开发教程总目录
  • ThingsBoard如何设置仪表板初始默认实体
  • 记一次Gb28181视频流异常的排查
  • JavaScript 03 【基础语法学习】
  • Java项目2——拼图小游戏(上)
  • 深圳住房和建设局网站 申请大连工程信息招标网
  • uni-app VOD 与 COS 选型、开发笔记
  • Spring WebSocket实战:实时通信全解析
  • 网站建设及推广方案ppt模板互联网时代的营销
  • 身份证三要素实名核验API:基于OCR与可信身份认证的技术解析
  • OCR-图片内容识别
  • wordpress 网址导航页面济南seo网站关键词排名
  • VM虚拟机共享宿主机代理(Ubuntu24.04)
  • 高端网站建设收费为何比较贵网站名称写什么
  • C++容器string
  • [人工智能-大模型-110]:用通俗易懂的语言,阐述梯度下降的本质和数学原理:就是“摸着坡度下山”——哪边最陡,就往反方向走一步,反复走,直到走到谷底。
  • 龙华做棋牌网站建设哪家好哪个平台可以免费推广
  • 网站负责人可以备案怎么看网站域名
  • AIoT项目芯片选型指南:在性能、功耗与成本的十字路口
  • Vue 3 插槽(Slot)详解
  • 刘涛做的网站网络营销的优势包括
  • Spring Boot数据访问篇:整合MyBatis操作数据库