Keepalived 工作原理和配置说明
来源:互联网 发布:javascript 反编译 编辑:程序博客网 时间:2024/05/22 03:16
keepalived是什么:
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。Keepalived是VRRP的完美实现.
keepalived工作原理:
其工作在OSI的Layer3,4,7层。工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3网络层:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。Layer4传输层:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
Layer7应用层:Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
Layer3网络层:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer7应用层:Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。
core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check负责健康检查,包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的。
keepalived的配置文件:
keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是
global_defs、 故障时默认邮件发送 参数
static_ipaddress、 设置本节点的IP 如果你的机器上已经配置了IP和路由,那么这两个区域可以不用配置
static_routes、 设置本节点路由信息 如果你的机器上已经配置了IP和路由,那么这两个区域可以不用配置
vrrp_script、 用来做健康检查,检查失败时会将vrrp_instance的priority减少相应的值。
vrrp_instance 用来定义对外提供服务的VIP区域及其相关属性
virtual_server 一般在超大型的LVS中用到,一般LVS用不到,略过
全局配置又包括两个子配置
全局定义(global definition)
静态路由配置(static ipaddress/routes)
实战阶段:
配置范例
global_defs{notification_email 发生诸如切换操作时发送email通知邮件地址 可以多个每行一个{admin@example.com}notification_email_from admin@example.com 发送通知邮件时邮件源地址是谁smtp_server 127.0.0.1 发送email时使用的smtp服务器地址stmp_connect_timeout 30 连接smtp连接超时时间router_id node1 机器标识 节点名标识,主要用于通知中 }
2静态地址和路由配置范例
static_ipaddress { 10.210.214.163/24 brd 10.210.214.255 dev eth0 这里实际上和系统里面命令配置IP地址和路由一样 ...}static_routes { 10.0.0.0/8 via 10.210.214.1 dev eth0 ...}
以上分别表示启动/关闭keepalived时在本机执行的如下命令:
# /sbin/ip addr add 10.210.214.163/24 brd 10.210.214.255 dev eth0# /sbin/ip route add 10.0.0.0/8 via 10.210.214.1 dev eth0# /sbin/ip addr del 10.210.214.163/24 brd 10.210.214.255 dev eth0# /sbin/ip route del 10.0.0.0/8 via 10.210.214.1 dev eth0
注意: 请忽略这两个区域,一般这个区域不需要配置,因为我坚信你的机器肯定已经配置了IP和路由。
二、VRRPD配置
VRRPD配置包括三个类
VRRP同步组(synchroization group)
VRRP实例(VRRP Instance)
VRRP脚本
1.VRRP同步组(synchroization group)配置范例
定义vrrp_intance组,使得这个组内成员动作一致。
例如两个vrrp_instance同属于一个vrrp_rsync_group,那么其中一个vrrp_instance发生故障切换时,另一个vrrp_instance也会跟着切换(即使这个instance没有发生故障)。vrrp_sync_group VG_1 { group {httpmysql }notify_master /path/to/to_master.sh 表示当切换到master状态时要执行的脚本notify_backup /path_to/to_backup.sh 表示当切换到backup状态时要执行的脚本notify_fault "/path/fault.sh VG_1" 表示出错状态时要执行的脚本notify /path/to/notify.sh 表示任何状态切换时都调用该脚本,该脚本在以上三个脚本执行完成之后进行调用smtp_alert 表示切换时给global defs中定义的邮件地址发送邮件通知}
2.VRRP实例(instance)vrrp_instance http {state MASTER 实例初始状态(还要根据priority值确定)可以是MASTER 或 BACKUP
如果设置了nopreempt 则这个值不起作用,主从根据priority确定
interface eth0 实例节点固有IP(非VIP)的网卡,用来发VRRP包dont_track_primary 忽略VRRP网卡错误。(默认未设置)track_interface { 监控以下网卡,如果任何一个不通就会切换到FALT状态。(可选项)eth0eth1}mcast_src_ip <IPADDR> vrrp组播包的源地址,默认源地址为master的IP 这里相当于heartbeat的心跳端口 garp_master_delay 10 当切为主状态后多久更新ARP缓存virtual_router_id 51 虚拟路由标识 相同的VRID为一个组 他将决定多播的MAC地址priority 100 定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER 的优先级必须大于BACKUP。
这个选项的值最好高于其他机器50个点,该项范围是1-255advert_int 1 检查间隔默认为1秒
authentication { 设置认证auth_type PASS 认证方式可以是PASS或AH两种认证方式
autp_pass 1234 认证密码
}virtual_ipaddress { 设置虚拟IP 可以设置多个#<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL>192.168.200.17/24 dev eth1192.168.200.18/24 dev eth2 label eth2:1}virtual_routes { 这里就是设置虚拟路由的地方了# src <IPADDR> [to] <IPADDR>/<MASK> via|gw <IPADDR> dev <STRING> scope <SCOPE> tabsrc 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1192.168.110.0/24 via 192.168.200.254 dev eth1192.168.111.0/24 dev eth2192.168.112.0/24 via 192.168.100.254}nopreempt 允许一个priority比较低的节点作为master,即使有priority更高的节点启动(详见下文注意事项)preemtp_delay 300 抢占延迟 master启动多久之后进行接管资源(VIP/Route信息等), 前提是没有nopreempt选项 debug debug级别}3.VRRP脚本
告诉 keepalived 在什么情况下切换,所以尤为重要。可以有多个 vrrp_script
vrrp_script check_running {script "/usr/local/bin/check_running" 定义脚本名字 interval 10 脚本执行的间隔 weight -10 脚本执行的优先级} 如果script中的指令执行失败,那么相应的vrrp_instance
的优先级会减少10个点
- 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
- 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
- 其他情况,原本配置的优先级不变,即配置文件中priority对应的值。
注意事项: 设置state为 双备原理通常如果master服务死掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次切换对业务繁忙的网站来说是不好的。 所以我们要在配置文件加入 nopreempt 非抢占 参数,但是这个参数只能用于state 为backup,故我们在用HA的时候最好master 和backup的state都设置成backup 让其通过priority来竞争。 这样加上nopreempt的时候,即使master又好了,依旧不会切换 。state nopreempt priority 主机 backup 设置 100 从机 backup 不设置 50 阅读全文0 0
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- keepalived工作原理和配置说明
- Keepalived 工作原理和配置说明
- keepalived的工作原理及配置说明
- keepalived原理及配置段的说明
- keepalived 各配置项和术语说明
- keepalived理论工作原理
- keepalived工作原理
- Keepalived 工作原理
- Keepalived 配置说明
- tomcat 安装在 linux
- tomcat 简单配置
- Linux 安装 jdk
- 安卓系统中对SD卡的操作
- 高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)
- Keepalived 工作原理和配置说明
- 2018秋招面试题总结(软件开发类)
- Mysql 初始化 及 密码管理
- Nginx + php
- Nginx location配置 正则表达式
- Linux 用户管理命令
- 常用命令 find chmod
- 【51nod】1412 AVL树的种类
- Tomcat 配置2 tomcat-users.xml
原创粉丝点击热门IT博客热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 都市之我的妹妹是兄控 兄贵 月下三兄贵 月下六兄贵 兄贵三巨头 兄贵表情包 兄贵哲学 兄贵动画 兄贵是什么意思 月下三兄贵图片 兄贵哲学图片 兄贵van哲学全部台词 兄贵香蕉君图片 兄贵引导人民 兄贵们居住的地方是哪里 兄贵哲学三巨头是谁 兄贵哲学搞笑表情包 兄长在上 兄长 兄长大人 兄长的权限 兄长勿近 兄兄兄长 兄长暖如玉 快穿兄长大人来一发 嫁给兄长的竹马 惟愿兄长不多情 兄长在上程十七 末世被兄长囚禁 变态兄长by朽木布全父阅读 末世被兄长囚禁肉 兄长在上无错乱章节txt 觊觎兄长大人 炮灰兄长作死日常 深雪和兄长大人h全菜 兄长在上无重复章节 兄长在上无防盗阅读 圈套by充丛 充分条件 充分必要 充分