1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Django项目部署(四)NGINX实现负载均衡

Django项目部署(四)NGINX实现负载均衡

时间:2022-06-27 10:29:07

相关推荐

Django项目部署(四)NGINX实现负载均衡

可参考博客:/gaowenlong/1887997

/z406245159/article/details/72821285

/jsonhc/p/7199295.html?utm_source=itdadao&utm_medium=referral

负载均衡:A---应用服务器:运行项目的服务器 同一个项目 单独的存在的时候正常运行项目 web服务器运行 192.168.1.186(上面有 nginx ,uwsgi, 虚拟环境 ,80端口 ,mysql数据库 )B----应用服务器:运行项目的服务器 同一个项目 单独的存在的时候正常运行项目 web服务器运行 192.168.1.187C---应用服务器:运行项目的服务器 同一个项目 单独的存在的时候正常运行项目 web服务器运行 192.168.1.188D---反向代理服务器:192.168.1.189,用户通过访问p服务器的地址之后间接的来访问A/B/C应用服务器其中的一台服务器的项目E---服务器 安装mysql数据库 47.100.xxx.xxx如何去做反向代理配置nginx web服务器

根据之前做的,如今有两台web服务器 1.186和1.187 。 负载均衡服务器1.189只安装NGINX

先确认189的NGINX能正常运行

一对一的反向代理 (了解即可)

当url 匹配路径的时候 /一对一的反向代理 访问192.168.1.189 ---> 187proxy_pass http://192.168.1.187;

vim /etc/nginx/conf.d/default.conf

192.168.1.189/admin/login

访问 (此时访问的是187的内容)

这是186的界面(为了区别187)

一对多 负载均衡 (186,187)

1、权重的

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况

upstream local_servers {server 192.168.1.187:8996 weight=1;server 192.168.1.185:8997 weight=1;server 192.168.1.185:8997 weight=1;}upstream local_servers1 {server 192.168.1.187 weight=1;server 192.168.1.185 weight=1;server 192.168.1.185 weight=1;}server {listen 80;server_name localhost;charset utf-8;location / {proxy_pass http://local_servers1;proxy_set_header Host $host; // $host就是nginx代理服务器proxy_set_header X-Real-IP $remote_addr; //客户端真实ipproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering off;//代理缓存删除}}

#出现的频率大概是1:1。这就是upstream中weight的作用,表示weight表示权重,权重越大,请求转发到这个地址的概率就越大。

修改后重启 systemctl restart nginx.service

访问,看效果

分割线=

2、ip_hash的

将刚才的权重注释掉,换成ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

当访问的时候会生成个session值 ,写在数据库里的

管理员在登录的时候把用户名存session数据库中,生成一条session数据的时候,session_data:用户名, session_key:django自动生成写入数据库中django_session , 同时又把session_key存储到了cookie

可看出 lvn开头的sessionid 是存在数据库里的

此时当web项目都访问同一个数据库的时候,使用weight是没有问题的。 但是如果访问的是不同的数据库,比如都使用自身机器的数据库,这时候会出问题,你访问页面的时候,他会访问两台数据库的内容。他会一直循环在登录页面。使用ip_hash能处理session问题

session 默认数据是存储在数据库中,存储数据的位置是可以改变存储到指定服务器的某个文件中,需要配置django只能用ip_hash

小结:

1、如果多台应用服务器连接的是同一台服务器上的数据库的话,使用权重,分配IP_Hash 都可以2、如果多台应用服务器连接的是不同服务器的数据库,那么使用权重的分配方式就出问题了,那么可以使用的方式 ip_hash解决问题

END

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。