负载均衡策略(阿里云)
#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;
}
}
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个服务时,又遇到了端口被占的问题.通过以下命令解决: