🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

Nginx两台服务器配置负载均衡指南

一、负载均衡基本原理

二、常用负载均衡策略

三、配置步骤(两台服务器示例)

1. 确认后端服务器状态

2. 编辑Nginx配置文件

(1) 轮询配置(默认策略)

(2) 加权轮询配置(如服务器性能不同)

(3) IP Hash会话保持配置(解决会话问题)

3. 健康检查配置(推荐生产环境使用)

四、配置验证与生效

五、高级优化建议

六、常见问题解决


img

Nginx两台服务器配置负载均衡指南

一、负载均衡基本原理

负载均衡是将访问请求分发到多台服务器上,避免单台服务器过载,提高系统可用性和处理能力。Nginx作为高性能反向代理服务器,是实现负载均衡的理想选择。

二、常用负载均衡策略

  1. 轮询(Round Robin) - 默认策略,按顺序分发请求
  2. 加权轮询(Weighted) - 按权重分配请求(权重越高,接收请求越多)
  3. IP Hash - 根据客户端IP哈希,保证同一IP请求固定到同一服务器
  4. 最少连接(Least Connections) - 优先分配给当前连接数最少的服务器

三、配置步骤(两台服务器示例)

1. 确认后端服务器状态

假设我们有两台后端服务器:

  • 服务器A: 192.168.1.100 (端口8080)
  • 服务器B: 192.168.1.101 (端口8080)

2. 编辑Nginx配置文件

在Nginx的配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d/目录下)中添加以下内容:

(1) 轮询配置(默认策略)
http {
    upstream backend {
        server 192.168.1.100:8080;
        server 192.168.1.101:8080;
    }
    
    server {
        listen 80;
        server_name yourdomain.com;
        
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}
(2) 加权轮询配置(如服务器性能不同)
http {
    upstream backend {
        server 192.168.1.100:8080 weight=3;  # 承担75%请求
        server 192.168.1.101:8080 weight=1;  # 承担25%请求
    }
    
    server {
        listen 80;
        server_name yourdomain.com;
        
        location / {
            proxy_pass http://backend;
            # 保持与上面相同的代理头设置
        }
    }
}
(3) IP Hash会话保持配置(解决会话问题)
http {
    upstream backend {
        ip_hash;  # 会话保持
        server 192.168.1.100:8080;
        server 192.168.1.101:8080;
    }
    
    server {
        listen 80;
        server_name yourdomain.com;
        
        location / {
            proxy_pass http://backend;
            # 保持与上面相同的代理头设置
        }
    }
}

3. 健康检查配置(推荐生产环境使用)

http {
    upstream backend {
        server 192.168.1.100:8080 max_fails=3 fail_timeout=30s;
        server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
    }
    
    server {
        listen 80;
        server_name yourdomain.com;
        
        location / {
            proxy_pass http://backend;
            # 代理头设置
        }
    }
}

参数说明

  • max_fails=3:连续3次失败后标记为不可用
  • fail_timeout=30s:失败后30秒内不将请求转发给该服务器

四、配置验证与生效

  1. 检查配置语法

    sudo nginx -t
    
  2. 重载Nginx配置(推荐,不中断服务):

    sudo systemctl reload nginx
    
  3. 验证负载均衡

    for i in {1..10}; do curl -s http://yourdomain.com; done
    

    观察返回内容,确认请求被分发到两台服务器。

五、高级优化建议

  1. 长连接优化(减少TCP握手开销):

    upstream backend {
        server 192.168.1.100:8080;
        server 192.168.1.101:8080;
        keepalive 32;  # 保持32个长连接
    }
    
  2. 性能优化(在http块中添加):

    http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        # 其他配置...
    }
    
  3. 高可用部署(生产环境推荐):

    • 使用Keepalived配置主备Nginx节点
    • 配置VIP(虚拟IP)实现故障自动切换

六、常见问题解决

  1. 请求分配不均

    • 检查是否使用了ip_hash导致会话固定
    • 考虑使用least_conn策略
  2. 后端服务器无法访问

    • 检查防火墙设置,确保端口开放
    • 验证后端服务是否正常运行
  3. 会话丢失问题

    • 使用ip_hash策略实现会话保持
    • 或使用Redis等实现会话共享

通过以上配置,您就可以成功实现Nginx对两台服务器的负载均衡,提高应用的可用性和性能。根据实际业务需求,选择合适的负载均衡策略并进行相应的优化。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