当前位置: 首页 > news >正文

keepalived学习记录:对其vip漂移过程采用gdb跟踪

对其vip漂移过程采用gdb跟踪

      • keepalived工具
      • 主要功能
      • 产生vip漂移过程两种情况
      • gdb调试常用命令
      • gdb调试时打到的函数栈(供学习参考)

函数栈的图是本人理解下画的,不对请多指正
keepalived主要有三个进程,父进程是core进程,启动后产生两个子进程,分别是vrrp和check进程,三个均为守护进程

keepalived工具

在Keepalived与Haproxy协调工作的场景中,常见场景如下图。
主要分为三个部分:客户端、调度服务器、服务器集群。
调度服务中通过Keepalived负责将集群对用户显示为一个整体,提供VIP,并且提供调度服务器的故障转移,确保调度服务的高可用。HaProxy工具负责进行负载均衡功能,与服务器集群相连接。
在这里插入图片描述
keepalived是一个具有配置LVS负载均衡管理功能,又具有通过vrrp协议实现高可用功能的工具。它能够保证单个节点宕机时,整个网络可以不间断的运行。

主要功能

Keepalived提供了2个主要功能:

  • LVS系统的健康检查
  • 实现VRRPv2堆栈来处理负载均衡器的故障转移

重点关注keepalived的failover部分。
正常运行过程中,由主节点不断的向备节点发送vrrp通告(具备心跳消息)。当主 Master 节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master 节点的心跳了,于是调用自身的接管程序,接管主 Master 节点的 IP 资源及服务。而当主 Master 节点恢复时,备 Backup 节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。(与配置有关)
在搭建Keepalived时,主机一(Master)会向局域网发送一个ARP包,包中有IP地址与MAC的映射关系为VIP:MAC1,这时访问VIP,就会根据对应的MAC1访问到主机一,当主机二(backup)检测到主机一故障,将自己升为主控机,则主机二会向局域网中发送ARP包,包含IP与MAC的映射关系为VIP:MAC2,之后访问VIP,就会根据对应的MAC2访问主机二。
但是为了减少接管的影响,某些网络环境需要使用VMAC,可以通过Keepalived配置文件中调用use_mac关键字来实现VMAC支持。在内部,Keepalived代码引入虚拟接口,每个接口专用于特定的virtual_router。Keepalived使用linux内核macvlan驱动程序定义这些接口。因此,必须使用支持macvlan编译的内核。

产生vip漂移过程两种情况

整个过程中,对于客户端来说,不知道对于两台调度服务器发生了切换,客户端保持连接同一个vip,完成自身请求。

在这里面涉及两次切换,

①对于备节点收不到主节点的心跳消息时,触发定时器超时(vrrp_dispatcher_read_timeout),判断当前节点状态为备节点,执行升主操作(vrrp_gotomaster)。

在这里插入图片描述

②此时备节点已经变为主节点,当设置为抢占模式时,原来的主节点网络恢复,要与备节点进行连接,主会发送vrrp通告(vrrp_send_adv 包括优先级信息)。通过netlink接口中查到的vrrp包,通过路由过滤和规则过滤,当由备节点升为的主节点(128.20)此时知道自身优先级低,会执行设为备节点(set_backup->leave_master)。
在这里插入图片描述
Keepalived使用的vrrp虚拟路由冗余协议方式;简单的说就是,Keepalived的目的是模拟路由器的高可用,所以一般Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。

总结一下,Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。

在这里插入图片描述

keepalived的功能全部可配置,可选择是否开启某项服务。

gdb调试常用命令

service keepalived stop
ip addr  //查看vip在哪台服务器上
systemctl start keepalived
systemctl status keepalived
systemctl stop keepalived
#在sbin目录下执行以下命令
#注意目录中有可执行的 keepalived文件
gdb keepalived
set args -f /etc/keepalived/keepalived.conf
b <函数名>
r 启动

gdb调试时打到的函数栈(供学习参考)

发送arp包
arp包
netlink接口对包进行过滤
在这里插入图片描述
备升主函数
在这里插入图片描述
vrrp通告 包含优先级发送
在这里插入图片描述
禅让给优先级更高的服务器节点
在这里插入图片描述

http://www.lryc.cn/news/27829.html

相关文章:

  • 51单片机串口通讯原理及程序源码-----day8
  • mongodb入门到使用(下)
  • 云HIS系统源码 医院his源码 云his源码
  • 朴素贝叶斯法学习笔记
  • vscode与C++安装与使用【不好用来骂我】
  • C++11使用多线程(线程池)计算相似度实现性能优化
  • 【测绘程序设计】——平面坐标转换
  • 五子棋的设计与实现
  • 大数据项目软硬件选择
  • redis数据结构的适用场景分析
  • 同步、异步、全双工、半双工的区别
  • ClickHouse 与 Amazon S3 结合?一起来探索其中奥秘
  • 【Spark分布式内存计算框架——Structured Streaming】1. Structured Streaming 概述
  • 【Windows】【Linux】---- Java证书导入
  • 【Linux学习】菜鸟入门——gcc与g++简要使用
  • Cadence Allegro 导出Bill of Material Report详解
  • localStorage线上问题的思考
  • 什么是DNS域名解析
  • Cadence Allegro 导出Assigned Functions Report详解
  • Python中Opencv和PIL.Image读取图片的差异对比
  • win10 WSL2 使用Ubuntu配置与安装教程
  • LeetCode每日一题(28. Find the Index of the First Occurrence in a String)
  • Android 圆弧形 SeekBar
  • java 字典
  • 【企业服务器LNMP环境搭建】mysql安装
  • vue自定义指令以及angular自定义指令(以禁止输入空格为例)
  • 异常 复习
  • K8s:开源安全平台 kubescape 实现 Pod 的安全合规检查/镜像漏洞扫描
  • C#中,FTP同步或异步读取大量文件
  • STM32单片机的FLASH和RAM