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

Python 全栈系列244 nginx upstream 负载均衡 踩坑日记

说明

最初是因为租用算力机(Python 全栈系列242 踩坑记录:租用算力机完成任务),所以想着做一个负载均衡,然后多开一些服务,把配置写在nginx里面就好了。

一开始租用了一个3080起了一个服务,后来觉得速度不够快,再起了3个4090,每个4090起3个服务。然后,觉得速度够了就把3080那台机器退了。再之后调用的时候,发现服务不太稳定,之前是猜测可能共享带宽导致连接不稳。然后今天发现,可能是nginx没搞对…

内容

1 概述

最初我认为负载均衡默认就带了健康检测的功能,nginx应该可以识别那些反向代理的服务器,那些有问题,然后避开它。实际上1.19版是没有的,没有这个模块时,负载均衡总是一视同仁的去调用那些已经挂掉的服务。只要有一个服务挂了,整个体验就是卡卡的。

简单来说,就是要装一个check_module插件。传统办法好像要自己下载,然后重新编译啥的,看起来就很麻烦。然后我就想取个巧,但发现这个还要碰运气。

└─ $ docker search nginx_upstream_check_module
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
[不行]yuxhuang/alpine-libressl-luajit-nginx   Alpine NGINX with HTTP2 support, with libres…   3                    [OK]
[不行]joshm1/nginx                            Nginx 1.9.4 with the nginx_upstream_check_mo…   1
[可以]mrlioncub/nginx_upstream_check_module   Nginx compiled with Health checks upstreams …   0
oxnme/openresty                         openresty with nginx_upstream_check_module      0
johnwu/nginx                            Nginx-1.10.3 with luaJIT nginx_upstream_chec…   0                    [OK]
chromerobv/nginx                        nginx compiled with nginx_upstream_check_mod…   0                    [OK]
shiurn/nginx                            nginx-1.20+nginx_upstream_check_module+nginx…   0
congcong126/nginx-check                 add nginx_upstream_check_module                 0
sola97/nginx                            nginx-http3 with nginx_upstream_check_module…   0
hejtao/nginx-hc                         health check;  nginx_upstream_check_module;0

测试命令

docker run -it \--rm \--name=entapi_realtime_api \-v /etc/localtime:/etc/localtime  \-v /etc/timezone:/etc/timezone\-v /etc/hostname:/etc/hostname\-e "LANG=C.UTF-8" \-p 34103:34103\-v /home/nginx_confs/realent_34103_nginx.conf:/etc/nginx/nginx.conf \mrlioncub/nginx_upstream_check_module

启动后,nginx会发现某个服务失效了
在这里插入图片描述
然后在调用过程中,nginx一方面响应请求,一方面继续对服务进行健康检查,所以虽然服务报错了,但并不影响请求的调用。
在这里插入图片描述

2 配置文件

整个配置非常简单,主要就是check interval=3000 rise=2 fall=5 timeout=1000

events {#设置工作模式为epoll,除此之外还有select,poll,kqueue,rtsig和/dev/poll模式use epoll;#定义每个进程的最大连接数,受系统进程的最大打开文件数量限制worker_connections  1024;
}http{# 配置nginx上传文件最大限制client_max_body_size 50000m;upstream multi_ent {# fair;server 183.252.181.66:10000;server XXX:10000  ;server XXX:10001  ;# 健康检查配置check interval=3000 rise=2 fall=5 timeout=1000;}server {listen 34103;location / {proxy_pass http://multi_ent;# proxy_next_upstream error timeout invalid_header http_502 http_504 http_404;}}}

3 配置更新

3.1 重载配置

容器名 nginx_34103_entapi_realtime_api


检查配置
docker exec nginx_34103_entapi_realtime_api  nginx -t重载配置
docker exec nginx_34103_entapi_realtime_api  nginx -s reload

3.2 重启容器

还是需要重启容器

docker restart nginx_34103_entapi_realtime_api

查看日志

 docker logs nginx_34103_entapi_realtime_api --tail=100

相关文章:

Python 全栈系列244 nginx upstream 负载均衡 踩坑日记

说明 最初是因为租用算力机(Python 全栈系列242 踩坑记录:租用算力机完成任务),所以想着做一个负载均衡,然后多开一些服务,把配置写在nginx里面就好了。 一开始租用了一个3080起了一个服务,后来觉得速度不够快,再起了…...

数据链路层——计算机网络学习笔记三

使用点对点信道的数据链路层 前言: 1.数据链路层的重要性:网络中的主机、路由器都必须实现数据连输层; 2.数据链路层中使用的信道: 点对点信道:这种信道是一对一的通信方式; 广播信道:使用一对多…...

leetcode——反转链表

206. 反转链表 - 力扣(LeetCode) 思路:创建三个指针n1,n2,n3,遍历原链表,通过三者之间的关系将链表反转。下面给出图示: 下面给出题解代码: typedef struct ListNode ListNode; struct List…...

类加载机制(双亲委派机制)

文章目录 JVM的作用是什么双亲委派机制加载流程 JVM的作用是什么 我们运行Java程序时,要安装JDK,JDK包含JVM,不同环境的JDK都是不同的。 Java 代码在编译后会形成 class 的字节码文件,该字节码文件通过 JVM 解释器,生…...

nss刷题(2)

1、[NSSCTF 2022 Spring Recruit]ezgame 打开题目是一个游戏界面 发现是有分数的,猜测分数达到某个之后可以获得flag,查看源码看一下 看到末尾显示分数超过65后显示flag 在js中找到了一个score,将他的值改为大于65的数后随意玩一次就可以得到flag同时&a…...

2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线排班问题--matlab代码)

