热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:keepalived工作原理与配置文件讲解

本文由编程笔记#小编为大家整理,主要介绍了keepalived 工作原理与配置文件讲解相关的知识,希望对你有一定的参考价值。 1、简介Keepalived:高可用或热备软件,用来防止单点故障(单点故障
本文由编程笔记#小编为大家整理,主要介绍了keepalived 工作原理与配置文件讲解相关的知识,希望对你有一定的参考价值。


1、简介

Keepalived:高可用或热备软件,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构不可用)的发生,keepalived就是VRRP协议的实现。

2、原理

keepalived采用是模块化设计,不同模块实现不同的功能,keepalived主要有三个模块,分别是core、check和vrrp。 core:是keepalived的核心,负责主进程的

启动和维护,全局配置文件的加载解析等 check: 负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析;

可基于脚本检查对IPVS后端服务器健康状况进行检查。 vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的,以上是主要组件;下面是其他库: libipfwc:iptables/ipchains库,配置LVS会用到 libipvs*:配置LVS会用到,注意,keepalived和LVS完全是两码事,各司其职相互配合。

        3、架构图

         技术分享图片

Keepalived启动后会有三个进程:

父进程:内存管理,子进程管理等等

子进程:vrrpd子进程

子进程:healthchecker子进程

由上图可知,两个子进程都被系统WatchDog看管,两个子进程各自实现自己的事,healthchecker子进程实现检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用,就会通知本机上的兄弟VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态

 

4、工作原理

      keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是第3层、第4层和第5层交换,分别工作在IP/TCP协议栈的IP层、TCP层、应用层,原理分别如下:Layer3: Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既Ping),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除(这种情况的典型例子是某台服务器被非法关机)。Layer3方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。 Layer4: Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5: Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器相应服务是否运行正常,如果没有正常运行,则Keepalived将把服务器从服务器群中剔除。

   5、vrrp协议介绍

VRRP协议简介

在现实的网络环境中,两台需要通信的主机大多数情况下并没有直接的物理连接。对于这样的情况,它们之间路由怎样选择?主机如何选定到达目的主机的下一跳路由,这个问题通常的解决方法有二种:

在主机上使用动态路由协议(RIP、OSPF等)

 在主机上配置静态路由

很明显,在主机上配置动态路由是非常不切实际的,因为管理、维护成本以及是否支持等诸多问题。配置静态路由就变得十分流行,但路由器(或者说默认网关default gateway)却经常成为单点。

VRRP的目的就是为了解决静态路由单点故障问题。

VRRP通过一竞选(election)协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

工作机制

在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER的负责路由工作,其它的都是BACKUP,MASTER并非一成不变,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MASTER。MASTER拥有一些特权,比如 拥有虚拟路由器的IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。

VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(multicast)包形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址。所以,在一个虚拟路由 器中,不管谁是MASTER,对外都是相同的MAC和IP(称之为VIP)。客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对他们来说,这种主从的切换是透明的。

在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP广告包(VRRPAdvertisement message),BACKUP不会抢占MASTER,除非它的优先级(priority)更高。当MASTER不可用时(BACKUP收不到广告包), 多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。

 

6、配置文件keepalived.conf 的介绍


#全局定义模块
! Configuration File for keepalived
global_defs {
notification_email {
[email&#160;protected]
[email&#160;protected]
[email&#160;protected]   #邮件报警,可以不设置。
}
notification_email_from [email&#160;protected]
smtp_server
192.168.200.1
smtp_connect_timeout
30
router_id LVS_DEVEL   #此处注意router_id为负载均衡标识,在局域网内应该是唯一的,建议使用机器名。
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval
0
vrrp_gna_interval
0
}
#VRRP实例定义块
vrrp_instance VI_1 {
state MASTER   #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
interface eth0
lvs_sync_daemon_inteface eth0 #这个默认没有,相当于心跳线接口,DR模式用的和上面的接口一样,也可以用机器上的其他网卡eth1,用来防止脑裂。
virtual_router_id
51    #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的。
priority
100        #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。
advert_int
1        #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
authentication {
auth_type PASS    #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
auth_pass
1111    据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
}
virtual_ipaddress {   #虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,同时这个ip 必须与我们在lvs 客户端设定的vip 相一致!
192.168.200.100
192.168.200.101
192.168.200.102
}
}
#虚拟服务器定义块
virtual_server
192.168.200.100 443 { #虚拟IP,来源与上面的虚拟IP地址,后面加空格加端口号
delay_loop
6              #健康检查间隔,单位为秒
lb_algo rr              #负载均衡调度算法,一般用wrr、rr、wlc
lb_kind NAT             #负载均衡转发规则。一般包括DR,NAT,TUN 3种。
persistence_timeout
50       #会话保持时间,会话保持,就是把用户请求转发给同一个服务器,不然刚在1上提交完帐号密码,就跳转到另一台服务器2上了。
protocol TCP             #转发协议,有TCP和UDP两种,一般用TCP,没用过UDP。
real_server
192.168.201.100 80 { #真实服务器,包括IP和端口号
weight
1              #权重,数值越大,权重越高
TCP_CHECK {            #通过tcpcheck判断RealServer的健康状态
connect_timeout
3      #连接超时时间
nb_get_retry
3       #重连次数
delay_before_retry
3    #重连时间间隔
connect_port
80      #检测端口
}
}
}

 

 


推荐阅读
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
  • ! Configuration File for keepalivedglobal_defs {   notification_email {     ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
  • 高可用架构_MySQL高可用架构设计
    文章来自于https:www.jianshu.compd3107bda2963PHP进阶学习交流QQ群:983229225Mysql复制功能介绍Mysql的复制功能提 ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
author-avatar
龚magnett_672
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有