- Keepalived 简介
Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现web服务的高可用。
Keepalived 是以 VRRP 协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器(可以理解为单个Nginx节点)组成一个路由器组,这个组里面有一个master 和多个 backup,master 上面有一个对外提供服务的 VIP(Virtual IP Address)(该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播,当 backup 收不到 vrrp 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master。这样的话就可以保证路由器的高可用了。
keepalived 主要有三个模块,分别是core、check 和 vrrp。core 模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check 负责健康检查,包括常见的各种检查方式。vrrp 模块是来实现 VRRP 协议的。
- Keepalived 安装部署
注意:以下都是在本地Mac上通过虚拟机的方式进行搭建运行的。在阿里云及腾讯云无虚拟IP功能,比较麻烦。
- 1、下载安装包
下载地址:
www.keepalived.org/download.ht…
将下载后的keepalived上传到linux上,这里上传到/home/software上
- 2、解压
1 | 复制代码tar -zxvf keepalived-2.0.18.tar.gz |
- 3、配置
解压后,进入相应的文件夹下,用configure进行安装配置。
1 | bash复制代码./configure --prefix=/usr/local/keepalived --sysconf=/etc |
prefix:keepalived安装的位置
sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/messages中会报错。
配置过程中可能会出现警告信息,如下所示:
解决方法:安装 libnl/libnl-3
依赖 yum -y install libnl libnl-devel
,重新configure
一下就好了。
- 4、安装keepalived
1 | go复制代码make && make install |
-5、通过 whereis keepalived
查看安装后的未知
- Keepalived 配置与启动
1、进入 /etc/keepalived/
,对keepalived.conf进行相关配置。
1 | perl复制代码global_defs { |
附:查看网卡名称
2、启动 Keepalived
在sbin目录中进行启动,如下图:
查看进程
1 | perl复制代码ps -ef|grep keepalived |
查看虚拟 IP(VIP)
在网卡 ens33 下,多了一个 192.168.1.108 ,这个就是虚拟ip
- 把 Keepalived 注册为系统服务
进入解压缩安装包的 etc 文件夹
将配置文件拷贝至系统 etc文件
1 | bash复制代码cp init.d/keepalived /etc/init.d/ |
刷新系统服务,加载新添加的 Keepalived 服务
1 | 复制代码systemctl daemon-reload |
之后就可以通过如下命令启动/关闭keepalived
1 | bash复制代码# 启动keepalived |
5.Keepalived 实现双机主备高可用
在配置完 Keepalived 主服务器节点后,接下来就可以配置备用服务器节点了,备用服务器配置如下:
1 | perl复制代码global_defs { |
启动 Keepalived
1 | sql复制代码systemctl start keepalived |
查看备用服务器 Keepalived 进程
现在主服务器节点 192.168.1.104 以及备用服务器节点 192.168.1.105 以及 Keepalived 虚拟 IP 192.168.1.105已配置完毕
这里我在本地将 Keepalived 虚拟IP 192.168.1.108已映射至 www.keep.com
所以直接访问 www.keep.com 即可访问主服务器节点
当主服务器节点的 Keepalived 服务不可用时(这里我直接将主服务器的 Keepalived 服务直接停止systemctl stop keepalived.service,便于测试),虚拟IP 自动绑定至备用服务器节点地址
- Keepalived 配置 Nginx 自动重启
1、增加Nginx重启检测脚本
1 | bash复制代码vim /etc/keepalived/check_nginx_alive_or_not.sh |
1 | bash复制代码#!/bin/bash |
增加运行权限
1 | bash复制代码chmod +x /etc/keepalived/check_nginx_alive_or_not.sh |
2、在 keepalived.conf 配置定时监听 nginx 状态脚本
1 | bash复制代码vrrp_script check_nginx_alive { |
3、在vrrp_instance中新增监控的脚本
1 | bash复制代码track_script { |
4、重启Keepalived使得配置文件生效
1 | 复制代码systemctl restart keepalived |
- Keepalived 实现双主热备高可用
实现双机主备,可能由于一台资源一直空闲的情况,这是采用双主热备可以解决这个问题。
Keepalived 双主热备详细配置:
规则:以一个虚拟ip分组归为同一个路由
主节点配置
1 | kotlin复制代码global_defs { |
备用节点配置
1 | kotlin复制代码global_defs { |
本文转载自: 掘金