首页主机资讯如何在ubuntu虚拟机中实现负载均衡

如何在ubuntu虚拟机中实现负载均衡

时间2025-12-22 19:12:03发布访客分类主机资讯浏览633
导读:在 Ubuntu 虚拟机中搭建负载均衡的可行方案 应用层负载均衡:使用 Nginx 或 HAProxy 作为反向代理,将请求分发到多个后端应用实例,配置简单、维护成本低,适合大多数 Web/API 场景。 传输层负载均衡:使用 LVS(I...

在 Ubuntu 虚拟机中搭建负载均衡的可行方案

  • 应用层负载均衡:使用 NginxHAProxy 作为反向代理,将请求分发到多个后端应用实例,配置简单、维护成本低,适合大多数 Web/API 场景。
  • 传输层负载均衡:使用 LVS(IPVS)+ Keepalived,由 Keepalived 管理 VRRP 虚拟 IP 并实现主备或主主高可用,LVS 负责四层转发,性能更高,适合大流量场景。
  • 高可用思路:无论采用哪种方案,都建议引入 Keepalived 提供 VIP 漂移,避免单点故障;小规模可用主从,业务量大可用主主(双 VIP)提升资源利用率。

方案一 应用层 Nginx 或 HAProxy 快速落地

  • 适用:快速为 Web/API 做负载均衡,支持轮询、权重、健康检查等常用策略。

  • 拓扑示例:客户端 → LB(Nginx/HAProxy) → 多个后端(如 192.168.1.101:8080、192.168.1.102:8080)。

  • Nginx 示例

    1. 安装:sudo apt update & & sudo apt install nginx
    2. 配置 /etc/nginx/nginx.conf(http 段内):
      upstream backend {
          
          server 192.168.1.101:8080;
          
          server 192.168.1.102:8080;
      
      }
      
      server {
          
          listen 80;
          
          server_name example.com;
      
          location / {
          
              proxy_pass http://backend;
      
          }
      
      }
          
      
    3. 生效:sudo systemctl restart nginx
  • HAProxy 示例

    1. 安装:sudo apt update & & sudo apt install haproxy
    2. 配置 /etc/haproxy/haproxy.cfg:
      global
          daemon
          maxconn 256
      
      defaults
          mode http
          timeout connect 5000ms
          timeout client 50000ms
          timeout server 50000ms
      
      frontend http-in
          bind *:80
          default_backend servers
      
      backend servers
          balance roundrobin
          server server1 192.168.1.101:8080
          server server2 192.168.1.102:8080
      
    3. 生效:sudo systemctl restart haproxy
  • 健康检查增强(Nginx):在 upstream 中加入参数如 weight=1 max_fails=3 fail_timeout=20s 可提升容错能力。


方案二 四层高性能 LVS + Keepalived 主备

  • 适用:需要更高吞吐/更低延迟的四层转发(TCP/UDP),并通过 Keepalived 提供 VIP 高可用。

  • 拓扑示例:客户端 → VIP(如 192.168.31.200) → LVS(主/备)→ 多个 RealServer(后端应用)。

  • 部署步骤

    1. 在两台 LB 虚拟机安装组件:sudo apt-get install keepalived ipvsadm
    2. 开启转发(NAT/DR 常用):sudo sysctl -w net.ipv4.ip_forward=1
    3. 主节点 /etc/keepalived/keepalived.conf(示例为 DR 模式):
      global_defs {
       router_id LVSMaster }
      
      vrrp_instance VI_1 {
      
          state MASTER
          interface eth0
          virtual_router_id 100
          priority 100
          advert_int 1
          authentication {
           auth_type PASS;
       auth_pass 123456 }
      
          virtual_ipaddress {
       192.168.31.200 }
      
      }
      
      virtual_server 192.168.31.200 80 {
      
          delay_loop 6
          lb_algo wrr
          lb_kind DR
          protocol TCP
          real_server 192.168.31.186 80 {
      
              weight 1
              TCP_CHECK {
      
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
                  connect_port 80
              }
      
          }
      
      }
          
      
    4. 备节点:将 state 改为 BACKUP、priority 略低(如 90),其余保持一致。
    5. 启动:sudo service keepalived start
    6. RealServer(DR 模式)要点:绑定 VIP 到回环、ARP 抑制、开启非本地回环转发(常见做法如 ifconfig lo:0 192.168.31.200/32 up 并调整内核 arp/转发参数)。
  • 说明:LVS 支持 NAT/TUN/DR 三种模式;NAT 需 LB 开启转发,DR 需在同一二层网段并做回环/VIP 配置。


方案三 高可用增强与扩展

  • Keepalived 主备 vs 主主
    • 主备:一主一备,故障自动切换,部署简单;
    • 主主:两台 LB 各自绑定不同 VIP,配合 DNS 轮询 实现双活与资源充分利用。
  • 动态服务发现与自动更新
    • 结合 Consul + Consul Template + Nginx,当后端节点上线/下线时自动生成 Nginx upstream 配置并重载,减少人工维护成本。
  • 健康检查与故障隔离
    • Nginx:在 upstream 中使用 max_fails/fail_timeout
    • LVS:通过 TCP_CHECK/HTTP_GET 等健康检查自动摘除异常 RealServer。

虚拟机网络与连通性要点

  • 建议使用 桥接网卡Host-Only 网络,使虚拟机与宿主机/外部网络互通,并为 VIP 所在网段配置正确的路由。
  • 同一局域网内测试 DR 模式 更便捷;跨网段或公网环境优先考虑 NAT 或主主 + DNS 方案。
  • 关闭或放行相关端口(如 80/443)与 ICMP/ARP(DR 场景),避免健康检查与 VIP 绑定失败。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在ubuntu虚拟机中实现负载均衡
本文地址: https://pptw.com/jishu/777659.html
Ubuntu Jenkins怎样处理日志 Ubuntu Jenkins怎样进行调试

游客 回复需填写必要信息