lylzsu 2017-08-01
负载均衡技术
负载均衡
1.1 负载均衡类型
HTTP重定向,DNS域名解析,反向代理,IP负载均衡,数据链路层负载均衡
1.2负载均衡算法
随机 ,轮询 ,加权轮询,最小连接数,加权最小连接数,源地址散列
1.3常用的负载均衡技术包括:
硬解:F5
软件:dubbo , lvs、haproxy、nginx 等
lvs、haproxy、nginx 负载均衡的比较分析
链接:http://blog.csdn.net/gzh0222/article/details/8540604
实践
1.dubbo 应用服务器负载均衡(详见dubbo)
环境
windows/Linux/Unix
组件
zookeeper 集群(可用性)
应用服务器集群
配置
负载均衡设置
总结
高性能:集群/负载均衡
高可用性: 集群
高伸缩性:集群/负载均衡
高可扩展性:dubbo
集群:
1.web应用集群:
1.1 原理:基于阿里dubbo框架实现
做法:
[1]在3台不同物理服务器上部署应用(基于Tomcat);
[2]应用都注册于1个zookeeper集群上;
1.2zookeeper集群:分布式协调服务集群
1.3 zookeepre服务监控中心集群
1.4 测试/优化
案例设计:
用户登录服务,在本地进行远程服务调用;
尝试:在主zookeeper 异常关闭时,服务是否继续可用(先关1再关1);
测试方法:关闭其中一台zookeeper测试
发现:
1)当本机有zookeeper时,会首先注册到本地;再测:关闭zookeeper2,重启tomcat2,看服务会注册到1还是3;
发现注册的地址还是130;说明:若注册地址包含本机,默认会优先选择集群中本机,因为集群式通过集体服务的,选择本机提高效率;
再测:在注册地址配置文件内,不写本机;还是会写成本机;
2)三台zookeeper组成的集群,至少活着2台才行();
尝试:服务器停掉时,访问是否异常(先关1再关1);
测试方法:一台显示登陆成功,一台显示登陆失败;关闭其中一台测试;
在控制台观察:访问的特点
负载均衡:
应用通过Dubbo实现负载均衡
zookeeper 无
Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。
一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析:
(1)通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,
所以对于规模较小的网络服务来说暂时还没有需要使用;
(2)通过类似于Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。
2.1 中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;
2.2 大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。
目前关于网站架构一般比较合理流行的架构方案:
Web前端采用Nginx/HAProxy+Keepalived作负载均衡器;
后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。
当然要根据项目具体需求制定方案,下面说说各自的特点和适用场合。
参考:http://www.ha97.com/5646.html
1.什么是LVS
LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。
调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。
为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其体系结构如图所示:
参考: http://soft.chinabyte.com/25/13169025.shtml
2.什么是Nginx
Nginx是一款轻量级的Web 服务器,反向代理及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,
中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应
特点: 来自网络
【1、热部署】
在master管理进程与worker工作进程的分离设计,使的Nginx具有热部署的功能,那么在7×24小时不间断服务的前提下,升级Nginx的可执行文件。也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。
【2、可以高并发连接】
这是一个很重要的一个特性!在这一个 互联网 快速发展, 互联网用户数量不断增加,一些大公司、网站都需要面对高并发请求,如果有一个能够在峰值顶住10万以上并发请求的Server,肯定会得到大家的青睐。
理论上,Nginx支持的并发连接上限取决于你的内存,10万远未封顶。
【3、低的内存消耗】
在一般的情况下,10000个非活跃的HTTP Keep-Alive 连接在Nginx中仅消耗2.5M的内存,这也是Nginx支持高并发连接的基础。
【4、处理响应请求很快】
在正常的情况下,单次请求会得到更快的响应。在高峰期,Nginx可以比其他的Web服务器更快的响应请求。
【5、具有很高的可靠性】
Nginx是一个高可靠性的Web服务器,这也是我们为什么选择Nginx的基本条件,现在很多的网站都在使用Nginx,足以说明Nginx的可靠性。高可靠性来自其核心框架代码的优秀设计、模块设计的简单性;并且这些模块都非常的稳定。
【6、反向代理】
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。
何为反向代理呢?即以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
而Nginx主要完成的工作就是反向代理,比如我们向一台服务器的80端口发送了请求,该请求首先由Nginx监听到,其接受到请求内容后再转发给其他服务器,其他服务器处理完后再将结果传送给Nginx,最后由Nginx来统一返回给初始请求端。
Nginx最常见的使用方法就是作为静态资源伺服器,比如将CSS,JS,html,htm等文件进行缓存处理。
我们需要分文件类型来进行过滤,比如jsp直接给tomcat处理,因为nginx并不是servlet容器,没办法处理JSP,而html,js,css这些不需要处理的,直接给nginx进行缓存。
Nginx Web服务器优点
Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:
在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应,
Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.
作为邮件代理服务器: Nginx Web服务器同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.
Nginx Web服务器是一个 安装非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级.
具体参考:http://tengine.taobao.org/book/
3.keepalived
Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。
Keepalived 以 VRRP 协议为实现基础,用 VRRP 协议来实现高可用性(HA)。VRRP(Virtual RouterRedundancy Protocol)协议是用于实现路由器冗余的协议,VRRP 协议将两台或多台路由器设备虚拟成一个
设备,对外提供虚拟路由器 IP(一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如果工作正常的话就是 MASTER, 或者是通过算法选举产生, MASTER 实现针对虚拟路由器 IP 的各种网络功能,如 ARP 请求,ICMP,以及数据的转发等;其他设备不拥有该虚拟 IP,状态是 BACKUP,除了接收 MASTER 的
VRRP 状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP 将接管原先 MASTER 的网络功能。VRRP 协议使用多播数据来传输 VRRP 数据, VRRP 数据使用特殊的虚拟源 MAC 地址发送数据而不是自身网卡的 MAC 地址,VRRP 运行时只有 MASTER 路由器定时发送 VRRP 通告信息,表示 MASTER 工作正常以及虚
拟路由器 IP(组),BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信息,各 BACKUP 将宣告自己成为 MASTER,发送通告信息,重新进行 MASTER 选举状态。
4.比较
(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
参考:http://www.ha97.com/5646.html
=================================================
=================================================
=================================================
=================================================