更新时间:2021-12-17 00:45:42
你的系统是否存在单点故障呢?那么这里我们基于Docker演示下基于KeepAlive的高可用配置。
KeepAlived是一个用C语言编写的路由软件,它的主要目的是为了提供基于Linux服务器的负载均衡和高可用功能。其负载均衡是依赖lvs的,keepalived还实现了一些的检测器来实现后端服务器的健康检查。
它的高可用是通过VRRP协议实现的。
原理:Keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。
这里为了简单起见,我使用Docker来模拟Linux系统,使用容器与操作系统上的操作差别不是特别大,明白其配置文件与原理在哪里都可以搭建。
拉取Keepalived镜像,正常情况下我们先用docker search xxx来搜索想要的镜像,如果觉得命令行模式下不好用,可以在dockerhub上搜索。
docker pull arcts/keepalived:1.2.0
对于拉取的镜像,点进去查看镜像的详情,镜像的tag,还有镜像的使用说明。
docker run -it --name ha1 --net=host --cap-add NET_ADMIN 124d8d1c0dc2 /bin/bash
docker run -it --name ha2 --net=host --cap-add NET_ADMIN 124d8d1c0dc2 /bin/bash
// Master的配置
vrrp_instance MAIN {
state MASTER
interface eth0
virtual_router_id 2
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass pwd1
}
virtual_ipaddress {
172.17.0.254/16
}
}
vrrp_instance MAIN {
state BACKUP
interface eth0
virtual_router_id 2
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass pwd1
}
virtual_ipaddress {
172.17.0.254/16
}
}
解释几个比较关键的参数:
配置文件相关的内容,这里就不多说了,一般来说keepalived的配置文件主要包含:
// 全局块
global_defs {
}
// VRRP实例块
vrrp_instance xx{
}
// 虚拟服务器块
virtual_server IP PORT {
//真实的服务器块
real_server @IP POR {
}
}
两个容器启动方式差不多,配置文件稍微一点不同
#进入容器内部
docker exec -it ha1 /bin/bash
#查看keepalived的帮助信息
keepalived -h
#编辑配置文件
vi /etc/keepalived/keepalived.conf
# 测试配置文件,然后运行,具体的参数根据命令行的帮助信息自己运行
keepalived -t -f /etc/keepalived/keepalived.conf
keepalived l -f /etc/keepalived/keepalived.con
这次我们只是演示keepalived的高可用。
这次没有做过多的功能,但是可以想到当IP实现高可用的时候,IP绑定的服务器提供的服务就是高可用的。
关于keepalived的使用,要具体实操才能明白怎么回事,其一般与lvs(自带)或HAProxy配套使用,敬请期待接下来更多内容。