负载均衡实战
利用前面的nginx反向代理服务器实现负载均衡
修改前面的niginx.conf
在server上面添加 里面的ip会进行轮询 每次对nginx服务器对到其他几个域名
1
2
3
4
5
6
7
8
9
10
11
upstream webs {
# ip_hash;
server 192.168.31.211:80;
server 192.168.31.212:80;
}
在localtion里面修改一下
proxy_pass http://webs;
转发虽然成功了 但是伴随着一些问题 我们也是需要去解决的
负载均衡带来的问题如何处理
会话维持
-
通过工具或者配置(运维手法,可控性比较弱) 在upstream webs 里面 添加一个
ip_hash; 一个用户访问到一台服务器 每次都会hash到用户第一次访问到的那台服务器, 这样虽然解决了会话丢失的问题,但是同时也带来了其他的问题 对性能有所损耗 如果有些用户访问比较频繁 但是有些用户访问不频繁,这样资源没有平均分配到,利用轮询的话可以保障的是每台服务资源分配均匀 总结: 优势:使用运维的手段解决问题无需修改源代码1
劣势:通过运维手段会带来额外的开销,并且不够灵活,无法保证访问的均匀
-
通过软件架构(编码修改)
- 解决方式可以是将session存到数据库或者redis
- 干掉默认session 打造自己会话系统(例如给用户设置token 单点登录)
静态资源
- 静态资源丢失
-
通过工具或者配置(运维手法) 在多台负载服务器上搭建nfs
-
通过软件架构(编码修改) 动静分离(使用一台服务器存储静态资源 推荐使用)
-