高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性,HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。
实现HA的方式,一般采用两台机器同时完成一项功能,比如数据库服务器,平常只有一台机器对外提供服务,另一台机器作为热备,当这台机器出现故障时,自动动态切换到另一台热备的机器。
VRRP实质上就是实现HA的一种方式。
VRRPd is an implementation of VRRPv2 as specified in rfc2338. It run in userspace for linux. In short, VRRP is a protocol which elects a master server on a LAN. If the master fails, a backup server takes over.
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),VRRPD是VRRPv2协议的一种实现,运行在linux用户态,VRRP协议是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的VRRP路由器中的一台。
在建立一个网络时,为了保证网络稳定不间断的运行,经常采用一些动态的路由协议,如OSPF(3层)、RIP等,这些路由协议可以自动的绕开很多的网络故障,如:路由器DOWN机等,但很多时候我们可能无法使用这些高端的路由协议:
(1)因为有时候是用户端,要配置OSPF、RIP等协议必须有上游ISP供应商的支持,但很多ISP供应商是不提供这种服务的,它们只提供静态路由(有时候使用OSPF、RIP等协议的目的是为了进行链路和路由的备份,VRRP可以完全替代他们这部分工作);
(2)我们有两条以上的Internet线路,需要对他们进行负载均衡和路由线路、路由器的备份(VRRP也主要是为这种需求设计的);
VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),拥有这个对外IP的路由器为master,其他设备不拥有该IP为backup,backup除了接收master的VRRP状态通告信息外,不执行对外的网络功能(如ARP、ICMP等),当master故障时,backup将接管原先master的网络功能。
配置VRRP协议时,需要配置每个路由器的VRID和优先权值,主要使用VRID将路由器进行分组,具有相同VRID值的路由器为同一个组,同一组的路由器通过使用优先权值来选举master。
#wget http://off.net/~jme/vrrpd/vrrpd-current.tgz
#tar -zxvf vrrpd-current.tgz
#cd vrrpd
#make
#cp vrrpd /usr/sbin/
#vrrpd -n -i eth0 -v 100 -p 100 -f /var/run 192.168.0.100 (server1)
#vrrpd -n -i eth0 -v 100 -p 50 -f /var/run 192.168.0.100 (server2)
备注1:由于server1的优先级高于server2,当其他机器访问192.168.0.100的时候,会优先访问server1,如果server1机器发生故障,server2会立即接管server1来服务。
备注2:谁的优先级高,使用ip addr才能看到192.168.0.100这个IP。
备注3:vrrpd -n -i eth0 -v 100 -f /var/run -p 250 192.168.0.100 192.168.0.101可以宣告多个IP。
-n:
-i:指定网卡;(不能乱指定,否则路由到达不了,抓包会发现ICMP port unreachable)
-v:指定虚拟server的ID;(主要用来对虚拟路由器分组)
-s:设置优先权模式,默认是enable;(加上-s是关闭)
-a:设置认证类型;(还未被实现??)
-p:指定优先级,按优先级来处理,默认是100;
-f:指定存放pid文件的目录,默认是/var/run;
-d:宣告的时间间隔,默认是1s;
ipaddr:虚拟server的IP地址,可以同时宣告多个IP地址;
#tcpdump -i any -nn vrrp
15:03:31.556922 IP 100.100.100.15( 高优先级的serverIP) > 224.0.0.18: VRRPv2, Advertisement, vrid 100, prio 250(高优先级的server设置的优先级), authtype none, intvl 1s, length 20
21(version=2,advertisement=1) 64(virtual ptr ID=100) fa(优先级) 01(addr count)
00(auth type) 01(adver int) bc cf (checksum)0a 65 1d 64(IP address=10.101.29.100)
00 00 00 00(Authentication Data)
00 00 00 00(Authentication Data)
RFC2338(VRRP协议):
ftp://ftp.ietf.org/rfc/rfc2338.txt
https://www.kernel.org/doc/ols/2001/vrrpd.pdf
http://www.bitscn.com/plus/view.php?aid=7825
http://blog.chinaunix.net/uid-127037-id-2919520.html