负载均衡软件和Web应用服务器详解
为什么我们使用软件负载均衡
海量并发下分散请求,减轻服务压力,分布式部署,容灾,解决单点问题,端口复用节约服务器资源
硬件负载均衡成本较高,设备维护较为复杂,稳定性高 nginx haproxy lvs(piranha)
php+fastcgi,modjk+tomcat 软件负责均衡原理 负载均衡分为七层和四层负载均衡,是由通信协议决定均衡模式,如SSL
443是TCP模式,http请求是应用层模式,然后按照一定的调度算法把请求调度到相应的节点 在统一接入层进行请求调度均衡
按照服务器性能调度请求,权值调整 业务层逻辑解耦,按照URL分发 IP层,按照网段分发 容灾
自适应性调度(nginx+fasctcgi,modjk+apache) 注意事项: 服务是否长连接 是否会话黏贴
32位系统和64位系统网络中断问题 安全相关 维护成本 节点生存检测 算法选择 避免跨IDC 跨网段 跨楼层 负责均衡软件特点
LVS特点: 抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生;
稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived) 应用范围比较广,可以对所有应用做负载均衡;
不支持正则处理,不能做动静分离。 常用四种算法: rr:轮叫,轮流分配到后端服务器; wrr:权重轮叫,根据后端服务器负载情况来分配;
lc:最小连接,分配已建立连接最少的服务器上; wlc:权重最小连接,根据后端服务器处理能力来分配。 可以采用ipvsadm
–p(persistence)来保持session,默认是300/s 。 Nginx特点:
工作在7层,可以对做正则规则处理;(如:针对域名、目录进行分流)
配置简单,能ping通就能进行负载功能,可以通过端口检测后端服务器状态,不支持url检测;
抗高并发,采用epoll网络模型处理客户请求; 支持HTTP、TCP和EMail,应用范围比较少;
nginx主要是HTTP和反向代理服务器,低系统资源消耗。 常用四种算法: RR:(默认)轮询,轮流分配到后端服务器;
weight:根据后端服务器性能分配;
ip_hash:每个请求按访问ip的hash结果进行分配,并发小时合适,解决session问题;
fair:(扩展策略),默认不被编译nginx内核,根据后端服务器响应时间判断负载情况,选择最轻的进行处理。 Haproxy特点:
支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机; 配置简单,支持url检测后端服务器状态;
仅做负载均衡软件使用,在高并发情况下,处理速度高于nginx; TCP层多用于Mysql从(读)服务器负载均衡。 常用四种算法:
roundrobin:轮询,轮流分配到后端服务器; static-rr:根据后端服务器性能分配;
leastconn:最小连接者优先处理; source:根据请求源IP,与Nginx的IP_Hash类似。
为什么要解决session会话
负载均衡环境下,每个用户都有可能不固定的访问后端服务器,在有些应用情况下,是必须要求在一定时间内同一用户访问的所有请求都分配给后端同一台服务器去处理,例如:电子商务网站,用户注册页面等,一刷新页面,就会分配到后端的另一台服务器上,那刚才的页面上的信息也都没了,这种情况下,分配同一台服务器处理请求是至关重要的!
Web应用服务器对比 主流应用服务器: Apache后台服务器(主要处理php及一些功能请求 如:中文url)
Nginx前端服务器(利用它占用系统资源少得优势来处理静态页面 大量请求) Lighttpd 图片服务器
总体来说,随着nginx功能得完善将使他成为今后web server的主流。 三种服务器对比:
网友评论