Nginx负载均衡主备模式

1. 背景

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

2. 参考

  • nginx 负载均衡
  • Nginx-负载均衡-后端状态max_conns、down、backup、max_fails、fail_timeout
  • Nginx负载均衡详解_nginx负载均衡配置详解

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;  # 备份节点,在所有提供服务节点均不可用时启用}# 定义serverserver {# 监听端口8080listen       8080;server_name  localhost;location / {# 代理转发,服务转发至upstream python_serverproxy_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状态定义。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】第四讲:双向链表

个人主页:深情秋刀鱼-CSDN博客 数据结构专栏:数据结构与算法 循环链表这个轮回的思想很有意思。它强调了不管你今生是贫是富,如果持续行善积德,下辈子就会好过,反之就会遭到报应。 就像每个人的人生一样,欲…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

Docker容器---Harbor私有仓库部署与管理

一、搭建本地私有仓库 1、下载registry镜像 [rootlocalhost ~]#docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4a2: Pull complete e2ead8259a04: Pull comp…

第十五届蓝桥杯Java软件开发大学B组自我经验小结

自我介绍 23届大一 双非 计院科班 软件工程 江苏人在吉林上大学 Java蒟蒻 在学校的宣传下 有幸参加了第十五届蓝桥杯Java大学b组省赛 蓝桥杯说明 就是一个算法比赛吧 考试时间9.00到1.00 四小时 带准考证和身份证和笔 草稿纸会发 赛制是IOC就是不会给任何反馈 就是你…

【6D位姿估计】GDR-Net 单目几何引导的直接回归模型

前沿 本文介绍6D位姿估计的直接回归方法GDR-Net,它从单个RGB图像中确定物体在三维空间中的位置和方向。 它是一个端到端模型,与传统的间接方法不同,GDR-Net可以通过反向传播完全训练,简化了训练过程。 论文地址:GDR…

【C++航海王:追寻罗杰的编程之路】C++11(四)

目录 1 -> 相关文章 【C航海王:追寻罗杰的编程之路】C11(一) 【C航海王:追寻罗杰的编程之路】C11(二) 【C航海王:追寻罗杰的编程之路】C11(三) 2 -> lambda表达式 2.1 -> C98中的一个例子 2.2 -> lambda表达式 2.3 ->…

【19】JAVASE-多线程专题【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

qt嵌入并控制外部程序

一、流程 1、调用Window接口模拟鼠标,键盘事件 POINT point; LPPOINT lpppoint &point; GetCursorPos(lpppoint);//获取鼠标位置 SetCursorPos(point.x, point.y);//设置鼠标位置//鼠标左键按下 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, poi…

Windows php 安装 Memcached扩展、php缺失 Memcached扩展、Class ‘Memcached‘ not found

在Windows系统下如何安装 php Memcached 扩展 下载dll文件 pecl地址:https://pecl.php.net/package/memcached 根据版本进行选择 : 解压下载的文件后得到了这么样的文件结构: 配置 移动dll文件到相应文件位置 重点: libme…

React的useEffect

概念:useEffect是一个React Hook函数,组件渲染之后执行的函数 参数1是一个函数,可以把它叫做副作用函数,在函数内部可以放置要执行的操作参数2是一个数组(可选参),在数组里放置依赖项&#x…

【自动化测试】使用MeterSphere进行接口测试

一、接口介绍二、接口测试的过程三、接口自动化测试执行自动化流程 四、接口之间的协议HTTP协议 五、 接口测试用例设计接口文档 六、使用MeterSphere创建接口测试创建接口定义设计接口测试用例 一、接口介绍 自动化测试按对象分为:单元测试、接口测试、UI测试等。…

拌合楼管理系统(十八)如何从一个winForm中的事件修改另外一个Form的控件的值

前言: 上篇讲述了如何手工调用海康的车牌识别摄像头进行拍照和识别车牌,我车牌识别的程序在应用的一个窗体,需要去更新另外一个窗体里面的lable中的内容为识别的车牌信息,同时还要写入到另外窗体的datagridview中。 一、实现效果 …