uwsgi + nginx 部署python项目(二)
实现负载均衡
开启两个服务器,nginx负责分发请求到两个服务器,以减轻单个服务器负担。
配置uwsgi服务器
在a项目目录下生成uwsgi.ini文件,在b项目目录下生成uwsgi.ini文件,如何写可以查看上一篇文章 https://www.cnblogs.com/pyweb/p/12030929.html
两个项目不同点是端口不同。
后台启动uwsgi服务器
nohup uwsgi --ini uwsgi_a.ini &
nohup uwsgi --ini uwsgi_b.ini &
配置nginx配置文件
vim /etc/nginx/nginx.conf
http {
upstream flasktest {
server 127.0.0.1:; # 配置多个服务器
server 127.0.0.1:;
}
server {
listen 0.0.0.0:;
server_name www.flasktest.com;
charset UTF-;
access_log /etc/nginx/FlaskTest_access.log;
error_log /etc/nginx/FlaskTest_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params;
# uwsgi_pass 127.0.0.1:;
uwsgi_pass flasktest; # 使用上面的flasktest进行匹配,表示81端口同时监听82,83端口
uwsgi_read_timeout ;
}
}
分发规则(轮询,ip_hash, fair, url_hash)
# 轮询,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,83的访问比率要比82的访问比率高一倍。
upstream linuxidc{
server 127.0.0.1:82 weight=;
server 127.0.0.1:83 weight=;
} # ip_hash, 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream linuxidc{
ip_hash;
server 127.0.0.1:82;
server 127.0.0.1:83;
}
# fair, 按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。
upstream linuxidc{
server 127.0.0.1:82;
server 127.0.0.1:83;
fair;
}
# url_hash, 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
# 注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
upstream linuxidc{
server 127.0.0.1:82;
server 127.0.0.1:83;
hash $request_uri;
hash_method crc32;
}
其他
upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:
down: 表示单前的server暂时不参与负载.
weight: 默认为1.weight越大,负载的权重就越大。
max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout :max_fails次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream bakend{ #定义负载均衡设备的Ip及设备状态
ip_hash;
server 10.0.0.11: down;
server 10.0.0.11: weight= max_fails= fail_timeout=1s;
server 10.0.0.11: max_fails= fail_timeout=1s;
server 10.0.0.11: backup;
}
uwsgi + nginx 部署python项目(二)的更多相关文章
- uwsgi + nginx 部署python项目(一)
uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uws ...
- 使用uWSGI+nginx部署Django项目
最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...
- ubuntu18+uwsgi+nginx部署django项目
更新系统软件源 sudo apt-get update pip3安装 sudo apt install python3-pip 安装virtualenvwrapper pip3 install vir ...
- vue+uwsgi+nginx部署luffty项目
在部署项目之前本人已经将前端代码和后端代码发布在了一个网站上,大家可自行下载,当然如果有Xftp工具也可以直接从本地导入. django代码 https://files.cnblogs.com/fil ...
- uwsgi+nginx部署django项目
1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2 ...
- centOS+uwsgi+nginx 部署flask项目,问题记录
用flask做的项目想要部署到centOS系统上,填了一些坑,终于成功了,记录一下遇到的问题: 此次部署主要是按照这个博客进行的 https://www.cnblogs.com/Ray-liang/p ...
- Ubuntu+Django+uWSGI+Nginx部署Django项目
安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...
- 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署
准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
随机推荐
- NOIP2015普及组总结
NOIP2015普及组总结 这次考试总体感觉不错,不过觉得时间有点紧,在最后30分钟才打完. 第一题(金币coin):大大的W!爆搜O(N),一分钟打完: 第二题(扫雷游戏mine):同上: 第三题( ...
- jvm——NIO
https://blog.csdn.net/Evankaka/article/details/48464013 https://www.cnblogs.com/aspirant/p/9166944.h ...
- shell练习--PAT试题1009:说反话 (20 分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小 ...
- springboot(11)使用SpringBoot validator进行数据验证
简介: 数据验证是作为一个企业级项目架构上设计的最基础的模块,前辈们曾说过:界面上传递到后台的数据没有百分之百值得相信的!为什么这么说呢?往往我们在编写程序的时候都会感觉后台的验证无关紧要,这样就会给 ...
- 奇怪的 Markdown / LaTeX 笔记
记一下日常见到的一些奇怪的 Markdown / LaTeX 用法... Markdown LaTeX LaTeX 数学 1. 运算符 1.1 造运算符: a \operatorname{sin} c ...
- window.location.hash(hash应用)---跳转到hash值制定的具体页面
location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url.而location. ...
- POJ 3660 Cow Contest 任意两点之间的关系 Floyd
题意:牛之间有绝对的强弱,给出一些胜负关系,问有多少头牛可以确定其绝对排名. #include <iostream> #include <cstdio> #include &l ...
- hdu 1754 线段树 水题 单点更新 区间查询
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- tf.InteractiveSession() 和 tf.Session() 的区别
tf.InteractiveSession():它能让你在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的.这对于工作在交互式环境中的人们来说非常便利,比如使用IPy ...
- ROI pooling
R-CNN需要大量的候选框,对每个候选框都提取特征,速度很慢,无法做到实时检测,无法做到端到端.ROI pooling层实现training和testing的显著加速,并提高检测accuracy. R ...