keepalived 详解(包含相关概念和示例)
相关概念
1、HA Cluster
1、集群类型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP
2、单点故障:SPoF:(Single Point of Failure)
3、系统可用性的公式:A=MTBF/(MTBF+MTTR)
4、系统故障:硬件故障(设计缺陷、wear out、自然灾害、……)和 软件故障(设计缺陷)
5、提升系统高用性的解决方案之降低MTTR:采取冗余手段(redundant:active/passive(主备),active/active(双主))
6、高可用的是“服务”:
# HA nginx service:vip/nginx process[/shared storage]
# shared storage:NAS(文件共享服务器)或 SAN(存储区域网络,块级别的共享)
# Network partition:网络分区
7、Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作
8、Failback:故障移回,即某资源的主节点故障后重新修改上线后,将转移至其它节点的资源重新切回的过程
9、HA Cluster实现方案:
# vrrp协议的实现(keepalived)
# ais:完备HA集群(RHCS(cman)、heartbeat、corosync)
2、VRRP
vrrp协议:Virtual Redundant Routing Protocol。
2.1 相关术语
虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255)
物理路由器:
# master:主设备
# backup:备用设备
# priority:优先级
VIP:Virtual IP
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
2.2 其它介绍
通告:进行心跳,优先级等信息周期性进行发送
模式:抢占式,非抢占式
安全工作:认证方式
# 无认证
# 简单字符认证
# MD5
工作模式:
# 主/备:单虚拟路径器
# 主/主:主/备(虚拟路径器1),备/主(虚拟路径器2)
3、mailx
3.1 安装
[root@neo-neo ~]# yum install mailx -y
[root@neo-neo ~]# rpm -ql mailx
/bin/mail
/bin/mailx
/etc/mail.rc
/usr/bin/Mail
/usr/bin/nail
/usr/share/doc/mailx-12.5
/usr/share/doc/mailx-12.5/AUTHORS
/usr/share/doc/mailx-12.5/COPYING
/usr/share/doc/mailx-12.5/README
/usr/share/man/man1/Mail.1.gz
/usr/share/man/man1/mail.1.gz
/usr/share/man/man1/mailx.1.gz
/usr/share/man/man1/nail.1.gz
3.2 使用
[root@neo-neo ~]# echo "hello" | mail -s "hi" root@localhost # 进行邮件发送, -s 指定邮件主题
[root@neo-neo ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 2 messages 2 new
>N 1 root Thu Oct 3 09:58 18/603 "hi"
N 2 root Thu Oct 3 09:58 18/602 "hi"
& 2
Message 2:
From root@neo-neo.localdomain Thu Oct 3 09:58:44 2019
Return-Path: <root@neo-neo.localdomain>
X-Original-To: root@localhost
Delivered-To: root@localhost.localdomain
Date: Thu, 03 Oct 2019 09:58:44 -0400
To: root@localhost.localdomain
Subject: hi
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@neo-neo.localdomain (root)
Status: R
hello
& exit
You have mail in /var/spool/mail/root
keepalived
1、实现方式
vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务:
- 基于vrrp协议完成地址流动
- 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
- 为ipvs集群的各RS做健康状态检测
- 基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务
2、组件介绍
-
核心组件
vrrp stack ipvs wrapper checkers
-
控制组件:配置文件分析器
-
IO复用器
-
内存管理组件
-
分为两大层:内核空间(Kernel Space)、用户空间(User Space)
-
IPVS(IP Virtual Server): 实现传输层负载平衡,也称为第4层交换
-
NETLINK: 用于在内核和用户空间进程之间传输信息
Keepalived 分为3个守护进程:
- 父进程: 很简单,负责 fork 子进程,并监视子进程健康(图中 WatchDog 周期性发送检测包,需要的话重启子进程)
- 子进程A: 负责VRRP框架(图中 VRRP Stack)
- 子进程B: 负责健康检查(图中 Checkers)
3、HA Cluster的配置前提
- 各节点时间必须同步(使用 ntp, chrony 进行实现)
- 确保iptables及selinux不会成为阻碍
- 各节点之间可通过主机名互相通信(对KA并非必须):(建议使用/etc/hosts文件实现)
- 确保各节点的用于集群服务的接口支持MULTICAST通信(使用D类地址:224-239)
4、keepalived 安装
CentOS 6.4 以上的版本随base仓库提供。
5、keepalived 程序环境
主配置文件:/etc/keepalived/keepalived.conf
主程序文件:/usr/sbin/keepalived
Unit File:keepalived.service
Unit File的环境配置文件:/etc/sysconfig/keepalived
6、主配置文件组件部分
TOP HIERACHY
# GLOBAL CONFIGURATION
# Global definitions
# Static routes/addresses
# VRRPD CONFIGURATION
# VRRP synchronization group(s):vrrp同步组
# VRRP instance(s):每个vrrp instance,即一个vrrp路由器
# LVS CONFIGURATION
# Virtual server group(s)
# Virtual server