前言
今天早上起床,没有小爱主动播报天气及日程,感觉出一丝不对的我拿起手机一看,原来软路由在今天凌晨2点38分已经挂掉了。按以前套路一般是软路由内部积灰过多造成散热问题导致关机,于是乎对其一顿清灰后重新插上电源,但依旧一片安静,主机丝毫没有运转的迹象。最后排查问题后发现可能电源适配器出现故障。
由于我家DHCP服务
,DNS服务
都是由这台软路由负责,所以软路由罢工后,我家的网络基本就是瘫痪了。于是全网搜索19v*6.32A且带7.4*5大针口
的电源适配器,最后找到了一家仓库在上海的店家,直接叫了闪送到家。虽然电源适配器参数略有差异,但好在能跑起来。
经过这次之后,我就在想到之前尝试过的一个项目,名字叫keepalived
,用于服务器热备冗余。当时在我另一台服务器上虚拟了两个OpenWrt
互相热备成功后就没再折腾了,正好这次我把他部署到我主软路由上。
过程
先说下我主备机情况,主机是物理机安装的OpenWrt
,版本为18.06.8
;备机是服务器虚拟出来的ImmortalWrt
,版本为23.05.2
首先运行如下命令拉取升级依赖并安装keepalived
:
opkg update
opkg install keepalived
之后运行如下命令告诉系统配置文件的路径:
cat > /etc/config/keepalived <<-EOF
config globals 'globals'
option alt_config_file "/etc/keepalived/keepalived.conf"
EOF
然后要确定一个关键的东西是VIP
(虚拟IP),我的两台软路由的地址分别是:192.168.31.133
,192.168.31.130
。所以给VIP
设定为一个不冲突的192.168.31.134
备机
cat > /etc/keepalived/keepalived.conf <<-EOF
global_defs {
router_id LVS_1
}
vrrp_instance VI_1 {
interface eth0 # 这里是lan口网卡名,通过ip a查看
state BACKUP
virtual_router_id 1 # 主机和备机这个需要一致
priority 50 # 主机建议设置比这个更高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.31.134/24 # 这里是虚拟ip地址
}
}
EOF
这样备机的配置就完成了
主机
cat > /etc/keepalived/keepalived.conf <<-EOF
global_defs {
router_id LVS_1
}
vrrp_instance VI_1 {
interface eth0 # 这里是lan口网卡名,通过ip a查看
state MASTER
virtual_router_id 1 # 主机和备机这个需要一致
priority 100 # 主机建议设置比备机高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.31.134/24 # 这里是虚拟ip地址
}
}
EOF
这样主机就配置完成了
启动进程
/etc/init.d/keepalived restart
通过ps -ef | grep keepalived
来查看进程是否运行
遇到的问题
进程无法启动
在启动进程的时候,备机没问题一次点亮,但主机的进程却起不来,通过keepalived --check-config
命令排查问题后发现三条找不到文件的报错
解决方法
其实这些文件都在/usr/lib64/
下,只是名字不一样,所以只要复制一份原文件并改成keepalived
需要的名字就能解决
cp /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.0.0
cp /usr/lib64/libip4tc.so.2 /usr/lib64/libip4tc.so.0
cp /usr/lib64/libip6tc.so.2 /usr/lib64/libip6tc.so.0
再次运行进程即可正常运行
无法读取使用配置文件
运行进程后,备机还是没有问题,主机却无法读取配置文件。
解决方法
1、先停止主机的keepalived
进程
service keepalived stop
service keepalived disable
2、手动启动keepalived
/usr/sbin/keepalived
3、然后输入ip a
,查看 网口是否同时有VIP
和OpenWrt
配置的ip。若有,则OpenWrt
的keepalived
配置和启动成功运行。
4、登录OpenWrt
的luci
界面,把手动启动命令加入系统-启动项exit 0
行前面。 这样,下次便会自动启动keepalived
验证
手动关闭主机后,客户端们的网关和DNS
会自动切换到备机,同时从备机的主页上也能看到,其State
从BACKUP
已经切换到MASTER
最后
有了热备冗余后,网络高可用,再也不用担心因为软路由挂掉导致网络瘫痪了
发表回复