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

2024-05-12 12:12

本文主要是介绍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 负载均衡 踩坑日记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982599

相关文章

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安