问题背景: 问题四:根据实际情况,现需要扩大生产规模,将生产线每天的运行时间从 8 小时增加 到 24 小时不间断生产,考虑生产线与操作人员的搭配,制定最佳的操作人员排班方案,要求满足以下条件&am…...

资产公物仓管理系统|实现国有资产智能化管理

1、项目背景 资产公物仓管理系统(智仓库DW-S201)是一套成熟系统,依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 项目设计原则 方案对公物仓资…...

实用的 Google Chrome 命令

以下是一些实用的 Google Chrome 命令: chrome://version - 显示 Chrome 浏览器的详细信息,包括版本号、用户代理和命令行参数等。 chrome://flags - 打开 Chrome 实验性功能页面,可以启用或禁用各种实验性功能。请注意,这些功能…...

动态规划算法:⼦数组、⼦串系列(数组中连续的⼀段)

例题一 解法(动态规划): 算法思路: 1. 状态表⽰: 对于线性 dp ,我们可以⽤「经验 题⽬要求」来定义状态表⽰: i. 以某个位置为结尾,巴拉巴拉; ii. 以某个位置…...

2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 D题 服务网点的分布 原题再现: 服务网点、通讯基站的设置,都存在如何设置较少的站点,获得较大效益的问题。通讯基站的覆盖范围一般是圆形的,而消防、快餐、快递服务则受到道路情况和到达时间的限…...

docker-compose 安装ZLMediaKit,ffmpeg、VLC实现推流并播放

1、目录(创建conf文件夹,777权限) 二、docker-compose.yml version: "3.9"services:zlmediakit:image: zlmediakit/zlmediakit:mastercontainer_name: zlmediakitprivileged: true# 指定加载配置# command: /opt/media/bin/MediaS…...

|Python新手小白中级教程|第二十八章:面向对象编程(类定义语法私有属性类的继承与多态)(4)

文章目录 前言一、类定义语法二、私有方法和私有属性1.私有属性2.私有方法 三、类“继承”1.初识继承2.使用super函数调用父类中构造的东西 四、类“多态”1.多态基础2.子类不同形态3.使用isinstance函数与多态结合判断类型 总结 前言 大家好,我是BoBo仔吖&#xf…...

vue项目基于WebRTC实现一对一音视频通话

效果 前端代码 <template><div class"flex items-center flex-col text-center p-12 h-screen"><div class"relative h-full mb-4 fBox"><video id"localVideo"></video><video id"remoteVideo">…...

web 基础之 HTTP 请求

web 基础 网上冲浪 就是在互联网(internet)上获取各种信息&#xff0c;进行工作&#xff0c;或者娱乐&#xff0c;他的英文表示surfing the Internet&#xff0c;因 “surfing”d的意思是冲浪&#xff0c;即成为网上冲浪&#xff0c;这是一种形象说法&#xff0c; 也是一个非…...

嵌入式 - GPIO编程简介

An Introduction to GPIO Programming By Jeff Tranter Wednesday, June 12, 2019 编者按&#xff1a;本 2019 年博客系列是 ICS 最受欢迎的系列之一&#xff0c;现已更新&#xff08;2022 年 12 月&#xff09;&#xff0c;以确保内容仍然准确、相关和有用。 本博客是 Integr…...

8种区块链开发者必须知道的顶级编程语言!

我来问你一个问题&#xff1a;请说出一种技术&#xff0c;它以去中心化、不可篡改和透明性等核心特征席卷了全球。 这个问题的答案是&#xff0c;当然是区块链&#xff0c;它在近些年进入大家的视野并颠覆了工商业&#xff0c;没有任何其他技术能够做到这一点。 预计从2020年…...

