Centos5.4 UCARP 热备
1         Ucarp简介 
UCARP 允许多个主机共享一个虚拟的 ip 地址,以提供自动的故障恢复功能,当其中某个主机宕机时,其它的主机会自动接管服务。 UCARP CARP 协议(通用地址冗余协议,最早在 OpenBSD 上实现)的 linux 实现版本,同时也能移植到其它多个 unix 平台, UCARP 的官方网站: http://www.ucarp.org/project/ucarp 
 
CARP协议的特点在于其非常低的开销,主机间使用加密数据传递信息,并且在冗余主机之间不需要任何额外的网络链接。
 
下载ucarp源代码包http://download.pureftpd.org/pub/ucarp/,在README中有ucarp的简单部署实例。
 
2         设置UCARP基本信息:
1. 多个主机以构成冗余主机组;
2. 一个共享的虚拟 ip地址,用以对外提供可靠的服务,冗余主机组中的某个主机会对会对这个ip上的服务进行应答;
3. 对于每个主机,需要配置一个真实的 ip地址;
4. 一个 1-255之间的共享标识符;
5. 一个共享的密码(使得网络间传输的消息都为密文);
6. 当冗余组中某个主机成为 MASTER时执行的脚本程序;
7. 当冗余组中某个主机不再是 MASTER是执行的脚本程序
3         Ucap具体参数详解
--inter (-i : bind interface ( 网络接口 绑定网络接口 )
--srcip= (-s : source (real) IP address of that host ( 源地址真实 ip)
--vhid= (-v : virtual IP identifier (1-255) ( 虚拟 ip 标识 (1-255))
--pass= (-p : password ( 密码 )
--preempt (-P): becomes a master as soon as possible ( 以最快的速度成为主服务器的角色 )
--neutral (-n): don't run downscript at start if backup ( 如果是备份主机 , 启动的时候不运行 downscript.)
--addr= (-a : virtual shared IP address( 虚拟共享 ip 地址 )
--help (-h): summary of command-line options ( 命令行帮助 )
--advbase= (-b : advertisement frequency ( 广播的频率 ( ))
--advskew= (-k : advertisement skew (0-255) ( 不广播 )
用来设置公告间隔时间, 公式(以秒计)advskew/256+advbaseadvbase可以减少网络流量或设置更长的主力机"轮循"时间(直至备份机来顶替它);advskew设置哪台热备份计算机在故障转移时优先成为主力机(这是必需的)
--upscript= (-u : run to become a master ( 运行一个脚本文件,使本服务器成为主服务器 )
--downscript= (-d : run to become a backup ( 运行一个脚本文件,使本服务器成为从服务器 )
--deadratio= (-r : ratio to consider a host as dead ( 认定主机已经死掉的比率(阀值) )
--shutdown (-z): call shutdown script at exit ( 在退出的时候,执行关闭的脚本 )
--daemonize (-B): run in background ( 运行在后台 )
--facility= (-f): set syslog facility (default=daemon) ( 设置 syslog 工具 , 默认在后台 ) 
 
Ucarp参数简述:
-v vip标识 –p密码 –a vip地址 –u 当机器为升为master时运行的脚本 –d 当机器降为slave时运行的脚本 –s心跳ip地址 –P与-k结合最小的为master机器 –B以daemon方式运行
 
4         配置示例
4.1      centos 5.4
在/etc/yum.repos.d/目录下建 ucarp.repo文件内容如下
[ucarp]
name=ucarp RPM Repository for Red Hat Enterprise Linux
baseurl= http://mirrors.ircam.fr/pub/dag/redhat/el$releasever/en/$basearch/dag
http://rh-mirror.linux.iastate.edu/pub/dag/redhat/el$releasever/en/$basearch/dag
http://wftp.tu-chemnitz.de/pub/linux/dag/redhat/el$releasever/en/$basearch/dag
http://archive.cs.uu.nl/mirror/dag.wieers/redhat/el$releasever/en/$basearch/dag
http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
http://mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el$releasever/en/$basearch/dag
http://rpmfind.net/linux/dag/redhat/el$releasever/en/$basearch/dag
http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
enabled=1
gpgcheck=1
gpgkey= http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
然后 yum 方式安装即可 - à yum install ucarp
 
主:192.168.2.24此ip为心跳检测ip
      
[root@THS-LEVEL2 ~]# cat /etc/master-up.sh
#!/bin/sh
/sbin/ip addr add 211.138.113.105/24 dev eth1
/sbin/route add default gw 211.138.113.1
[root@THS-LEVEL2 ~]# cat /etc/master-down.sh
#!/bin/sh
/sbin/ip addr del 211.138.113.105/24 dev eth1
/sbin/route del default gw 211.138.113.1
[root@THS-LEVEL2 ~]# cat /etc/master.sh
#!/bin/sh
/usr/sbin/ucarp -v 40 -p gw105 -a 211.138.113.105 -u /etc/master-up.sh -d /etc/master-down.sh -s 192.168.2.24 -P -B
备:192.168.2.22此ip为心跳检测ip
      
[root@localhost ~]# cat /etc/slave-up.sh
#!/bin/sh
/sbin/ip addr add 211.138.113.105/24 dev eth1
/sbin/route add default gw 211.138.113.1
/bin/sh /root/mobile/mobi.sh
[root@localhost ~]# cat /etc/slave-down.sh
#!/bin/sh
/sbin/ip addr del 211.138.113.105/24 dev eth1
/sbin/route del default gw 211.138.113.1
/bin/sh /root/mobile/stop.sh
#/bin/ps -ef|grep mobi|awk '{print $2}'|xargs kill -9
[root@localhost ~]# cat /etc/slave.sh
#!/bin/sh
/usr/sbin/ucarp -v 40 -p gw105 -a 211.138.113.105 -u /etc/slave-up.sh -d /etc/slave-down.sh -s 192.168.2.22 -P -k 15 –B
 
4.2      freebsd
http://download.pureftpd.org/pub/ucarp/上下载ucarp文件
 
安装 ./configure && make && make install
 
192.168.2.254
mobigw2# cat /etc/master.sh
/usr/local/sbin/ucarp -v 96 -p 196bile -a 211.138.113.196 -u /etc/master-up.sh -d /etc/master-down.sh -s 192.168.2.254 -P -B
mobigw2# cat /etc/master-up.sh
#!/bin/sh
ifconfig em0 add 211.138.113.196 netmask 255.255.255.0
ifconfig em1 192.168.2.1/24 alias
route add default 211.138.113.1
 
mobigw2# cat /etc/master-down.sh
#!/bin/sh
ifconfig em0 -alias 211.138.113.196
ifconfig em1 -alias 192.168.2.1
route del default 211.138.113.1
 
192.168.2.3
zjyd_181# cat /etc/slave.sh
/usr/local/sbin/ucarp -v 96 -p 196bile -a 211.138.113.196 -u /etc/slave-up.sh -d /etc/slave-down.sh -s 192.168.2.3 -P -k 25 -B
zjyd_181# cat /etc/slave-up.sh
#!/bin/sh
ifconfig em1 add 211.138.113.196 netmask 255.255.255.0
ifconfig em0 192.168.2.1/24 alias
#route add default 211.138.113.1
zjyd_181# cat /etc/slave-down.sh
#!/bin/sh
ifconfig em1 -alias 211.138.113.196
ifconfig em0 -alias 192.168.2.1
 
5         启动服务
主机器上执行/etc/master.sh
备机器上执行/etc/slave.sh
并将主被两台机器服务添加到开机启动项:
cp /etc/master.sh /etc/rc.d/rc.local
cp /etc/slave.sh    /etc/rc.d/rc.local
 
6         功能实现
当主机器掉之后,从机器会接管主机器ip及相关服务;之后主机器重新起来后,主机器会把从的机器ip抢过来,并且备机器会从“主”降为从