码迷,mamicode.com
首页 > 其他好文 > 详细

keepalived实现高可用

时间:2019-06-02 21:47:19      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:out   健康   网卡名称   mysq   均衡   col   自定义   stop   直接   

一.keepalived是什么

keepalived最初是为LVS负载均衡设计的,用于监控LVS集群系统中的各个节点的服务状态。后来又加入了基于VRRP的高可用功能,所以也可以作为nginx,mysql等服务的高可用解决方案使用。

VRRP(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,VRRP的出现是为了解决静态路由单点故障问题的,当网络中的某一个节点挂掉时,可以保证路由的正常运行。

二.keepalived的组成和原理

技术图片

WatchDog:负责监控Checkers,VRRP进程的状态,当checkers或VRRP进程被杀掉时,可以启动一个新的进程来工作

Checkers:负责检查真实节点的健康状态,是keepalived的最主要功能。

VRRP Stack:负责master挂掉后的故障切换,保证服务的连续性,减少服务的不可用时间,当只有一个节点提供服务时,该进程可以不需要

IPVS wrapper:用户发送设定的规则到内核ipvs代码

Netlink Reflector:用来设定vrrp的vip地址等。

keepalived的原理

使用keepalived进行VIP的实现。

虚拟路由冗余协议, 可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

 三.安装配置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

[root@server04 ~]# service nginx stop

查看此时master上的IP信息

技术图片

backup主机(192.168.211.112)上ip信息

技术图片

可以看到此时虚拟IP已经切换到backuo主机上

 

keepalived实现高可用

标签:out   健康   网卡名称   mysq   均衡   col   自定义   stop   直接   

原文地址:https://www.cnblogs.com/golinux/p/10920484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!