zoukankan      html  css  js  c++  java
  • 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:82; # 配置多个服务器 server 127.0.0.1:83; } server { listen 0.0.0.0:81; server_name www.flasktest.com; charset UTF-8; 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:82; uwsgi_pass flasktest; # 使用上面的flasktest进行匹配,表示81端口同时监听82,83端口 uwsgi_read_timeout 2; } }

    分发规则(轮询,ip_hash, fair, url_hash)

    # 轮询,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,83的访问比率要比82的访问比率高一倍。
    upstream linuxidc{ 
          server 127.0.0.1:82 weight=5; 
          server 127.0.0.1:83 weight=10; 
    }


    # 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:9090 down; 
          server 10.0.0.11:8080 weight=2 max_fails=1 fail_timeout=1s; 
          server 10.0.0.11:6060 max_fails=1 fail_timeout=1s; 
          server 10.0.0.11:7070 backup; 
    }
  • 相关阅读:
    整体的一个学习线路图
    PyCharm快捷键
    iOS从初级至高级开发工程师面试知识点
    第1章 iOS逆向工程简介
    iOS逆向工程分析与实战-开篇
    《牧羊少年奇幻之旅》读书笔记
    《如何高效学习》读书笔记
    函数式编程-RAC学习笔记
    iOS 能实现一键分享多图到朋友圈吗
    VC/MFC动态画线,画圆,画椭圆,画矩形 .
  • 原文地址:https://www.cnblogs.com/pyweb/p/12035046.html
Copyright © 2011-2022 走看看