keepalived实现高可用
Posted golinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived实现高可用相关的知识,希望对你有一定的参考价值。
一.keepalived是什么
keepalived最初是为LVS负载均衡设计的,用于监控LVS集群系统中的各个节点的服务状态。后来又加入了基于VRRP的高可用功能,所以也可以作为nginx,mysql等服务的高可用解决方案使用。
VRRP(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,VRRP的出现是为了解决静态路由单点故障问题的,当网络中的某一个节点挂掉时,可以保证路由的正常运行。
二.keepalived的组成和原理
WatchDog:负责监控Checkers,VRRP进程的状态,当checkers或VRRP进程被杀掉时,可以启动一个新的进程来工作
Checkers:负责检查真实节点的健康状态,是keepalived的最主要功能。
VRRP Stack:负责master挂掉后的故障切换,保证服务的连续性,减少服务的不可用时间,当只有一个节点提供服务时,该进程可以不需要
Netlink Reflector:用来设定vrrp的vip地址等。
keepalived的原理
使用keepalived进行VIP的实现。
虚拟路由冗余协议,
三.安装配置keepalived
我使用的时centos6.9系统,直接安装自带的keepalived
yum -y install keepalived
相关文件如下
/etc/keepalived /etc/keepalived/keepalived.conf #keepalived服务主配置文件 /etc/rc.d/init.d/keepalived #服务启动脚本
keepalived的运行日志默认存放在/var/log/messages
四.搭建高可用
(1)准备两台主机,一台master主服务器(192.168.211.113),一台backup备用服务器(192.168.211.112),在两台服务器上都安装keepalived
(2)修改配置文件
master主机
vrrp_script check_nginx # 自定义脚本check_nginx.sh,当nginx挂掉时,停掉keepalived,使虚拟IP切换到备机 script /etc/keepalived/check_nginx.sh # 执行check_nginx.sh脚本 interval 3 # 每3s执行一次 vrrp_instance VI_1 state MASTER # 标识为master interface eth0 # 虚拟ip绑定网卡名称 virtual_router_id 51 # 虚拟路由id,同一组中所有的服务器需要保持一致 nopreempt priority 100 # 优先级,默认越大优先级越高 advert_int 1 authentication #鉴权配置 auth_type PASS auth_pass 1111 virtual_ipaddress # 自定义虚拟ip,不能冲突 192.168.211.201 track_script # 跟踪执行的脚本 check_nginx unicast_src_ip 192.168.211.113 #发送单播消息的源ip unicast_peer 192.168.211.112 # 发送单播消息的目的IP
backup主机
vrrp_script check_nginx # 自定义脚本check_nginx.sh,当nginx挂掉时,停掉keepalived,使虚拟IP切换到备机 script /etc/keepalived/check_nginx.sh # 执行check_nginx.sh脚本 interval 3 # 每3s执行一次 vrrp_instance VI_1 state BACKUP # 标识为BACKUP interface eth0 # 虚拟ip绑定网卡名称 virtual_router_id 51 # 虚拟路由id,同一组中所有的服务器需要保持一致 nopreempt priority 100 # 优先级,默认越大优先级越高 advert_int 1 authentication #鉴权配置 auth_type PASS auth_pass 1111 virtual_ipaddress # 自定义虚拟ip,不能冲突 192.168.211.201 track_script # 跟踪执行的脚本 check_nginx unicast_src_ip 192.168.211.112 #设置发送单播消息的源ip unicast_peer 192.168.211.113 # 设置发送单播消息的目的IP
/etc/keepalived/check_nginx.sh内容如下,当nginx挂掉时,停掉keepalived,此时虚拟ip会自动切换
#!/bin/bash nginx_status=$(netstat -ntlp|grep :80|wc -l) if [ $nginx_status -eq 0 ];then service keepalived stop fi
(3)启动两台服务器上的keepalived
直接直接keepalived命令即可,一般虚拟ip会挂在先启动的那台服务器上
查看虚拟ip如下
master主机(192.168.211.113)上
backup主机(192.168.211.112)上
停掉master主机(192.168.211.113)上的nginx
[[email protected] ~]# service nginx stop
查看此时master上的IP信息
backup主机(192.168.211.112)上ip信息
可以看到此时虚拟IP已经切换到backuo主机上
以上是关于keepalived实现高可用的主要内容,如果未能解决你的问题,请参考以下文章