keepalived
keepalived的诞生本是为lvs提供高可用的,但是现在keepalived可以当成一组独立的高可用组件来使用,其主要是通过VRRP协议实现高可用(VRRP是什么这里不做过多介绍),而keepalived实现故障转移主要是通过优先级抢占来实现的(也可通过down掉其中一个keepalived),通常情况下是一主一备(当然也可以双主),
下面是官网的keepalived设计图
2.1Scheduler -I/O Multiplexer
keepalived是使用I/O复用实现管理通信的.
2.2 Memory Mngt
keepalived自己实现内存管理,包括内存分配,内存再分配,内存释放等.
2.3 Control Plane
配置管理的东东,只需要按照默认的配置文件格式即可
2.4 Watch Dog
keepalived启动时会生成三个进程,其中主进程就靠这个Watch Dog去监控两个子进程,如果子进程挂了,会尝试去重启子进程,如果启动失败,就会把服务转移到备用节点上.
2.5 VRRP Stack
keepalived的一个重要功能,高可用的主要实现之一,VRRP协议主要是实现路由冗余的,keepalived就是靠VRRP在后端的两台real server虚拟一个vip和一个vmac地址,当一台的keepalived(或者使用Checkers监控的服务)挂了的时候可以把vip和vmac转移到另一台real server上,实现高可用.
2.6Checkers
这也是keepalived的一个重要功能,主要对后端real server的服务进行健康状态检测的,如果检测到当前定义的检测项dead了的话,通过降低主服务器的优先级来实现故障转移.内置了tcp,http,ssl等检测手段,当然,这些还不够的话,可以使用自定义脚本,
2.7SMTP
这个是邮件模块,主要是当服务发生转移或者其它定义的条件被触发时通知管理员使用的.
2.8 System Call
自定义对服务检测的脚本
keepalived+nginx(配置如下),ngxinngxin自行定义
master:
! Configuration File for keepalived
global_defs { #全局配置段
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check_down { #通过检测nginx服务是否在线,动态调整优先级
script "`killall -0 nginx ` &> /dev/null && exit 0 || exit 1"
interval 1
weight -2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100 #master进程优先级
advert_int 1 #检测时长间隔
authentication {
auth_type ldf #和backup的验证机制
auth_pass 1212
}
virtual_ipaddress {
192.168.128.222 #vip
}
track_script { #追踪上面定义的检测脚本名
check_down
}
}
backup
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check_down {
script "`killall -0 nginx ` &> /dev/null && exit 0 || exit 1"
interval 1
weight -2
}
vrrp_instance VI_1 {
state BACKUP #backup
interface eth0
virtual_router_id 51 #虚拟mac地址,不能超过255
priority 99 #backup优先级
advert_int 1
authentication {
auth_type ldf
auth_pass 1212
}
virtual_ipaddress {
192.168.128.222
}
track_script {
check_down
}
}
本文出自 “烟不离手” 博客,请务必保留此出处http://lidefu.blog.51cto.com/3429777/1682244
原文地址:http://lidefu.blog.51cto.com/3429777/1682244