码迷,mamicode.com
首页 > 其他好文 > 详细

LVS集群及keepalived高可用

时间:2015-03-10 01:37:32      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:lvs集群及keepalived高可用

1.1 什么是ARP协议
    ARP协议,全称"Address Resolution Protocol",中文名是地址解析协议,使用ARP协议可以实现通过IP地址获得对应主机的物理地址(MAC地址)。
    在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在国际范围标识主机的一种逻辑地址(在公网上是一个唯一的地址)。为了让数据包(报文)在物理网路上传输,还必须要知道对方目的主机的物理地址(MAC)才行。这样就存在把IP地址变换成物理地址的地址转换的问题(所以最终计算机之间的通信是通过MAC地址进行的)。
    我们以以太网环境为例说明,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为目的主机48位以太网的地址(MAC地址)。这就需要在互联层有一个服务或功能将IP地址转换成为相应的物理地址(MAC地址),这个服务或者功能就是ARP协议。
    所谓的"地址解析",就是主机发送帧之前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证主机间互相通信的顺利进行。
    ARP协议和DNS有点相像之处。不同点是:DNS是在域名和IP之间的解析,另外,ARP协议不需要配置服务,而DNS要配置服务才行。

ARP协议要求通信的主机双方必须在同一个物理网段(即局域网环境)!


   ----- ARP缓存的问题----



  • ARP协议的工作原理技术分享IP地址解析为MAC地址

    假设局域网有4台机器:10.1.1.1、10.1.1.2、10.1.1.3、10.1.1.4

    主机10.1.1.1想发送数据给主机10.1.1.2,检查缓存(ARP表),由于是第一次通信,所以发现没有10.1.1.2的MAC地址。

    然后喊一句“我需要10.1.1.2的MAC地址”(发送ARP广播),此时所有主机都有收10.1.1.1的ARP广播,但只有10.1.1.2给它一个单播回复(发送自己的MAC地址给10.1.1.1),并缓存10.1.1.1的MAC地址(保存到ARP表中)。

    主机10.1.1.1将10.1.1.2的MAC地址保存到缓存(ARP表)中,然后发送数据。

    下次通信的时候查询缓存(ARP表)中有对方的MAC地址,则直接发送数据

    #me:

    1)10.1.1.1发送广播的时候带着自己的MAC地址,如果不带那么对方回复的时候找不到10.1.1.1。

    2)局域网中的其他主机都会收到广播包(被吵),当局域网内的主机数量多的时候,就会产生"广播风暴"!------所以一般公司会做VLAN,把广播风暴隔离。

    3)发送数据时,10.1.1.1把数据包封装上对方的MAC地址头,然后发给10.1.1.2

  • ARP缓存表

    windows查看ARP缓存表命令:arp -a

    windows删除ARP缓存表命令:arp -d

    linux  查看ARP缓存表命令:arp -a

    linux  删除ARP缓存表命令:

    Cisco  查看ARP缓存表命令:

    Cisco  删除ARP缓存表命令:

    arp缓存表是把双刃剑:

    (1)有了arp缓存表可以加快ARP的解析速度(同时减少广播风暴)。

    (2)正是有了arp缓存表,给恶意黑客带来的攻击服务器主机的风险,这就是著名的arp欺骗或者arp攻击。

  • 为什么要使用ARP协议

    OSI模型把网络工作划分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址工作在第三层,MAC地址工作在第二层,当协议在发送数据包时,需要先封装第三层(IP地址),然后再封装第二层(MAC地址)作为数据包的报头,但协议只知道目的节点的IP地址,不知道其MAC地址,又不能跨第二、第三层,所以得用ARP协议服务。

   ???ARP协议是二层协议,还是三层协议???

    答:ARP工作在二层,但是属于三层协议。

  • ARP在生产环境中产生的问题和解决办法

    (1)ARP病毒,ARP欺骗

    (2)高可用服务器切换时要考虑ARP缓存的问题

    (3)路由器等设备无缝迁移时要考虑ARP缓存的问题,例如:换办公室的路由器。

    1.1 ARP欺骗原理

    ARP攻击就是通过伪造IP地址和MAC地址对,实现ARP欺骗,如果一台主机中了ARP病毒,那么它就能够在网络中产生大量的ARP通信量(它会以很快的频率进行广播),是其他很多主机都缓存这个伪造的IP-MAC对,下次通信时不需进行广播,而是直接使用缓存中的,因为是假MAC(不存在或者是黑客的MAC),无法通信,以至于使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改局域网中目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。

    在有的案例中,造成的结果是无法上网,是因为攻击者伪造的是网关的MAC

    那么是如何发现受到了ARP攻击呢?方法:先在网关上把正确的MAC地址记录下来,然后在主机上查询,如果网关IP对应的MAC地址和你刚才记录的不是同一个,那么久可以确认ARP中毒,

    那么如何找到伪造IP-MAC地址的是哪台机器?方法:在人员入职的时候对所使用的主机的MAC地址做登记(首先要知道正确的MAC),出问题的时候,可以看到所有的IP-MAC对应关系,就可以找出是哪个IP的问题,进而发现攻击人员,拔掉网线,让其重装操作系统(杀毒)。另一种避免的方法是把MAC和IP地址绑定起来(arp -s),如果MAC地址不对,则不给分配IP,如果遇到人员手工指定IP,则罚款处理!现在有ARP防火墙,很多防火墙也能自动的屏蔽恶意的ARP。

    ARP攻击主要是存在于局域网网络中,局域网中若有一个感染ARP木马,则感染该ARP木马的系统将会试图通过"ARP 欺骗"手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

    1.2 服务器切换ARP问题

    两个keepalived的高可用负载均衡服务器之间,如果从一个切换到另一个,就需要清空ARP缓存,并不是清空自己的ARP缓存,而是让局域网的主机都要清空,然后重新来访问,重新广播。keepalived和heartbeat自身的机制中已经包含了这个功能,所以很少能遇到,将来如果手工写脚本的时候,这个就需要自己做。

    当网络中的一台提供服务的机器宕机后(例如VIP所在主机),当在其他运行正常的机器添加宕机的机器的IP时,会因为客户端的ARP table cache的地址解析还是宕机的机器的MAC地址。从而导致,即使在其他运行正常的机器添加宕机的机器的IP,也会发生客户依然无法访问的情况。

    解决办法:当机器宕机,IP地址迁移到其他机器上时,需要通过arping命令来通知所有网络内机器清除本地的ARP table cache,从而使得客户机访问时重新获取MAC地址。

    这个在自己开发脚本实现服务器的高可用时是要必须考虑的问题之一,几乎所有的高可用软件都会考虑这个问题。

    利用ARP广播,进行新的地址解析的linux命令如下:

    /sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253

    /sbin/arping -U -I eth0 10.0.0.162----这个未讲

    #me:高可用脚本实现原理:ping对方IP,或者telnet对方端口,只要对方不OK了,自己就把服务启动起来,然后执行一个arp清空缓存的命令。

    1.3 换办公网路由器

    可能发现一切配置正确就是无法访问,告诉大家重启电脑,或者arp -d清空ARP缓存就可以了。如果有的人可以访问,有的人不可以访问,说明能访问的人的主机中的ARP表已经更新了,所以可以访问。



