keepalived 原理、安装与使用
1. keepalived工作原理
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块(3个不同的守护进程),分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
配置文件:keepalived只有一个配置文件keepalived.conf,这里介绍该配置文件中几个主要的区域。
vrrp_script区域
用来做健康检查的,可调用外部脚本。
vrrp_script vs_mysql_158 { script "/etc/keepalived/checkMySQL.py -h 192.168.83.158 -P 3306" interval 60 #每60s执行一次 }
vrrp_instance区域
用来定义对外提供服务的VIP区域及其相关属性。
vrrp_instance VI_158 { state BACKUP #指定哪个为MASTER,哪个为BACKUP,必须大写,如果设置了nopreempt这个值不起作用,主备靠priority决定 interface eth0 #设置实例绑定的网卡 virtual_router_id 158 #集群中主备相同 priority 100 #优先级,高优先级竞选为master advert_int 5 #检查间隔,秒 nopreempt #不主动抢占资源,只在master这台优先级高的设置,backup不设置 authentication { auth_type PASS #认证方式 auth_pass 1111 #认证密码 } track_script { vs_mysql_158 #执行vs_mysql_158 } virtual_ipaddress { 192.168.83.157 #设置vip } }
virtual_server区域
virtual_server 192.168.83.157 3306 { delay_loop 2 #健康检查时间间隔 lb_algo wrr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR #负载均衡转发规则NAT|DR|RUN persistence_timeout 60 #会话保持时间 protocol TCP #使用的协议 real_server 192.168.83.158 3306 { weight 3 #默认为1,0为失效 MISC_CHECK { misc_path "/etc/keepalived/checkSlave.py -h 192.168.83.158 -P 3306" misc_timeout 15 misc_dynamic } } real_server 192.168.83.159 3306 { weight 3 MISC_CHECK { misc_path "/etc/keepalived/checkSlave.py -h 192.168.83.159 -P 3306" #外部脚本路径 misc_timeout 15 #脚本执行超时时间,秒 misc_dynamic #如设置该项,则退出状态码会用来动态调整服务器的权重。返回0 正常,不修改;返回1,检查失败,权重改为0;返回2-255,正常,权重设置为:返回状态码-2 } } }
2. 安装
(1) yum源安装: 执行 yum install keepalived 即可;
(2) 二进制安装:keepalived 官网下载地址:http://www.keepalived.org/download.html,也可去网盘上下载:http://pan.baidu.com/s/1boOEiAF
安装环境:
- CentOS 6.4 x64
- keepalived-1.3.4
# yum install kernel-devel openssl-devel libnl-devel libnfnetlink-devel #安装依赖
# tar zxvf keepalived-1.3.4.tar.gz # cd keepalived-1.3.4 # ./configure --prefix=/usr/local/keepalived #若有报错,安装相应的devel包即可 # make && make install
# 拷贝相应的文件
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf #注意修改该配置文件,否则会启动失败:keepalived 已死,但是 subsys 被锁
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# keepalived-1.3.14 的启动文件在安装的原文件下,以前的版本在编译的路径下 /usr/local/keepalived/…
# cp ../keepalived-1.3.4/keepalived/etc/init.d/keepalived /etc/init.d/
启动keepalived:
# /etc/init.d/keepalived start 正在启动 keepalived: [确定] # ps aux |grep keepalived root 21390 0.0 0.0 42296 1016 ? Ss 17:08 0:00 keepalived -D root 21391 0.0 0.1 42416 2168 ? S 17:08 0:00 keepalived -D root 21392 0.0 0.0 42296 1428 ? S 17:08 0:00 keepalived -D
3. 使用
待续……