`
iegyiy
  • 浏览: 20522 次
社区版块
存档分类
最新评论

服务高可用技术介绍

阅读更多
基于四层交换技术的负载均衡:

基于四层交换技术的负载均衡 ---- 这种技术是在第四层交换机上设置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。
分享到:
评论

相关推荐

    [互联网运营智慧-高可用可扩展网站技术实战].田逸.扫描版(ED2000.COM)

    在《互联网运营智慧:高可用可扩展网站技术实战》中,也穿插了一些非技术方面的描述,如在系统运营中,有哪些日常事务、服务扩展该怎么着手,以及在运营中有哪些策略及技巧等。《互联网运营智慧:高可用可扩展网站技术...

    开涛高可用高并发-亿级流量核心技术

    1.2 高可用原则 10 1.2.1 降级 10 1.2.2 限流 11 1.2.3 切流量 12 1.2.4 可回滚 12 1.3 业务设计原则 12 1.3.1 防重设计 13 1.3.2 幂等设计 13 1.3.3 流程可定义 13 1.3.4 状态与状态机 13 1.3.5 后台系统操作可反馈...

    在Linux下构造高性能、高可用、高可伸缩性的服务集群.doc

    本文试图以一篇完整的理论+实践性的文字来 介绍如何在优秀的开源操作系统Linux下创建低成本、高性能、高可用的服务集群系统。文中所使用的系统和软件包均为最新版本。希望通过对本文的阅读能使 你对如何创建Linux下...

    ORACLE 24.7技术与技巧---数据库高可用(PDF)

    主要介绍在Oracle数据库服务器系统中实现高可用性的技术途径以及系统性能优化方法,从而为用户提供具有24×7 正常工作时间特点的系统。全书共八个部分,分别从系统需求、软硬件环境、数据库安装与维护、数据库疑难...

    mysql高可用集群方案中文

    在“数据库高可用指南”白皮书系列中,我们会介绍高可用架构和概念。文中同样也会介绍在选择高可用数据库方案时,需要考虑哪些因素,包含MySQL复制和MySQL集群。我们还会介绍MySQL专业服务和MySQL认证的企业级合作...

    互联网运营智慧——高可用可扩展网站技术实战

    资源名称:互联网运营智慧——高可用可扩展网站技术实战内容简介:互联网运维是一门系统化的学问,也是一门新兴学科,书店里也很难找到一本能全面介绍运维体系的书籍,这是本书创作的初衷。本书深入浅出地介绍运维...

    SQL Server高可用性部署实施

    本文主要阐述如何实现SQL Server双节点群集高可用性部署实施,通过微软MSCS...另外 ,本文介绍SQL Server 2005中新增的镜像服务功能,相比MSCS SQL Server 群集,SQL Server数据库镜像是基于软件的高可用性解决方案。

    服务器虚拟化技术在在线考试系统中的应用

    对服务器虚拟技术进行了深入研究,并将其应用到重庆市...实际应用表明,采用虚拟化技术对在线考试系统进行部署从应用服务的稳定性、高可用性、合理的资源调配、快速部署以及从节能、节电、节约空间等方面都有显著改善。

    互联网运营智慧-高可用可扩展网站技术实战

    在本书中,也穿插了一些非技术方面的描述,如在系统运营中,有哪些日常事务、服务扩展该怎么着手,以及在运营中有哪些策略及技巧等。本书加入了作者的思想、经验、教训及建议等,尽可能使用类比方式来说明一些复杂且...

    亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构

    8、高可用架构设计:整套大型系统如何实现高可用架构的设计和部署?需要对整个读链路进行多级降级机制的设计,并且还需要进行基于Hystrix的依赖调用隔离 9、基础设施技术涵盖了大型系统中常用的各种技术,包括了:...

    支付宝架构师眼里的高可用与容灾架构演进

    企业服务、云计算、移动互联网领域中,高可用的分布式技术为支撑平台正常运作提供着关键性的技术支撑。从用户角度,特别是作为主要收入来源的企业用户的角度出发,保证业务处理的正确性和服务不中断(高可用性)是...

    容错服务器的介绍.pptx

    容错服务器的概念 高可用性HA(High Availability) 容错FT(Fault Tolerant) 容错服务器的最显著特征 容错服务器的介绍全文共20页,当前为第4页。 高可用性 高可用性HA(High Availability)指的是通过尽量缩短因...

    决战Nginx系统卷——高性能Web服务器详解与运维1

    同时在这里使用了Heartbeat服务实现Nginx服务器的高可用。  本书的最后一部分是关于Nginx使用缓存技术的方法,共列举了Nginx使用的五大缓存,特别是广泛使用的代理缓存、Memcached和Varnish,另外对于Memcached...

    决战Nginx系统卷——高性能Web服务器详解与运维

    同时在这里使用了Heartbeat服务实现Nginx服务器的高可用。  本书的最后一部分是关于Nginx使用缓存技术的方法,共列举了Nginx使用的五大缓存,特别是广泛使用的代理缓存、Memcached和Varnish,另外对于Memcached...

    《互联网运营智慧-高可用可扩展网站技术实战》--田逸

    在本书中,也穿插了一些非技术方面的描述,如在系统运营中,有哪些日常事务、服务扩展该怎么着手,以及在运营中有哪些策略及技巧等。本书加入了作者的思想、经验、教训及建议等,尽可能使用类比方式来说明一些复杂且...

    服务器虚拟化三剑客技术详解.pdf

    vSphere是VMware推出的基于云的新一代数据中心虚拟化套件,提供了虚拟化基础架构、高可用性、集中管理、监控等一整套解决方案。XenServer采用的是部署极为广泛且功能强大的开源Xen系统管理程序。相比Hyper-V,大家更...

    亿级流量网站架构核心技术

    一书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与...

    B /S三层架构下单服务器集群技术的应用

    :随着计算机应用系统在企业生产中所承担的角色越来越重要,构建高可用性计算机系统成为保证应用系 统稳定运行的重要手段。本文介绍了宝山钢铁股份有限公司不锈钢分公司设备管理系统中,在B/S三层架构 下的集群技术的...

    服务器基础知识介绍(服务器全部组件).pdf

    高性能 高可 靠 服务器特点 特点 可用性 易用性 可管理性 可靠性 可扩展性 服务器的应用模型 C/S结构 网 络 服务器 客户端 客户端 客户端 一、服务器的基本概念 1.1 服务器是什么 1.2 服务器概述 1.3 服务器设备的...

Global site tag (gtag.js) - Google Analytics