keepalived高可用原理

简介

keepalived是实现高可用(high available)的软件,那什么是高可用?怎么个高可用呢?

高可用就是尽可能高的使服务器正常提供服务,特别是在服务器受到物理伤害或者发生意外时候,一般情况下是利用冗余策略,来使用备用服务器顶替损坏的服务器来提供正常服务。

高可用对于不同的应用有不同的解决办法,keepalived专门解决的是没有涉及到存储的数据的服务。比如前端代理服务器的高可用。

高可用指标

在我们学校,我经常听到一个爱吹牛逼的老师,整天拿着4个9,来证明自己的水平有多高,这里就不说是那个老师了,毕竟他是我们的老师。那么四个9,五个9,指的是什么呢?其实就是自己的服务器年正常运行与年总天数365天的比例。
99% 一年宕机时间不超过4天
99.9% 一年宕机时间不超过10小时
99.99% 一年宕机时间不超过1小时
99.999% 一年宕机时间不超过6分钟

keepalived实现思路

整体思路:

是两台主机根据故障情况设置别名ip,如果两台主机都没有故障,则根据优先级来设定别名ip。

具体思路:

这里考虑两台主机之间的地址流动。两台主机都安装keepalived,并设定主(MASTER),备(BACKUP),和优先级。在启动服务时候,让两台keepalived主机进行组播通信,告诉彼此自己的优先级,优先级高的就设置网卡别名ip。当MASTER主机故障时候,BACKUP主机不能接收到来自MASTER主机的比自己优先级高的报文,则在自己的网卡上设置别名ip。如果MASTER主机恢复,则将自己的优先级通过组播发送出去,BACKUP主机接收到报文发现比自己的优先级高,则删除掉别名ip,同时MASTER发现并没有比自己优先级高的主机发来的报文,则在自己的网卡上设置别名ip。这样就达到了ip流动的技术。如果MASTER主机因为业务繁忙,没有将组播发送出去告知BACKUP主机,则BACKUP主机在自己的网卡上设置别名ip,这时候MASTER主机上也有相同的别名ip,过一会BACKUP在接收到比自己优先级高的报文后,又将设置的别名ip删除,这样就出现了ip抖动的情况。如果有多台主机思路一样,只是BACKUP主机增多了。

双虚拟ip:

上面这个思路会使两台机器其中的一台机器闲置起来,并没有达到资源的很好利用,我们可以考虑双虚拟ip,就是双主模式,设置两个虚拟ip。两个ip分别对应于两个MASTER.其中一台主机发生故障时候,会出现两个ip被设定到同一主机上,这时候,并没有影响正常业务。

简单实验

这里做一个简单配置,来理解一下这个原理,使用两台主机,一个做为主的,一个作为备的。

主keepalived
! Configuration File for keepalived

global_defs {
    notification_email {通告邮箱
        root@localhost
    }
    notification_email_from keepalived@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id node1
    vrrp_mcast_group4 224.0.100.19##默认的组播地址是224.0.0.18
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 14
    priority 100 ##这个优先级要高于备的。值从1-255之间
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 571f97b2
    }
    virtual_ipaddress {
        10.1.0.91/16 dev eno16777736
    }
}           
备keepalived
! Configuration File for keepalived

global_defs {
    notification_email {通告邮箱
        root@localhost
    }
    notification_email_from keepalived@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id node1
    vrrp_mcast_group4 224.0.100.19##默认的组播地址是224.0.0.18
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 14
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 571f97b2
    }
    virtual_ipaddress {
        10.1.0.91/16 dev eno16777736
    }
}           
测试

先启动备用服务器,看是否能将10.1.0.91/16加入到eno16777736网卡上。再启用主服务器,看是否能将备用服务器上的虚拟ip地址10.1.0.91/16“抢过来”。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值