Ucarp的安装配置

有 V2EX 的坛友问到如何静态编译 keepalived 的问题,实际上 keepalived 确实配置比较麻烦。那还有一个简单易行的 ucarp,生产也可以用这个。

ucarp 跟 keepalived 一样,都是用于高可用的 IP 漂移

但是比 keepalived 配置简单,而且 opnsense 就是用的这个做的高可用,opnsense 是个非常可靠的防火墙软件。

首先有两台虚机,172.18.19.1和172.18.19.2,虚拟ip是172.18.19.3

先配置172.18.19.1

 1yum install epel-release
 2yum install psmisc
 3yum install ucarp
 4
 5cat<< EOF >> /etc/systemd/system/ucarp.service
 6[Unit]
 7Description=UCARP virtual interface
 8After=network.target
 9
10[Service]
11Type=simple
12ExecStart=/usr/local/bin/ucarp.sh
13RemainAfterExit=true
14ExecStop=/usr/bin/killall -SIGTERM ucarp
15ExecStop=/bin/sleep 10
16TimeoutStopSec=30
17StandardOutput=journal
18
19[Install]
20WantedBy=multi-user.target
21EOF
22
23注意,上面我们的systemd是直接调用了ucarp.sh来启动,这样更简单。
24三个脚本,注意权限是755
25
26cat<< EOF >> /usr/local/bin/ucarp.sh
27#!/bin/bash'
28/usr/sbin/ucarp -i eth0 -B -p nb1Dshiwode -v 001 -a 172.18.19.3 -s 172.18.19.1 --shutdown --preempt -u /usr/local/bin/vip-up.sh -d /usr/local/bin/vip-down.sh
29EOF
30
31cat<< EOF >> /usr/local/bin/vip-up.sh 
32#!/bin/sh
33/sbin/ip addr add ${2}/24 dev ${1}
34/sbin/ip neigh flush dev ${1}
35EOF
36
37cat<< EOF >> /usr/local/bin/vip-down.sh
38#!/bin/sh
39/sbin/ip addr del ${2}/24 dev ${1}
40/usr/sbin/arp -d ${2}
41EOF
42
43chmod 755 /usr/local/bin/ucarp.sh /usr/local/bin/vip-up.sh /usr/local/bin/vip-down.sh

ok,第一台机器就配置好了

所有的东西都在ucarp.sh的那一行的参数上,直接用ucarp -h来查看

配置第二台172.18.19.2,其他的东西都一样,唯一不同的就是ucapr.sh的一处不一样

1cat<< EOF >> /usr/local/bin/ucarp.sh
2#!/bin/bash'
3/usr/sbin/ucarp -i eth0 -B -p nb1Dshiwode -v 001 -a 172.18.19.3 -s 172.18.19.2 --shutdown --preempt -u /usr/local/bin/vip-up.sh -d /usr/local/bin/vip-down.sh
4EOF
5
6# -s 172.18.19.2 源ip和19.1不同

ok,两台都配置完毕, 分别执行启动

1systemctl daemon-reload
2systemctl enable --now ucarp

可以再找一台机器,一直长 ping 172.18.19.3,然后随机杀掉 19.1 和 19.2 上面的 ucarp 进程,可以看到 vip 172.18.19.3 会来回飘

注意:如果主掉了,从接管了 vip 变成 master,那么主再起来的时候不会去抢从的 master。


Gost Tunnel的使用
Kubernetes下Flannel网络
comments powered by Disqus