Keepalived 详解
简介
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
说明:heartbeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。而keepalived有着相似的功能,通过虚拟路由冗余来实现高可用功能。
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
后来Keepalived又加入了VRRP的功能,出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。
VRRP协议与工作原理
VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由,这个虚拟路由器通过虚拟IP(一个或者多个)对外提供服务,而在虚拟路由器内部十多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由设备被成为:主路由器(Master角色),一般情况下Master是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP 数据转发等,而且其它的物理路由器不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些路由器被统称为“BACKUP的角色”,当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的。
每个虚拟路由器都有一个唯一的标识号,称为VRID,一个VRID与一组IP地址构成一个虚拟路由器,在VRRP协议中,所有的报文都是通过IP多播方式发送的,而在一个虚拟路由器中,只有处于Master角色的路由器会一直发送VRRP数据包,处于BACKUP角色的路由器只会接受Master角色发送过来的报文信息,用来监控Master运行状态,一般不会发生BACKUP抢占的情况,除非它的优先级更高,而当MASTER不可用时,BACKUP也就无法收到Master发过来的信息,于是就认定Master出现故障,接着多台BAKCUP就会进行选举,优先级最高的BACKUP将称为新的MASTER,这种选举角色切换非常之快,因而保证了服务的持续可用性。
配置文件详解
! Configuration File for keepalived
# 发生故障 进行消息传输
# 容器识别
global_defs {notification_email {
# 填写接收者邮箱 例如 123@qq.comacassen@firewall.loc}
# 发送者邮箱notification_email_from Alexandre.Cassen@firewall.loc
# 邮箱发送地址smtp_server 192.168.200.1
# 链接 smtp服务器超时 时间smtp_connect_timeout 30
# 标识本节点字符串 一般是hostname这种 发送通知邮箱时会用到router_id LVS_DEVEL
# 检查vrrp报文中的所有地址比较耗时,设置此标志的意思是如果接收的到报文和上一个报文来至同一个路由器则不执行检查。默认是跳过检查 vrrp_skip_check_adv_addr
# 严格遵守vrrp协议,下面这些功能将会禁止: 1. 0 VIP 2. unicast(单播) peers 3. vrrp 版本2的ipv6功能vrrp_strict
# 小数类型,单位秒,在一个网卡上每组gratuitous arp消息之间的延迟时间,默认为0,一个发送的消息=n组 vrrp_garp_interval 0
# 小数类型,单位秒, 在一个网卡上每组na消息之间的延迟时间,默认为0vrrp_gna_interval 0
}
# 定义对外提供服务的VIP区域及相关属性
vrrp_instance VI_1 {
# 状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。state MASTER
# interface:可以绑定当前虚拟路由器所使用的物理接口,比如eth0,bond0,br0,可以和VIP不在一个网卡上interface eth0
# 虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的。virtual_router_id 51
# 优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。 priority 100
# MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。advert_int 1authentication {
# 设置认证类型,有两种选择一个是AH类型,另一种是PASS类型,AH为IPSC互联网安全认证,而PASS是简单的密码认证,这里推荐使用PASS认证,默认是使用的PASS认证。auth_type PASS
# auth_pass 1111 验证密码为明文,同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能通信 auth_pass 1111}
# 虚拟ip地址,可以有多个地址,每个地址占一行 virtual_ipaddress {10.77.0.100}
}
# virtual_server模块是用于配置虚拟服务器,将虚拟路由器中添加的VIP与后端real server对应起来
virtual_server 192.168.200.100 443 {
# 设置检查后端服务器的时间间隔delay_loop 6
# 指定调度算法lb_algo rr
# 指定集群的类型lb_kind NAT
# 指定持久连接的时长persistence_timeout 50
# 指定服务的协议protocol TCP
# 设置VIP所对应的后端服务器IP和端口,也包括以下的配置部分real_server 192.168.201.100 443 {
# 设置后端服务器的权重weight 1
# SSL_GET、HTTP_GET、TCP_CHECK、SMTP_CHECK和MISC_CHECK等可以定义当前后端主机的健康状况检查方法SSL_GET {url {path /digest ff20ad2481f97b1754ef3e12ecd3a9cc}url {path /mrtg/digest 9b3a0c85a887a256d6939da88aabd8cd}
# 设置客户端的连接超时的时长connect_timeout 3
# 重试的次数nb_get_retry 3
# 初始之前的延迟时长delay_before_retry 3}}
}
除了我们安装时候默认的这些配置还有其他的模块配置
#应用层热备需要添加的内容
vrrp_script chk_nginx{#执行脚本的路径script "/etc/nginx/check_nginx.sh"#调用脚本两次之间的间隔,默认为1秒interval 1#第二次调用脚本后多长时间没有回应的超时时间timeout 10weight 10 #weight可以参考:keepalived之vrrp_script总结
}vrrp_sync_group VG_1{ #监控多个网段的实例
group {VI_1 #实例名VI_2......
}
notify_master /path/xx.sh #指定当切换到master时,执行的脚本
netify_backup /path/xx.sh #指定当切换到backup时,执行的脚本
notify_fault "path/xx.sh VG_1" #故障时执行的脚本
notify /path/xx.sh
smtp_alert #使用global_defs中提供的邮件地址和smtp服务器发送邮件通知
}
基础命令
# 安装
yum install -y keepalived# 启动
systemctl start keepalived && systemctl enable keepalived# 全部命令
Usage: keepalived [OPTION...]-f, --use-file=FILE Use the specified configuration file-P, --vrrp Only run with VRRP subsystem-C, --check Only run with Health-checker subsystem-l, --log-console Log messages to local console-D, --log-detail Detailed log messages-S, --log-facility=[0-7] Set syslog facility to LOG_LOCAL[0-7]-X, --release-vips Drop VIP on transition from signal.-V, --dont-release-vrrp Don't remove VRRP VIPs and VROUTEs on daemon stop-I, --dont-release-ipvs Don't remove IPVS topology on daemon stop-R, --dont-respawn Don't respawn child processes-n, --dont-fork Don't fork the daemon process-d, --dump-conf Dump the configuration data-p, --pid=FILE Use specified pidfile for parent process-r, --vrrp_pid=FILE Use specified pidfile for VRRP child process-c, --checkers_pid=FILE Use specified pidfile for checkers child process-a, --address-monitoring Report all address additions/deletions notified via netlink-x, --snmp Enable SNMP subsystem-A, --snmp-agent-socket=FILE Use the specified socket for master agent-s, --namespace=NAME Run in network namespace NAME (overrides config)-m, --core-dump Produce core dump if terminate abnormally-M, --core-dump-pattern=PATN Also set /proc/sys/kernel/core_pattern to PATN (default 'core')-i, --config_id id Skip any configuration lines beginning '@' that don't match id-v, --version Display the version number-h, --help Display this help message
Keepalived 详解相关推荐
- Linux 高可用(HA)集群之keepalived详解
大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言 这篇文章是前几篇文章的总结,我们先简单的总结一下我们前面讲解的内容 ...
- keepalived详解 结合lvs
Keepalived原理与实战精讲 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点 ...
- [高可用系列|keepalived]Keepalived详解
背景 前面在说LNMT架构的时候,在最后留了一个疑问,就是我们的单台Nginx做负载均衡的时候出现故障的话,我们整个架构就会瘫痪,这显然是不被允许的.因此我们就需要给Nginx做高可用部署,keepa ...
- keepalived详解和实战
Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...
- CentOS6.5 keepalived详解及实现Nginx服务的高可用性
keepalived基础概念 Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障.一个WEB服务至少会有2台服务器运行Keepalived,一台为主 ...
- lvs+keepalived详解
常用软件安装及使用目录 资源链接:https://pan.baidu.com/s/15rFjO-EnTOyiTM7YRkbxuA 网盘分享的文件在此 官网:http://www.linuxvir ...
- 虚拟ip设置 - Keepalived详解
1. ubuntu安装keepalived(需要偏移的机器) root@ubuntu:~# apt install keepalived 2. 编写配置文件/etc/keepalived/keepal ...
- Keepalived详解之 - LVS(IPVS)管理工具ipvsadm使用指南
ipvsadm是什么? ipvsadm是用来配置.维护或者查看Linux内核当中virtual server table的一个工具, LVS(Linux virtual server)能基于一个集群当 ...
- 详解keepalived配置和使用
详解keepalived配置和使用 一.keepalived简介: keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Ke ...
最新文章
- Java中Filter、Servlet、Listener的学习
- 3D点云two-stage目标检测方法优化综述
- PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述
- POJ2777(线段树裸题)
- mac 杀掉占用某个端口的进程
- C#容量超出了最大容量。
- 工业机器人码垛教学实施_工业机器人应用案例码垛详解
- 在Windows中为文件添加“可执行”权限(chmod +x 文件名 不起作用)
- cesium获取模型实时坐标_Cesium 顶点着色器中解算模型坐标
- 音频播放时,将前台服务和通知栏关闭
- ssh全屏退出的办法
- 技术人 | 如何做一个明白状况的研发主管?
- vim 常用的快捷键
- caffe 基础教程
- 应用电子计算机英文,应用电子技术英文介绍
- 如何将App程序发布到苹果App Store
- ADO.NET如何读取Excel(转自晓风残月)
- 精美素材:10套最新出炉的免费扁平图标下载
- 分享111个HTML艺术时尚模板,总有一款适合您
- macOS在IDEA上集成PLANTUML Graphviz绘制UML图并导出SVG
热门文章
- iOS实现平铺的几种简单方式
- 中国工程院发布“中国电子信息工程科技发展十六大挑战”
- 教程 | 阿克曼结构移动机器人的gazebo仿真(九)
- 刷题小程序【程序猿面试宝典】开发(一)| 项目概述与前期准备
- 高恪一键管控之封杀随身wifi与电视盒子
- 2020年9月青少年C/C++软件编程(一级)等级考试试卷及答案解析
- 【产业互联网周报】国内云计算厂商加紧布局:华为新成立云计算公司运营国内业务、阿里云入驻上海新研发中心...
- aire 计算机术语,计算机专业词汇Glossaire.doc
- 如何将照片变成黑白照?
- ncnn编译使用(一)