【总结】Http和服务服务器负载均衡
来源:互联网 发布:移动感知测试软件 编辑:程序博客网 时间:2024/06/08 03:36
1,备选方案
- 硬件:F5,Array
- 软件:
- Nginx:
- 优点:
- 工作在网络第七层之上,针对Http做分流策略,比如:域名,URL,目录结构,正则规则比HAProxy强大
- Nginx对网络稳定性依赖非常小,LVS对网络依赖比较大
- Nginx安装比较简单
- 曾担高负载且稳定
- Nginx可以可以通过端口检查服务器内部的故障
- Nginx不仅仅是负载均衡器/反向代理软件,也是强大的Web应用服务器
- 作为强大的中层反向代理使用
- Nginx可以作为静态网页和图片服务器,性能很强大
- 缺点:
- 仅支持Http,Https,Email协议
- 只支持后端服务器的端口健康检测,不支持URL
- LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器
- 优点:
- 抗负载能力强,工作在四层仅作分发之用,负载软件性能最强的
- 配置性比较低
- 工作在第四层,应用范围广,如:数据库,在线聊天室
- 缺点:
- 不支持正则表达式处理
- 不能做动静分离
- 复杂
- HAProxy
- 优点:
- 支持虚拟主机
- 支持Session保持,Cookie引导,支持URL检测后端服务器状态
- 支持TCP协议负载均衡转发
2,四层和七层负载均衡
- 四层:IP+端口的负载均衡。将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次 TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的
- OSI第四层
- 不理解应用协议,如:HTTP/FTP/MySQL
- LVS
- F5
- 七层:基于URL等应用层信息的负载均衡。负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务
- OSI第七层
- Nginx,HAProxy,MySQL Proxy
- 优点:
- 可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性
- 通过对HTTP报头的检查,可以检测出HTTP400、500和600系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障
- 可根据流经的数据类型(如判断数据包是图像文件、压缩文件或多媒体文件格式等),把数据流量引向相应内容的服务器来处理,增加系统性能
- 能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是asp、cgi等的动态文档请求,把相应的请求引向相应的服务器来处理,提高系统的性能及安全性
3,负载均衡算法
- 轮循均衡(Round Robin)
- 权重轮循均衡(Weighted Round Robin)
- 随机均衡(Random)
- 权重随机均衡(Weighted Random)
- 响应速度均衡(Response Time)
- 最少连接数均衡(Least Connection)
- 处理能力均衡
- DNS响应均衡(Flash DNS)
4,Web负载均衡
- 详情请参照文章“【总结】Web负载均衡”
- HTTP重定向
- DNS负载均衡
- 反向代理负载均衡
- IP负载均衡
- 直接路由
- IP隧道
5,方案选择
- 说明:
- 中小型的Web应用,比如日PV小于1000万:Nginx
- 机器不少:DNS
- 大型网站或重要的服务,且服务器比较多时:LVS
- 最终方案选择:
- Nginx:Http服务,负载均衡器,反向代理
- Tomcat:应用服务器
- Memcache:Session共享
0 0
- 【总结】Http和服务服务器负载均衡
- Nginx服务器安装,高性能的HTTP、TCP、反向代理、负载均衡等服务和配置
- 服务器集群和负载均衡
- Nginx实现HTTP负载均衡和TCP负载均衡
- 服务器负载均衡——总结归
- Nginx代理服务和负载均衡
- kubernetes 服务发现和负载均衡
- 多服务器群集和负载均衡方案
- 关于数据库和web服务器负载均衡
- 服务器集群和负载均衡介绍
- 使用Nginx为HTTP服务做负载均衡
- [分布式负载均衡实例]ruby服务迁移,mongrel多服务器,lighttpd代理负载均衡
- nginx源码学习 非http服务器的负载均衡实现
- apache反向代理和负载均衡总结
- apache反向代理和负载均衡总结
- 负载均衡 和 清除 DNS 小总结
- Nginx Http负载均衡
- 什么是服务器负载均衡
- 解决Android SDK Manager的Download interrupted: URL not found问题
- 一个Debug版本不崩而Release版本可能崩的问题
- 基本的灰度变换方法
- iOS歌词解析
- Javascript闭包
- 【总结】Http和服务服务器负载均衡
- 常用SQL语句:
- Runtime系列Blog
- 【总结】搜索服务Solr
- 执行hibernate报错“node to traverse cannot be null”问题的解决
- Redis学习记录之命令Pub/Sub(十六)
- android开机动画启动流程
- Android DrawingCache超詳細解析,解決getDrawingCache方法回傳null
- 【总结】Hadoop剖析