- 浏览: 64340 次
- 性别:
- 来自: 成都
文章分类
最新评论
今天抽空把一些HA(高可用)技术点整理了下,
这些技术点都介绍的很简单,希望深入了解的同学,网上有很多详尽的公开资料可供研究。
介绍它们只是希望能起到抛砖引玉的作用,集思广益,让部分技术能在保障京东服务的高可用中起到一些作用。
基于四层交换技术的负载均衡:
基于四层交换技术的负载均衡 ---- 这种技术是在第四层交换机上设置Web服务的虚拟IP地址,这个虚拟IP地址是DNS服务器中解析到的Web服务器的IP地址,对客户端是可见的。
当客户访问此Web应用时,客户端的Http请求会先被第四层交换机接收到,它将基于第四层交换技术实时检测后台Web服务器的负载,根据设定的算法进行快速交换。常见的算法有轮询、加权、最少连接、随机和响应时间等。
基于七层交换技术的负载均衡:
基于七层交换技术的负载均衡 ---- 基于第七层交换的负载均衡技术主要用于实现Web应用的负载平衡和服务质量保证。
它与第四层交换机比较起来有许多优势:
第七层交换机不仅能检查 TCP/IP数据包的TCP和UDP端口号,从而转发给后台的某台服务器来处理,而且能从会话层以上来分析Http请求的URL,
根据URL的不同将不同的Http请求交给不同的服务器来处理(可以具体到某一类文件,直至某一个文件),
甚至同一个URL请求可以让多个服务器来响应以分担负载(当客户访问某一个URL,发起Http请求时,它实际上要与服务器建立多个会话连接,得到多个对象,例如.txt/.gif/.jpg文档,
当这些对象都下载到本地后,才组成一个完整的页面)。
DNS负载均衡:
DNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,
可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。
因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web 服务器,从而达到负载均衡的目的。
这种技术的优点是,实现简单、实施容易、成本低、适用于大多数TCP/IP应用;但是,其缺点也非常明显,
首先这种方案不是真正意义上的负载均衡,DNS 服务器将Http请求平均地分配到后台的Web服务器上,
而不考虑每个Web服务器当前的负载情况;如果后台的Web服务器的配置和处理能力不同,最慢的 Web服务器将成为系统的瓶颈,
处理能力强的服务器不能充分发挥作用;其次未考虑容错,如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS 请求分配到这台故障服务器上,导致不能响应客户端。
最后一点是致命的,有可能造成相当一部分客户不能享受Web服务,并且由于DNS缓存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为几十分钟甚至更长)。
反向代理负载均衡:
使用代理服务器可以将请求转发给内部的Web服务器。比如apache,nginx,squid等服务器均支持反向代理。
但是,对于连接请求数量非常大的时候,代理服务器的负载也会非常之大,在最后反向代理服务器会成为服务的瓶颈。
F5:
F5 BIG-IP LTM 的官方名称叫做本地流量管理器,可以做4-7层负载均衡,具有负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、
IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、
选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙---包过滤、包消毒等功能。
F5 BIG-IP用作HTTP负载均衡器的主要功能:
① F5 BIG-IP提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
② F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,
从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,
F5 BIG-IP就会自动查证应用已能对客户请求作出正确响应并恢复向该服务器传送。
③ F5 BIG-IP具有动态Session的会话保持功能。
④ F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。
LVS:
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);
支持十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
三种负载均衡技术介绍如下:
1.Virtual Server via Network Address Translation(VS/NAT)
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;
真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
2.Virtual Server via IP Tunneling(VS/TUN)
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。
为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。
由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。
3.Virtual Server via Direct Routing(VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。
这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。
分类 VS/NAT VS/TUN VS/DR
服务器操作系统 任意 支持隧道 多数(支持Non-arp )
服务器网络 私有网络 局域网/广域网 局域网
服务器数目(100M网络) 10-20 100 多(100)
服务器网关 负载均衡器 自己的路由 自己的路由
效率 一般 高 最高
Haproxy:
HAProxy提供高可用性、负载均衡 以及基于TCP和HTTP应用的代理,它是免费、快速并且可靠的一种解决方案。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,
同时可以保护你的web服务器不被暴露到网络上。
优点:
支持session保持,同时支持通过获取指定的url来检测后端服务器的状态。
支持tcp模式的负载均衡。比如可以给mysql的从服务器集群和邮件服务器做负载均衡。
缺点:
不支持虚拟主机。
Nginx负载均衡:
优点:
性能好,可以负载超过2万的并发。
功能多,除了负 载均衡,还能作Web服务器,而且可以通过Geo模块来实现流量分配。
社区活跃,第三方补丁和模块很多。
支持gzip proxy。
缺点:
不支持session保持。
对后端realserver的健康检查功能效果不好。而且只支持通过端口来检测,不支持通过url来检测。
nginx对big request header的支持不是很好,如果client_header_buffer_size设置的比较小,就会返回400bad request页面。
nginx负载均衡配置参考:
upstream bakend{#定义负载均衡设备的Ip及设备状态
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
proxy_pass http://bakend/;
每个设备的状态可以设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
keepalived:
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,
当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
HeartBeat:
HeartBeat用于搭建双机热备环境,可以通过专门的心跳线来连接双机,也可以通过普通的网线来连接。
Heartbeat是linux的HA插件,它可以通过主备的互相检测来到达主服务器倒了,自动切换备服务器。不仅可以用于lvs,其他服务也可以使用。
Heartbeat软件不仅可以作为高可靠性的HA软件独立使用,也可以配合其它IP分发器做Balancing Cluster应用。
Heartbeat包括以下几个组件:
heartbeat – 节点间通信校验模块
CRM - 集群资源管理模块
CCM - 维护集群成员的一致性
LRM - 本地资源管理模块
Stonith Daemon - 提供节点重启服务
logd - 非阻塞的日志记录
apphbd - 提供应用程序级的看门狗计时器
Recovery Manager - 应用故障恢复
底层结构--包括插件接口、进程间通信等
CTS – 集群测试系统,集群压力测试
DRBD:
DRBD由PhilippReisner and LarsEllenberg 开发维护,它是基于Linux系统下的块复制分发设备。它可以让你把本地磁盘镜像复制到远程主机上。
把它加上心跳(heartbeat,HB)功能,就可以构建Linux下的高可用(HA)集群环境。
DRBD也可以成为网络RAID-1,当数据写入本地文件系统时,数据还将会发送到网络中另一台主机上,以相同的形式记录在该主机的文件系统中。
DRBD的工作原理如下图:
+------------+
| 文件系统 |
+------------+
|
V
+---------------+
| 块设备层 |
| (/dev/drbd1) |
+---------------+
| |
| |
V V
+-------------+ +--------------+
| 本地硬盘 | | 远程主机硬盘 |
| (/dev/hdb1) | | (/dev/hdb1) |
+-------------+ +--------------+
rsync:
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了------remote sync。
它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
rsync的主页地址为:http://rsync.samba.org/
使用rsync+inotify配置触发式(近实时)远程同步。
sersync 服务器实时镜像、自动同步程序:
sersync主要用于服务器同步,web镜像等功能。基于 boost1.41.0,inotify api,rsync command.开发。
目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),
这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:
1. sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),
所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
2. 相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
3. 另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
4. 本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每10个小时对同步失败的文件重新同步。
5. 本项目自带crontab功能,只需在 xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
6. 本项目socket与http插件扩展,满足您二次开发的需要。
原理:
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,
并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,
不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常 高。
应用:
金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,
干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,
自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/
这些技术点都介绍的很简单,希望深入了解的同学,网上有很多详尽的公开资料可供研究。
介绍它们只是希望能起到抛砖引玉的作用,集思广益,让部分技术能在保障京东服务的高可用中起到一些作用。
基于四层交换技术的负载均衡:
基于四层交换技术的负载均衡 ---- 这种技术是在第四层交换机上设置Web服务的虚拟IP地址,这个虚拟IP地址是DNS服务器中解析到的Web服务器的IP地址,对客户端是可见的。
当客户访问此Web应用时,客户端的Http请求会先被第四层交换机接收到,它将基于第四层交换技术实时检测后台Web服务器的负载,根据设定的算法进行快速交换。常见的算法有轮询、加权、最少连接、随机和响应时间等。
基于七层交换技术的负载均衡:
基于七层交换技术的负载均衡 ---- 基于第七层交换的负载均衡技术主要用于实现Web应用的负载平衡和服务质量保证。
它与第四层交换机比较起来有许多优势:
第七层交换机不仅能检查 TCP/IP数据包的TCP和UDP端口号,从而转发给后台的某台服务器来处理,而且能从会话层以上来分析Http请求的URL,
根据URL的不同将不同的Http请求交给不同的服务器来处理(可以具体到某一类文件,直至某一个文件),
甚至同一个URL请求可以让多个服务器来响应以分担负载(当客户访问某一个URL,发起Http请求时,它实际上要与服务器建立多个会话连接,得到多个对象,例如.txt/.gif/.jpg文档,
当这些对象都下载到本地后,才组成一个完整的页面)。
DNS负载均衡:
DNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,
可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。
因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web 服务器,从而达到负载均衡的目的。
这种技术的优点是,实现简单、实施容易、成本低、适用于大多数TCP/IP应用;但是,其缺点也非常明显,
首先这种方案不是真正意义上的负载均衡,DNS 服务器将Http请求平均地分配到后台的Web服务器上,
而不考虑每个Web服务器当前的负载情况;如果后台的Web服务器的配置和处理能力不同,最慢的 Web服务器将成为系统的瓶颈,
处理能力强的服务器不能充分发挥作用;其次未考虑容错,如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS 请求分配到这台故障服务器上,导致不能响应客户端。
最后一点是致命的,有可能造成相当一部分客户不能享受Web服务,并且由于DNS缓存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为几十分钟甚至更长)。
反向代理负载均衡:
使用代理服务器可以将请求转发给内部的Web服务器。比如apache,nginx,squid等服务器均支持反向代理。
但是,对于连接请求数量非常大的时候,代理服务器的负载也会非常之大,在最后反向代理服务器会成为服务的瓶颈。
F5:
F5 BIG-IP LTM 的官方名称叫做本地流量管理器,可以做4-7层负载均衡,具有负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、
IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、
选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙---包过滤、包消毒等功能。
F5 BIG-IP用作HTTP负载均衡器的主要功能:
① F5 BIG-IP提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
② F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,
从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,
F5 BIG-IP就会自动查证应用已能对客户请求作出正确响应并恢复向该服务器传送。
③ F5 BIG-IP具有动态Session的会话保持功能。
④ F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。
LVS:
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);
支持十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
三种负载均衡技术介绍如下:
1.Virtual Server via Network Address Translation(VS/NAT)
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;
真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
2.Virtual Server via IP Tunneling(VS/TUN)
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。
为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。
由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。
3.Virtual Server via Direct Routing(VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。
这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。
分类 VS/NAT VS/TUN VS/DR
服务器操作系统 任意 支持隧道 多数(支持Non-arp )
服务器网络 私有网络 局域网/广域网 局域网
服务器数目(100M网络) 10-20 100 多(100)
服务器网关 负载均衡器 自己的路由 自己的路由
效率 一般 高 最高
Haproxy:
HAProxy提供高可用性、负载均衡 以及基于TCP和HTTP应用的代理,它是免费、快速并且可靠的一种解决方案。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,
同时可以保护你的web服务器不被暴露到网络上。
优点:
支持session保持,同时支持通过获取指定的url来检测后端服务器的状态。
支持tcp模式的负载均衡。比如可以给mysql的从服务器集群和邮件服务器做负载均衡。
缺点:
不支持虚拟主机。
Nginx负载均衡:
优点:
性能好,可以负载超过2万的并发。
功能多,除了负 载均衡,还能作Web服务器,而且可以通过Geo模块来实现流量分配。
社区活跃,第三方补丁和模块很多。
支持gzip proxy。
缺点:
不支持session保持。
对后端realserver的健康检查功能效果不好。而且只支持通过端口来检测,不支持通过url来检测。
nginx对big request header的支持不是很好,如果client_header_buffer_size设置的比较小,就会返回400bad request页面。
nginx负载均衡配置参考:
upstream bakend{#定义负载均衡设备的Ip及设备状态
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
proxy_pass http://bakend/;
每个设备的状态可以设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
keepalived:
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,
当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
HeartBeat:
HeartBeat用于搭建双机热备环境,可以通过专门的心跳线来连接双机,也可以通过普通的网线来连接。
Heartbeat是linux的HA插件,它可以通过主备的互相检测来到达主服务器倒了,自动切换备服务器。不仅可以用于lvs,其他服务也可以使用。
Heartbeat软件不仅可以作为高可靠性的HA软件独立使用,也可以配合其它IP分发器做Balancing Cluster应用。
Heartbeat包括以下几个组件:
heartbeat – 节点间通信校验模块
CRM - 集群资源管理模块
CCM - 维护集群成员的一致性
LRM - 本地资源管理模块
Stonith Daemon - 提供节点重启服务
logd - 非阻塞的日志记录
apphbd - 提供应用程序级的看门狗计时器
Recovery Manager - 应用故障恢复
底层结构--包括插件接口、进程间通信等
CTS – 集群测试系统,集群压力测试
DRBD:
DRBD由PhilippReisner and LarsEllenberg 开发维护,它是基于Linux系统下的块复制分发设备。它可以让你把本地磁盘镜像复制到远程主机上。
把它加上心跳(heartbeat,HB)功能,就可以构建Linux下的高可用(HA)集群环境。
DRBD也可以成为网络RAID-1,当数据写入本地文件系统时,数据还将会发送到网络中另一台主机上,以相同的形式记录在该主机的文件系统中。
DRBD的工作原理如下图:
+------------+
| 文件系统 |
+------------+
|
V
+---------------+
| 块设备层 |
| (/dev/drbd1) |
+---------------+
| |
| |
V V
+-------------+ +--------------+
| 本地硬盘 | | 远程主机硬盘 |
| (/dev/hdb1) | | (/dev/hdb1) |
+-------------+ +--------------+
rsync:
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了------remote sync。
它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
rsync的主页地址为:http://rsync.samba.org/
使用rsync+inotify配置触发式(近实时)远程同步。
sersync 服务器实时镜像、自动同步程序:
sersync主要用于服务器同步,web镜像等功能。基于 boost1.41.0,inotify api,rsync command.开发。
目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),
这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:
1. sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),
所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
2. 相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
3. 另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
4. 本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每10个小时对同步失败的文件重新同步。
5. 本项目自带crontab功能,只需在 xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
6. 本项目socket与http插件扩展,满足您二次开发的需要。
原理:
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,
并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,
不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常 高。
应用:
金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,
干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,
自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/
发表评论
-
Maven dependency and repository
2011-10-12 10:04 819http://tech.ddvip.com/2009-01/1 ... -
maven profiles
2011-10-12 10:03 870定义Profiles 你可以把profiles定义在4个地 ... -
使用maven2 进行团队配置
2011-10-12 10:03 772对于团队来说,建立统一的开发环境是必须的,而maven能很好帮 ... -
maven 配置篇 之pom.xml
2011-10-12 10:02 730http://tech.ddvip.com/2009-01/1 ... -
maven 配置篇 之 settings.xml
2011-10-12 10:02 713maven2 比起maven1 来说, ... -
初学maven(5)-使用assembly plugin实现自定义打包
2011-10-11 18:05 968在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
初学maven(4)-使用maven ant task实现非标准打包
2011-10-11 18:04 1182maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
初学maven(3)-使用nexus替代artifactory作为maven私服
2011-10-11 18:02 995之前看到过一些Nexus的 ... -
初学maven(2)-maven/artifactory/m2eclipse安装全过程
2011-10-11 17:58 865前段时间研究过一下maven,中途因为工作忙搁置了一段时间,重 ... -
初学maven(1)-常见小问题集锦
2011-10-11 17:57 792http://www.bianceng.cn/Programm ... -
HttpSessionListener用法(计数器)
2011-08-12 14:00 993继上次说到Listener的功 ...
相关推荐
《负载均衡F5-HA高可用理论知识手册》是一份深度探讨F5负载均衡器在高可用性场景下应用的专业资料。本手册旨在提供全面、深入的理论知识,帮助读者理解如何利用F5技术实现系统的高可用性和稳定性。 **负载均衡** ...
总结以上,ActiveMQ的高可用性和负载均衡集群涉及了多个层面的技术和策略,从安装配置到实际操作,都需要对系统架构有深入的理解。通过合理的配置和测试,我们可以创建一个健壮、可扩展的Message Broker系统,为业务...
"MySQL-Cluster双机集群+HA高可用+负载均衡配置手册" 本文档旨在介绍如何安装配置基于2台服务器的MySQL集群,并实现任意一台服务器出现问题或宕机时MySQL集群依然能够继续运行。 MySQL-Cluster简介 MySQL-Cluster...
### Keepalived+Nginx 实现高可用Web负载均衡 #### 场景需求 在现代互联网应用中,网站和应用程序需要处理大量的用户请求,并确保即使在服务器出现故障的情况下也能持续提供服务。为了满足这一需求,通常采用高可用...
MySQL 高可用负载均衡集群部署 MySQL 高可用负载均衡集群部署是指在 MySQL 数据库中实现高可用性和负载均衡,以提高数据库的性能和可靠性。在本文中,我们将介绍如何使用 haproxy 和 keepalived 实现 MySQL 高可用...
这份设计文档为实现一个高可用的OpenStack云计算环境提供了详尽的步骤和理论支持,不仅涉及到了服务组件的部署和配置,还包括了高可用性集群的建立、数据库的高可用配置、消息队列的高可用实现以及负载均衡器的配置...
本文详细介绍了如何进行Elasticsearch+Kibana+HA高可用部署的操作步骤和技术要点。通过对全文检索技术、HA部署原理以及具体部署实践的学习,读者可以更好地理解和掌握这套系统的搭建与维护。此外,通过Python语言...
Openstack HA原理与实现是DevOps运维中的一种关键技术,它旨在通过冗余、故障切换和负载均衡等机制来减小系统的不可用时间和数据丢失。 HA的基本概念 高可用性(High Availability,简称 HA)是指系统或服务在...
本教程将深入探讨如何利用Keepalived实现高可用性以及如何结合Nginx进行负载均衡。这两个技术是现代Web服务架构中的关键组件,它们为企业提供了稳定、高效的服务运行环境。 Keepalived是一个开源项目,主要用于提供...
1.15.1-高可用搭建-ipvs模式-kubernetes高可用安装包和详细文档笔记整理”显然是一个针对k8s 1.15.1版本的高可用性(HA)集群的搭建指南,特别强调了使用IPVS(IP虚拟服务器)作为服务负载均衡器的模式。 在k8s中,...
HA代理节点在OpenStack高可用架构中起到负载均衡的作用。 ### 8. OpenStack控制器节点(OpenStack Controller Nodes) OpenStack的控制器节点需要运行OpenStack API和调度器,以及Memcached服务以提供缓存。 ### 9...
【ha-jdbc.rar】是一个压缩包文件,其中包含的【ha-jdbc】 jar包是针对Java平台的一个数据库连接工具,主要用于实现高可用性(High Availability)和负载均衡(Load Balancing)的Java Database Connectivity(JDBC...
通过负载均衡和故障切换机制,可以在不影响应用的情况下动态添加或移除节点,从而提高系统的可用性和可扩展性。 - **Oracle Data Guard**:该技术用于构建异地容灾解决方案,通过复制主数据库的日志到辅助数据库,...
### MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat) #### 一、概述 在当今高度依赖数据库应用的企业环境中,确保数据库系统的稳定性和高效性至关重要。为了达到这一目标,采用高可用(High ...
RoseHA(Multi-node)是一种基于多节点架构的集群管理软件,它能够实现在多台服务器之间的自动故障转移和负载均衡,确保即使在部分节点出现故障的情况下,也能维持业务系统的正常运行,提高系统的稳定性和可靠性。...
总的来说,Apache 负载均衡集群是构建高可用、高性能Web服务的关键组成部分,它通过有效的资源管理和故障转移策略,确保了系统的稳定性和可扩展性。正确配置和管理Apache负载均衡集群,能够显著提升企业的业务连续性...
- 实现HA-Serv-U,可能需要配置负载均衡器,如Nginx或F5 Big-IP,它们可以动态分配客户端请求到可用的FTP服务器实例。 - 使用镜像或复制技术保持多台服务器的数据同步,例如通过iSCSI、SAN或NAS解决方案。 - 集群...
### OpenSIPS-FreeSwitch 负载均衡环境搭建配置详解 #### 一、概述 本文档将详细介绍如何搭建OpenSIPS与FreeSwitch相结合的负载均衡环境。通过此配置,可以实现语音通信系统的高可用性和扩展性,适用于需要处理...