Nginx负载均衡主备模式

1. 背景

使用Nginx代理后端服务,有时候某些服务是不能使用多台负载均衡,但又想保障高可用,所以采用主备模式,记录如下:

2. 参考

3. 环境

  • Ubuntu 22.04
  • 三台虚拟机
    • 虚机Virtual-Machine-114,配置Nginx,nginx version: nginx/1.18.0 (Ubuntu)
    • 虚机Virtual-Machine-203,启动后端服务
    • 虚机Virtual-Machine-205,启动后端服务

4. 部署

4.1 配置Nginx

  • 虚机Virtual-Machine-114 安装nginx
apt install nginx
  • 查找nginx配置文件路径
whereis nginx
# whereis 执行结果
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz
  • 添加虚拟主机
cd /etc/nginx/conf.d && vim py_server.conf 
  # 定义upstream  
  upstream  python_server {
             # server指令指定后端服务器的IP地址和端口
             server    172.31.1.114:8084 down;  # 不参加负载均衡
             server    172.31.1.203:8083 max_fails=5  fail_timeout=60s; # 当检查后端服务5次失败(每1秒检查一次),判定后端服务不可用,然后60秒内不再检查。
             server    172.31.1.205:8085 backup;  # 备份节点,在所有提供服务节点均不可用时启用
            }

  # 定义server
  server {
             # 监听端口8080
             listen       8080;
             server_name  localhost;

             location / {
                           # 代理转发,服务转发至upstream python_server
                           proxy_pass http://python_server;
                        }
          }

4.2 配置后端服务

  • 虚机Virtual-Machine-203,创建html文件
    • 写入 “This is Server master, IP 172.31.1.203”
root@Virtual-Machine-203:/home/sj-test1/html# echo "This is Server master, IP 172.31.1.203" > serverinfo.html 
  • 虚机Virtual-Machine-203,启动服务
# 监听端口与上述配置一致
python3 -m http.server 8083
  • 虚机Virtual-Machine-205,创建html文件
    • 写入 “This is Server backup, IP 172.31.1.205”
root@Virtual-Machine-205:/home/sj-test1/html# echo "This is Server backup, IP 172.31.1.205" > serverinfo.html 
  • 虚机Virtual-Machine-205,启动服务
# 监听端口与上述配置一致
python3 -m http.server 8085

4.3 重启Nginx服务

  • 虚机Virtual-Machine-114重启nginx服务
service nginx restart

5. 测试

5.1 直接访问后端服务

  • 访问http://172.31.1.203:8083/serverinfo.html,服务正常
    在这里插入图片描述- 访问http://172.31.1.205:8085/serverinfo.html,服务正常
    在这里插入图片描述

5.2 访问Nginx代理服务

  • Nginx默认转发到172.31.1.203的后端服务上
    在这里插入图片描述

  • 关闭虚机Virtual-Machine-203上的后端服务
    在这里插入图片描述

  • 再次访问Nginx,已转发到172.31.1.205(backup)的后端服务上
    在这里插入图片描述- 重新启动虚机Virtual-Machine-203上的后端服务,60秒后Nginx再次转发到172.31.1.203
    在这里插入图片描述

6. 总结

通过配置Nginx配置文件,,定义upstream中每个后端Server的状态,可以实现后端服务的主备负载均衡。在上述测试中使用的是默认轮询算法。注意!ip_hash算法不支持backup状态定义。

相关推荐

  1. nginx负载均衡模式

    2024-05-01 16:56:04       41 阅读
  2. nginx upstream负载均衡模块

    2024-05-01 16:56:04       46 阅读
  3. Nginx实现(负载均衡

    2024-05-01 16:56:04       61 阅读
  4. nginx负载均衡

    2024-05-01 16:56:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 16:56:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 16:56:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 16:56:04       87 阅读
  4. Python语言-面向对象

    2024-05-01 16:56:04       96 阅读

热门阅读

  1. GPT每日面试题-Typescript中type和interface的区别

    2024-05-01 16:56:04       36 阅读
  2. 如何在Linux服务器上安装Stable Diffusion WebUI

    2024-05-01 16:56:04       33 阅读
  3. 行业早报0501

    2024-05-01 16:56:04       34 阅读
  4. FlinkSQL 中lateral table

    2024-05-01 16:56:04       30 阅读
  5. springboot配置WebMvcConfigurationSupport

    2024-05-01 16:56:04       33 阅读
  6. leetcode_41.缺失的第一个正数

    2024-05-01 16:56:04       32 阅读
  7. 【Chrony】Docker中的精准时间同步的高效解决方案

    2024-05-01 16:56:04       33 阅读
  8. 「笔试刷题」:数组中的最长连续子序列

    2024-05-01 16:56:04       32 阅读
  9. 支持向量机——pytorch与paddle实现支持向量机

    2024-05-01 16:56:04       21 阅读
  10. 贪心-区间问题

    2024-05-01 16:56:04       32 阅读
  11. FreeRTOS

    FreeRTOS

    2024-05-01 16:56:04      34 阅读