大家好,我是IT修真院武汉分院第01期学员,一枚正直善良的web程序员。今天给大家分享一下,修真院官网 java任务6中的深度思考:什么是nginx,什么是负载均衡??
1.背景介绍
什么是nginx,什么是负载均衡?
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。
由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
负载均衡也称负载共享,是指对系统中的负载情况进行动态调整,以尽量消除或减少系统中各节点负载不均衡的现象。
具体实现方法是将过载节点上的任务转移到其他轻载节点上,尽可能实现系统各节点的负载平衡,从而提高系统的吞吐量。
负载共享有利于统筹管理分布式系统中的各种资源,便于利用共享信息及其服务机制扩大系统的处理能力。
2.知识剖析
在实际情况中,当一个服务器有太多客户端访问,服务器并发数太高,我这里使用nginx负载均衡,把客户端请求分配到多个web上,以此减轻服务器压力
3.常见问题
如何启动nginx?如何配置端口、打印日志内容?
4.解决方案
在linux输入 whereis nginx,就在那个文件下下的sbin文件夹输入 ./nginx 启动,配置端口等文件也是在该文件夹下。
我当初因为没分清nginx安装目录和配置文件卡了很久,觉得有必要说一下
5.编码实战
配置日志输出信息和负载均衡,IP_HASH访问
子域访问
日志查看
6.扩展思考
一.nginx正向代理和反向代理
举个例子:
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
二.nginx负载均衡不同的方式
1、Nginx的负载分发策略
Nginx 的 upstream目前支持的分配算法:1)、轮询——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2)、权重——you can you up
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
8.更多讨论
详见视频:
问:根据什么原则向各个服务器分配请求,是当一个服务器无法处理一定数量的请求时才分给另一个吗?
答:轮询、权重、ip_hash。默认轮询的话,当一台服务器down掉自动分配给另一个
问:那个ip_hash是记录电脑IP 然后指定端口吗?
答:是根据请求的客户端的ip生成hash值,记录改ip第一次访问分配的服务器,以后就一直访问这个。优点是可以解决session共享的问题,缺点是加大了分配的服务器压力
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