集群

集群:指一组相互独立的计算机,利用高速通信的网络组成的一个计算机系统,每个集群节点(即集群中的每台计算机)都是运行其自己进程的一个独立服务器。但对于网络中的客户机来说就像是一个单一系统,实际上是一组服务器协同一起提供服务的

场景集群:lvs集群、nginx集群、haproxy集群

高级一点的:先是LVS集群、然后是Haproxy集群,最后面才是web服务器。大网站、访问量大的时候集群就是分两层的。

  • 为什么要使用集群(集群的基本特点)

    (1)高性能

    现在集群也有分布式集群,即用户是分布在全国各地的,所以集群节点也是分布在全国各地的。比如:蓝汛(CDN)、京东、淘宝、谷歌等

    集群是用来解决高并发、高吞吐问题的

    (2)相比于大型机而言,价格有效性,成本低,扩展容易,维护也容易。

    (3)可伸缩性:当服务器负载、压力增长时,系统能被扩展来满足需求,且不降低服务质量。

    (4)高可用性:尽管部分硬件和软件会发生故障,整个系统的服务必须是7*24小时工作的。

  • 集群常见分类

    负载均衡集群(Load balancing clusters),简称LBC或者LB

    高可用集群(High-availability clusters),简称HAC或者HA

    高性能计算集群,简称HPC

    网格计算

    --------

  •  负载均衡集群的作用:

    (1)分担用户访问请求或数据流量(负载均衡)

    (2)保持业务连续性7 * 24(高可用)

    负载均衡集群典型的开源软件:LVS、nginx、haproxy、lighttpd

    ##me:交换机上利用OSPF可以实现8台LVS负载均衡

    雪崩:大量的请求压到数据库/WEB SERVER上,使数据库响应变慢,导致服务阻塞,最终可能导致整个系统不可用

  • 高可用集群的作用:

    当一台机器宕机后另一台机器接管(IP资源或者服务资源)

    高可用集群典型的开源软件:keepalived、heartbeat

   高可用集群和负载均衡集群同时使用  LVS + keepalived,因为只要是负载均衡前面就有调度器,对调度器要做HA高可用集群。类似依次网上递归,最终递归到DNS上,也要做高可用。

  • 互联网企业常用的开源集群软件有:lvs、haproxy、nginx、keepalived、heartbeat

    互联网企业常用的商业集群硬件有:F5、Netscaler、Radware、A10等,工作模式都相当于haproxy的工作模式

    技术跟不上就用硬件顶、技术跟上了就把硬件往下替。



LVS负载均衡集群

搭建负载均衡服务器的需求:

1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验

2)单个重负载运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。------性能计算

3)7*24的服务保证,任意一个或多个有限后面节点设备宕机,要求不能影响业务。






LVS集群及keepalived高可用

标签:lvs集群及keepalived高可用

原文地址:http://tenderrain.blog.51cto.com/9202912/1618807

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!