十三、Redis哨兵模式--Sentinel

上一篇介绍了Redis中的主从复制。我们知道Redis主从中一般只有主节点对外提供写操作&#xff0c;如果主节点发生故障&#xff0c;为了保证Redis的可用性&#xff0c;这时就要在可用的slave节点中&#xff0c;挑选一个作为主节点。这种切换操作如果是人为的操作&#xff0c;那么…...

[力扣题解]1005. K 次取反后最大化的数组和

题目&#xff1a;1005. K 次取反后最大化的数组和 思路 贪心法&#xff1b; 用绝对值大小排序&#xff0c;自己写一个比较函数&#xff0c; static bool compare(int a, int b) {return abs(a) > abs(b); }注意这样写出来是降序排列&#xff1b; 代码 class Solution {…...

Web UI自动化测试--PO模式

没有PO实现的测试用例的问题: 重用性低:登录功能重复可维护性差:数据和代码混合可读性差:元素定位方法杂乱(id、xpath、css混杂)可读性差:不易识别操作的含义(特别是css和xpath语法)可维护性差:如果某个元素的属性改了,你要更改多次PO(Page Object Model)页面对象模型…...

Python进阶之-反射机制详解

✨前言&#xff1a; 什么是反射&#xff1f; Python中的“反射”是一个编程术语&#xff0c;它指的是程序在运行时能够检查和操作其自身状态的能力&#xff0c;特别是通过名称&#xff08;通常是字符串&#xff09;来访问对象的属性、方法和其他组成部分。这种机制允许代码动态…...

day05-面向对象内存原理和数组

day05 面向对象内存原理和数组 我们在之前已经学习过创建对象了,那么在底层中他是如何运行的。 1.对象内存图 1.1 Java 内存分配 Java 程序在运行时&#xff0c;需要在内存中分配空间。为了提高运算效率&#xff0c;就对空间进行了不同区域的划分&#xff0c;因为每一片区域…...

从头理解transformer,注意力机制(下)

交叉注意力 交叉注意力里面q和KV生成的数据不一样 自注意力机制就是闷头自学 解码器里面的每一层都会拿着编码器结果进行参考&#xff0c;然后比较相互之间的差异。每做一次注意力计算都需要校准一次 编码器和解码器是可以并行进行训练的 训练过程 好久不见输入到编码器&…...

ORA-609频繁出现在alert.log,如何解决?

ORA-609就alertlog中比较常见的一个报错&#xff0c;虽然并没有太大的影响&#xff0c;但是频繁的出现在alert log也是很让人厌烦的事情&#xff0c;本文介绍如何排查解决ORA-609问题。 1.ORA-609官方定义 could not attach to incoming connection Cause Oracle process cou…...

JVM 类加载机制

JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化&#xff0c;下面我们就分别来看一下这五个过程。 加载 加载是类加载过程中的一个阶段&#xff0c;这个阶段会在内存中生成一个代表这个类的 java.lang.class 对…...

亲测-wordpress文章实时同步发布修改删除多个站点的WP2WP插件

一款将wordpress文章同步到其他WordPress网站的插件&#xff0c;通过这款插件&#xff0c;可以保持不同博客之间文章发布、修改、删除的同步。 安装步骤&#xff1a; 主站和分站都要上传这个插件 1.把插件上传到wp-content\plugins解压出来wp2wp文件夹&#xff0c;然后启用插…...

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…...

springboot 引入第三方bean

如何进行第三方bean的定义 参数进行自动装配...

安装Nginx

如果没有gcc环境&#xff0c;需要安装gcc yum install gcc-c安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel工作目录 mkdir /opt/nginx && cd /opt/nginx下载安装包 wget http://nginx.org/download/nginx-1.32.1.tar.gz解压安装包…...

爬虫工具you-get

you-get是一个简单易上手的爬虫小工具&#xff0c;可以从网络中爬取多媒体信息&#xff0c;包括图片、音频和视频。you-get的github项目地址为&#xff1a;https://github.com/soimort/you-get 一、安装 以下为相关依赖&#xff0c;需要分别安装&#xff1a; Python 3 (必须…...

hal_stm32_RTC函数

1设置当前时间&#xff1a; 调用 HAL_RTC_SetTime 来设置小时、分钟、秒和亚秒。 调用 HAL_RTC_SetDate 来设置年、月、日和星期。 HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); HAL_StatusTypeDef HAL_RTC_SetDat…...