`
maosheng
  • 浏览: 550173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CentOS 6.3 安装 Keepalived

阅读更多
Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures. Loadbalancing framework relies on well-known and widely used Linux Virtual Server (IPVS) kernel module providing Layer4 loadbalancing. Keepalived implements a set of checkers to dynamically and adaptively maintain and manage loadbalanced server pool according their health. On the other hand high-availability is achieved by VRRP protocol. VRRP is a fundamental brick for router failover. In addition, Keepalived implements a set of hooks to the VRRP finite state machine providing low-level and high-speed protocol interactions. Keepalived frameworks can be used independently or all together to provide resilient infrastructures.

Keepalived is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

OSI七层模型与TCP/IP五层模型:

OSI七层模型:

OSI中的层    功能                                            TCP/IP协议族
应用层          文件传输,电子邮件,文件服务,虚拟终 端          TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet

表示层          数据格式化,代码转换,数据加密                   没有协议

会话层          解除或建立与别的接点的联系                       没有协议

传输层          提供端对端的接口                                 TCP,UDP

网络层          为数据包选择路由                                 IP,ICMP,RIP,OSPF,BGP,IGMP

数据链路层      传输有地址的帧以及错误检测功能                   SLIP,CSLIP,PPP,ARP,RARP,MTU

物理层          以二进制数据形式在物理媒体上传输数据             ISO2110,IEEE802,IEEE802.2

*******************************************************************************

TCP/IP五层模型:
应用层
传输层:四层交换机、也有工作在四层的路由器
网络层:路由器、三层交换机
数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)
物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层

*******************************************************************************

如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状 态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔除,当该web服务器工作正常后Keepalived自动将其加入到服务器群中,这些工作全部自动完成,而不需要人工干预,只需要人工修复故障的web服务器即可。


Keepalived基于VRRP协议来实现高可用解决方案,利用其避免单点故障,通常这个解决方案中,至少有2台服务器运行Keepalived,即一 台为MASTER,另一台为BACKUP,但对外表现为一个虚拟IP,MASTER会发送特定消息给BACKUP,当BACKUP收不到该消息时,则认为 MASTER故障了,BACKUP会接管虚拟IP,继续提供服务,从而保证了高可用性。

3层机理是:发送ICMP数据包即PING给某台服务器,如果不通,则认为其故障,并从服务器群中剔除。

4层机理是:检测TCP端口号状态来判断某台服务器是否故障,如果故障,则从服务器群中剔除。

5层机理是:根据用户的设定检查某个服务器应用程序是否正常运行,如果不正常,则从服务器群中剔除。


VIP: Virtual IP
RIP: Real IP
CIP: Client IP
DIP: Director IP

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

keepalived工作原理:keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能。 keepalived是一个类似于layer3, 4,5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web 服务器的状态。 Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。 vip即虚拟ip,是附在主机网卡上的,即对主机网卡进行虚拟,此IP仍然是占用了此网段的某个IP。

keepalived作用:随着网站业务量的增长,网站的服务器压力越来越大,需要负载均衡方案!商业的硬件如F5又太贵,创业型互联公司如何有效节约成本,节省不必要的浪费呢?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!可以利用Haproxy+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。keepalived是VRRP的完美实现!

VRRP工作机制:在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER的负责路由工作,其它的都是BACKUP,MASTER并非一成不变,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MASTER。MASTER拥有一些特权,比如 拥有虚拟路由器的IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。 VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(multicast)包(多播地址 224.0.0.18)形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址。所以,在一个虚拟路由 器中,不管谁是MASTER,对外都是相同的MAC和IP(称之为VIP)。客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对他们来 说,这种主从的切换是透明的。 在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP广告包(VRRPAdvertisement message),BACKUP不会抢占MASTER,除非它的优先级(priority)更高。当MASTER不可用时(BACKUP收不到广告包), 多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。由于安全性考虑,VRRP包使用了加密协议进行加密。


1.下载 keepalived-1.2.12.tar.gz

2.解包

# tar -zvxf keepalived-1.2.12.tar.gz

3.切换目录

# cd keepalived-1.2.12

4.配置

# ./configure -prefix=/usr/local/keepalived

5.编译和安装

# make; make install

顺利的话就这些步骤了,如果出现错误提示,那么根据具体的错误具体处理,一般可能出现的错误: 
 
1)、OpenSSL,提示可能如下 
 
!!! OpenSSL is not properly installed on your system. !!! 
 
!!! Can not include OpenSSL headers files. 
 
解决方案:运行yum install -y openssl openssl-devel
 
2)、提示没有gcc编译器 
 
解决方案:运行yum install ncurses-devel gcc gcc-c++ make rpm-build 

3)、报错:/usr/include/netlink/netlink-kernel.h:193:2: error: unknown type name ‘__u32’
  __u32 group;
 
解决方案: yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel


6.运行

# mkdir /etc/keepalived/
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

# service keepalived start [stop|restart|status]
Starting keepalived: [  OK  ]

# service keepalived status
keepalived (pid  12092) is running...

# chkconfig keepalived on

7.验证

# tail -f /var/log/messages

# ip addr

# yum -y install ipvsadm

# ipvsadm -L -n







分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics