【IT168评论】互联网的快速发展和无线物联网的崛起,为互联网服务平台快速响应请求提出更高要求。应用缓存系统对于服务提高响应速度和解决高并发的读写应用数据给出解决方案。这里列举目前在互联网服务各个层面应用缓存系统可使用的开源项目。 本文使用的名词解释参考请看如下
【IT168评论】互联网的快速发展和无线物联网的崛起,为互联网服务平台快速响应请求提出更高要求。应用缓存系统对于服务提高响应速度和解决高并发的读写应用数据给出解决方案。这里列举目前在互联网服务各个层面应用缓存系统可使用的开源项目。
本文使用的名词解释参考
2.1网页静态内容加速
Squid作为一个开源的跨平台的web缓存代理,把常用的请求内容缓存到系统,提高HTTP,HTTPS,FTP的响应速度。为互联网服务提供商节省带宽,提升用户体验,降低应用的硬件投入成本。本方案应用squid在如下几个方面:
(1)网站静态内容缓存,公司网站使用内容管理系统进行内容发布,对外提供服务,公网互联网用户访问首先请求squid代理缓存,如果有缓存就直接返回缓存,没有缓存由缓存访问网站内容管理系统请求内容并缓存返回。
(2)办公内网透明上网代理缓存,公司所有的办公pc代理网关指向squid搭建的透明反向代理,代理代为pc访问各个互联网网站,并使用算法对常用访问的网页内容进行缓存,提高内网访问互联网的访问速度,降低办公网出口带宽。
2.2应用对象缓存
开发互联网应用,经常会用到数据库系统存储数据,提升数据库系统的读写速度和反映能力无疑是提高应用响应能力的基础。但是由于中小企业在硬件投入上的局限性,而把数据对象加载到内存进行缓冲无疑成为性价比最佳的解决方案。以当前市售典型PC服务器硬件对比,对于内存读写基本数倍快于硬盘读写。目前几乎所有互联网应用都应用到了应用缓存系统作为数据库和应用之间作为缓冲,这里我们介绍由FALLabs实验室在2007年使用C语言编写的高性能简单键值对轻量数据库TokyoCabinet实现的缓存系统。
TokyoTyrant是TokyoCabinet的网络接口,提供兼容Memcached(一种广泛使用分布式缓存系统)协议访问,为各种应用开发(C,JAVA,PHP,PERL...)使用提供良好的兼容性。相比较其他缓存系统,TokyoTyrant接口支持双机互为主备模式,在应用高可用负载均衡系统前提下支持故障转移,同时由于直接使用linux原生的网络模型epoll,对于小数据的高并发读写具有很高的性能。同时FALLabs同时推出了TokyoCabinet的全文索引系统TokyoDystopia和基于web界面的内容管理系统TokyoPromenade。提升了数据库的易用性。
FALLabs在2010年使用C++语言重写了具有自动过期实现的KyotoCabinet数据库替代TokyoCabinet和KyotoTycoon替代TokyoTyrant,软件采用组件化和插件化开发,能够轻松扩展,同时性能上得到进一步加强,为大家提供了更好的选择。
本方案在应用TokyoTyrant作为缓存系统接口,Memcached协议作为通讯协议,配置双机互为主备模式,作为故障转移的处理方案。前端使用LVS配置虚拟服务器作为负载均衡和高可用的对外服务器访问,在对象关系映射系统的缓存中完全应用本缓存系统,使原数据库的访问流量降低50%,原一个WEB检索耗费200毫秒,现使用缓存系统降低为50毫秒左右,响应时间提4倍之多。
三、基于LVS和keepalived搭建应用负载均衡系统
互联网应用快速发展,用户量和访问的成数量级提高对业务平台的响应能力和高可靠性提出新的要求。怎样在原来单机应用的前提下快速扩展服务节点提高平台带负载能力,本方案采用LVS(Linuxvitualserver)和KeepAlived两个开源项目相结合实现应用负载均衡LoadBalence解决方案,在满足可扩充性同时提高了业务的可靠性。在非故障情况下双机实现业务根据负载分担算法进行双机同时带负载,在故障情况下,根据故障监测机制在设定时间内自动剔除真实故障节点:HealthCheck,并在负载均衡器本身出现故障时候能够自动切换:Failover。
3.1项目介绍
3.1.1LVS
LVS使用Linux操作系统通过扩展linux内核,实现基于IP层和内容请求分发的负载平衡调度,将一组服务器构成一个实现可伸缩,高可用网络服务的服务器集群。LVS由前端的负载均衡器(LoadBalancer,LB)和后端的真实服务器(RealServer,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(VirtualServer),而看不到提供服务的RS群。LVS软件的核心是运行在LB上的IPVS,它使用基于IP层的负载均衡方法。IPVS的总体结构主要由IP包处理、负载均衡算法、系统配置与管理三个模块及虚拟服务器与真实服务器链表组成。
▲图3-1
1、WatchDog负责checkers和VRRP进程的状况。
2、Checkers负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换句话说—可以没有VRRPStack,但健康检查healthchecking是一定要有的。
3、VRRPStack负责负载均衡器之间的失败切换FailOver.如果只用一个负载均衡器,则
VRRP不是必须的。
路由器用户名和密码4、IPVSwrapper用来发送设定的规则到内核ipvs代码。
5、NetlinkReflector用来设定vrrp的vip地址等。
3.2使用LVS和KeepAlived搭建应用负载均衡集群
在搭建负载均衡集群之前,我们先来了解一下负载均衡类型,一般分直接路由模式DR、网络地址转换模式NAT以及隧道模式TUN三种。LVS真实服务器的配置是根据其所采用的负载均衡种类来做相应操作的。在本方案的应用里,为了获得最高的性能,采用的负载均衡种类是直接路由模式DR,整体架构参考如下:
3.2.1操作系统安装
使用LVS的时候,负载均衡器和真实服务器主机尽量采用同一版本的linux操作系统,这样IPVS版本的一致性,避免出现由于版本或协议问题出现兼容性隐性故障。另由于IPVS和IPTABLES采用同样的ip数据封包过滤转发机制,所以两者不能同时工作,必须把负载均衡器所在linux操作系统iptables软件关闭。
3.2.2负载均衡器配置
负载均衡器安装KeepAlived软件,主备负载均衡器本身使用VRRP虚拟路由协议进行通讯,实现故障切换。KeepAlived是LVS的扩展项目,通过对真实服务器的健康检查(HealthCheck),对出现故障的真实服务器节点进行管理。以下为一个典型主备负载均衡器的配置,下面摘取关键部分加以说明,详细配置请参考项目文档。
3.2.2.1全局配置。
虚拟路由器IDrouter_id,主备两台配置要保持一致
通知邮件地址主要是为发生一些事件(主备切换,真实服务器节点增加或剔除),需要通知管理员配置的邮件地址。
tags:路由器用户名和密码