zoukankan      html  css  js  c++  java
  • keepalived的工作原理

    由于工作中有用到keepalived 服务简单记录一下keepalived 简单的原理 

    keepalived  顾名思义保持在线,一般在的高可用或者是热备中用到。来防止单点故障 。 (单点故障: 指一个节点发现故障导致整个集群或者架构收到影响不可用) 主要用于检查服务器状态, 如果有一台server 故障了,这台server 会备keepalived 自动剔除,会选举一个新的server 来代替故障server 来维持服务可用性,当故障server 被修复会被keepalived 检查到纳管到集群中。 除了修复故障server 需要人为干预其他的都keepalived 自己解决。 

    keepalived 是有三个模块: 

      1.  core : 负责主进程的启动维护,和全局配置文件的加载解析

      2. check: 负责健康检查 

      3. vrrp: 实现vrrp 协议的

    keepalived 主要是以VRRP 协议为基础实现的。 

    VRRP (虚拟路由冗余协议)

      容错的主备模式的协议,由多台提供统一服务或者功能的路由器组成一个集群,里面是有一个主的路由器,其他的为备的路由器。主路由器上有一个vip 对外提供访问的,vip 在主的路由器上时会一直发组播,当主路由器挂掉了,备路由器收不到主路由器发过来的vrrp 报文,他们会认为主故障,备的路由器们会选举出一个路由器来充当主路由器的代替工作。 (这里比较容易出现脑裂问题,主节点没有挂掉,但是没有发出vrrp 报文, 主节点认为自己是主,备节点认为主节点挂掉了,会在选举一个主节点, 这时候有两个主节点存在,这就是所谓的脑裂。)

    keepalived  两种模式

    1. 抢占模式(默认): 其中一台设置为master,一台设置为backup。当master出现异常后,backup自动切换为master。然而当master恢复正常后会再次抢占成为master,最终导致不必要的主备切换。;

    2. 非抢占模式(需要配置 nopreempt ): 在非抢占方式下,两台keepalived初始状态均配置为backup,设置不同的优先级,优先级高的设置为nopreempt来解决异常恢复后再次抢占的问题

    实例: 这只是简单的keepalived 的实现

    环境: ubunut 14.04 

    server1 : 192.168.1.3

    server2:  192.168.1.4

    两个节点都需要做

    1. 安装 keepalived 的安装包和依赖包

    apt-get install -y keepalived

    apt-get install build-essential libssl-dev

    2. 编辑keepalived 的配置文件  /etc/keepalived/keepalived.conf 

    server 1 

    root@test3:~# cat /etc/keepalived/keepalived.conf
    global_defs {
    router_id haproxy_DH
    }

    vrrp_instance VI_1 {
    interface eth0             #虚拟ip 使用的网卡
    state BACKUP              #配置为BACKUP节点,一般有三个配置可选MASTER(主机)、BACKUP(备机)

    virtual_router_id 50          #vrrp 组名,一个集群里配置vrrp组名必须同步。表示在一个vrrp 组里
    nopreempt                #配置为不抢占模式,必须配合backup 使用,在配置该模式后优先级就失去了作用,谁先启动谁就是master ,失败后必须kill 掉keepalived 进程,再次重启不会抢占资源。实际生产环境也建议使用该模式,默认不配置nopreempt 是抢占模式,抢占模式可能会出现脑裂等问题。 


    priority 99          #节点的优先级  (1-254区间)
    advert_int 1            # vrrp 组播信息发送的间隔,多个节点 必须设置相同

    virtual_ipaddress {      #设置vip (虚拟ip) 多个节点设置必须相同 

    192.168.1.100
    }
    }

    root@test4:~# cat /etc/keepalived/keepalived.conf
    global_defs {
    router_id haproxy_DH
    }

    vrrp_instance VI_1 {
    interface eth0
    state BACKUP
    virtual_router_id 50
    nopreempt
    priority 100
    advert_int 1
    virtual_ipaddress {
    192.168.1.100
    }
    }

     启动keepalived 服务

    service keepalived  restart

    可以在节点上ip a 检查是否有vip 存在。 

  • 相关阅读:
    格律詩
    React获取视频时长
    ant 入门级详解
    OpenShift证书批准及查询证书过期时间 wang
    kubeadm快速部署kubernetes集群(v1.22.3) wang
    OpenShift中SDN核心知识点总结 wang
    kubeadm快速部署kubernetes集群(v1.22.3)(二) wang
    Prometheus Operator使用ServiceMonitor自定义监控 wang
    Prometheus Operator配置k8s服务自动发现 wang
    Ceph RBD Mirroring wang
  • 原文地址:https://www.cnblogs.com/yk0625/p/14174264.html
Copyright © 2011-2022 走看看