ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

高可用架构之keeplived

2021-05-12 18:02:35  阅读:191  来源: 互联网

标签:架构 可用 keepalived vrrp virtual VRRP auth 节点 keeplived


工作原理

keepalived高可用之间是通过VRRP通信的。
VRRP中文名字虚拟路由冗余协议,VRRP的出现是为了解决静态的单点故障。
VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的 
VRRP用IP多播的方式(默认多播地址224.0.0.18)实现高可用对之间的通信

工作时主节点发包,备节点接包,当备节点接受不到主节点发的数据包的时候,就启动接管程序主节点的资源,备节点可以有多个,通过优先级竞选,但一般Keepalived就系统运维工作中是一对的
VRRP使用了加密协议加密数据,但Keepalived 官方目前还是推荐用明文的方式配置认证类型和密码

介绍完了VRRP,接下来在介绍一下Keepalived服务的工作原理
Keepalived高可用对之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此工作时主会优先获取所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供访问。
在Keepalived服务对之间,只有作为住的服务会一直发s送VRRP广播包,告诉备它还活着,此时备不会抢占住,当主不可用时,即备监听不要发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒


组件介绍

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护
及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式,vrrp模块是来实现VRRP协议的


主配置文件

[root@lb--01 keepalived]# vim keepalived.conf
  
! Configuration File for keepalived
 
global_defs {
   router_id lb01
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 666
    priority 199
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
}


备配置文件

[root@lb--02 keepalived]# vim keepalived.conf
  
! Configuration File for keepalived
 
global_defs {
   router_id lb02
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 666
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
}


这种配置检测不太准确,因为只是根据服务器宕机,来判定主备切换的话是不严谨的。(仅限小白使用)


公司级别keepalived  + haproxy  

主要实现方式是:  keepalived 中实时的在执行一个检查脚本,脚本主要内容是通过socket文件给haproxy监听的url 端口,发送1024数据包,判断当收到数据的值,如果这个收到的值为为0 的话就会返回2 ,反之就返回0,  然后keepalived中设置了 weight 的值,并且weight配置的值大于0,则优先级相应的增加。
 
keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少

cat /etc/keepalived/keepalived.conf 
global_defs {
   notification_email {
     keeplived@system.com
   }
   notification_email_from lcoalhost@system.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id test-10e150e71e180
}
 
vrrp_script chk_http_port {
    script "/etc/keepalived/check_haproxy.sh"
    interval 2
    weight 2
}
 
vrrp_instance VI_1 {
    interface eth0
    virtual_router_id 75
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 2376
    }
    virtual_ipaddress {
        10.150.71.191/22 dev eth0
    }
    virtual_routes {
        default via 192.168.247.1 dev eth0
    }
    unicast_src_ip 10.150.71.180
    unicast_peer {
         10.150.71.181
                 }
    track_script {
         chk_http_port
     }
    notify_master "/etc/keepalived/notify.sh 0"
    notify_backup "/etc/keepalived/notify.sh 1"
    notify_fault "/etc/keepalived/notify.sh 2"
}





标签:架构,可用,keepalived,vrrp,virtual,VRRP,auth,节点,keeplived
来源: https://blog.51cto.com/u_15196512/2771665

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有