Nginx特点:
- 可工作在七层或四层,可以对做正则规则处理;(如:针对域名、目录进行分流)
- 配置简单,能ping通就能进行负载功能,可以通过端口检测后端服务器状态,不支持url检测;
- 抗高并发,采用epoll网络模型处理客户请求;
- 只支持HTTP和EMail,应用范围比较少;
- Nginx主要是HTTP和反向代理服务器,低系统资源消耗。
弊端
- 轮询只是简单实现请求的顺序转发,并没有考虑不同服务器的性能差异;
- 加权轮询设置了初始时服务器的权重,但是没有考虑运行过程中的服务器状态;
- ip_hash保证同一个客户端请求转发到同一个后台服务器实现了session保存,然而当某一后台服务器发生故障时,某些客户端将访问失败;
- 最少连接数只是考虑了后端服务器的连接数情况,并没有完全考虑服务器的整体性能。
算法:(一共6种,常用4种)
- roundrobin, rr,轮询,默认:
- weight 指定轮询几率,weight和访问比率成正比。用于后端服务器性能不均的情况
- ip_hash 每个请求按访问IP的hash分配,这样来自同一IP固定访问一个后台服务器。
- least_conn(最少连接) 自动检测最少连接最少的,然后分给他
- url_hash 按访问的url的hash结果分配请求,是每个url定向到同一后端服务器上。
- fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
为什么要解决session会话呢?
负载均衡环境下,每个用户都有可能不固定的访问后端服务器,在有些应用情况下,是必须要求在一定时间内同一用户访问的所有请求都分配给后端同一台服务器去处理,例如:电子商务网站,用户注册页面等,一刷新页面,就会分配到后端的另一台服务器上,那刚才的页面上的信息也都没了,这种情况下,分配同一台服务器处理请求是至关重要的!