本文描述如何使用ucarp配置virtual ip从而实现ip地址的高可用。
1. 什么是ucarp?
ucarp通过Common Address Redundancy Protocol(CARP)实现在多个Linux hosts间共享ip 配置。任一时刻,ip只在其中一台机器上处于active状态;当这台机器出现故障导致ip不可用时,ucarp能够自动将此ip的转移到另一台机器上,从而实现ip地址的高可用。
2. ucarp 常用命令
-i INTERFACE --interface=INTERFACE:指定virtual ip要绑定到的网卡 -s IPADDRESS --srcip=IPADDRESS:绑定网卡上已配置的ip地址 -v VHID --vhid=VHID: virtual server id,取值范围1-255 -p PASSWORD --pass=PASSWORD:属于同一个virtual server的ucarp间共享的密码 -P --preempt:采用抢占式的故障转移模式 -n --neutral:当ucarp启动时,如果处于backup状态则不执行指定的downscript -a IPADDRESS --addr=IPADDRESS:virtual server的ip address -b SECONDS --advbase=SECONDS:广播消息的时间间隔(以秒为单位,默认1s) -u COMMAND --upscript=COMMAND: 当ucarp进入master状态时,要执行的命令。这些命令通常在一个脚本中 -d COMMAND --downscript=COMMAND: 当ucarp进入backup状态时,要执行的命令。这些命令通常在一个脚本中 -r RATIO --deadratio=RATIO:指定处于backup状态的ucarp需要等待多久就认为未响应的master ucarp已经挂掉 -z --shutdown: 当ucarp关闭时,执行-d指定的命令 -B --daemonize:以Daemon方式运行ucarp
3. 配置virtual ip
1)准备up和down script
假设up script是/etc/vip-up.sh,其内容如下:
#!/bin/bash
exec 2> /dev/null
/sbin/ip link add dummyIt type dummy
/sbin/ip addr add 10.10.10.10/24 dev dummyIt
/sbin/ip link set dummyIt up
/sbin/ip route | grep -w 10.10.10.10 | xargs /sbin/ip route del
新建dummy type的interface,其名字是dummyIt。
down script 是/etc/vip-down.sh,其内容如下:
#!/bin/bash
exec 2> /dev/null
/sbin/ip addr del 10.10.10.10/24 dev dummyIt
/sbin/ip link del dummyIt
2)启动ucarp
假设有两台Linux 机器A和B,它们的eth0上分别配置ip 192.168.1.2/24 和192.168.1.3/24
在A上运行ucarp命令如下:
ucarp -i eth0 -v 1 -p 123456 -a 10.10.10.10 -s 192.168.1.2 -u /etc/vip-up.sh -d /etc/vip-down.sh -P -B -z -n
在B上运行ucarp命令如下:
ucarp -i eth0 -v 1 -p 123456 -a 10.10.10.10 -s 192.168.1.3 -u /etc/vip-up.sh -d /etc/vip-down.sh -b 2 -B -z -n
4. 其他
通过给ucarp process发送SIGUSR1信号,可以将ucarp的状态信息打印到syslog中,从而查看当前ucarp是处于master,还是backup状态。SIGUSR2则可以让处于master状态的ucarp进入backup状态,并暂停3秒,之后再与其他master 交互。