负载均衡策略(阿里云)

1.配置负载均衡策略,在/etc/nginx/conf.d/ 新建一个nginx.conf配置文件,加入以下内容
upstream backend{
#ip_hash;
#weight 服务器权重值,如果服务器性能一致,可以将权重值配置为一样
server 127.0.0.1:9701 weight=1;
server 127.0.0.1:9702 weight=2;
server 127.0.0.1:9703 weight=4;

}
server {
    listen         8001;
    server_name    127.0.0.1;
    access_log      /var/log/nginx/nginx_demo_access.log;
    error_log       /var/log/nginx/nginx_demo_error.log;
charset     utf-8;

    client_max_body_size 75M;
    location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
#Backend自己随便起的,但是要保证和upstream后面的名一致
proxy_pass http://backend;
   }

 }
2.将项目上传到服务器,配置uwsgi文件和项目对应nginx端口server,因为使用端口做的负载均衡,所以需要将项目复制三份放在不同的目录下,在每一个项目下新建对应的uwsgi.ini文件,加入项目启动的uwsgi相关配置

3.在/etc/nginx/conf.d/下新建project_nginx.conf文件,在文件中配置nginx服务监听的server端口,需要监听upstearm backend中监听的三个端口,分别配置三个server,监听不同端口,配置和uwsgi交互的内网端口,例如 9701<->9801  ,9702<->9802,9703<->9803....

4.重启nginx服务,打开三个命令行工具,分别进入三个项目目录,使用uwsgi --ini  xxx.ini 启动项目

5.可以把三个项目的首页展示内容稍微改改,再访问项目即可看到效果,当前访问的不一定是上次访问的服务器


操作:


(1)nginx.conf文件内容

upstream backend{
    #ip_hash;
    #weight 服务器权重值,如果服务器性能一致,可以将权重值配置为一样
    server 127.0.0.1:9701 weight=1;
    server 127.0.0.1:9702 weight=2;
    server 127.0.0.1:9703 weight=4;

}
server {
    listen         8001;
    server_name    127.0.0.1;
    access_log      /var/log/nginx/nginx_demo_access.log;
    error_log       /var/log/nginx/nginx_demo_error.log;
    charset     utf-8;

    client_max_body_size 75M;
    location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_buffering off;
    #Backend自己随便起的,但是要保证和upstream后面的名一致
    proxy_pass http://backend;
   }
 }

(2)project_nginx_conf文件内容

server {
    listen         9701;
    server_name    127.0.0.1;
    access_log      /var/log/nginx/logindemo_access.log;
    error_log       /var/log/nginx/logindemo_error.log;
    charset     utf-8;

    client_max_body_size 75M;
    root /home/project/f_demo;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9801;
        uwsgi_read_timeout 2;
    }
   
 }
 server {
    listen         9702;
    server_name    127.0.0.1;
    access_log      /var/log/nginx/logindemo_access.log;
    error_log       /var/log/nginx/logindemo_error.log;
    charset     utf-8;

    client_max_body_size 75M;
    root /home/p1/f_demo;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9802;
        uwsgi_read_timeout 2;
    }  
 }
  server {
    listen         9703;
    server_name    127.0.0.1;
    access_log      /var/log/nginx/logindemo_access.log;
    error_log       /var/log/nginx/logindemo_error.log;
      charset     utf-8;
    client_max_body_size 75M;
    root /home/p2/f_demo;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9803;
        uwsgi_read_timeout 2;
    }

 }

(3)uwsgi.ini文件

[uwsgi]
# Django-related settings
socket = 127.0.0.1:9801  #因为此项目放在了3个不同的文件夹下,所以3个socket端口号也是不一样的,另外两个端口号分别为:9802,9803
# 项目绝对路径
chdir           = /home/p1/f_demo   #另外两个文件中chdir属性为:将p1分别换为p2,project
# Django的wsgi文件相对路径
wsgi-file       =f_demo/wsgi.py
# process-related settings
# master
master          = True
# 最大进程数
processes       = 4
# 线程数
threads         = 2
#设置此参数,有一个主进程
master=True
#守护进程的方式运行,log日志存在此log文件里
deamonize=/var/log/uwsgi/djangoProject.log
#主进程id写入文件里
pidfile= /var/log/nginx/uwsgi.pid
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
#退出时,清理环境
vacuum          = True
reload-mercy    = 10
max-requests    = 5000
limit-as        = 512
buffer-size     = 30000

 


在启动这3个服务时,又遇到了端口被占的问题.通过以下命令解决:


猜你喜欢

转载自blog.csdn.net/baidu_32542573/article/details/80586323