keepalived总结

一、概述

  • 定义:Keepalived是一个用于实现服务器高可用性和负载均衡的软件,通过VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)实现故障转移。
  • 主要功能
    1. 高可用系统网络服务:能够在两台或多台主机之间实现故障切换转移,确保服务的连续性。
    2. 健康状态检测:对后端服务器进行健康状态检测,确保只有健康的服务器才会接收用户请求。
    3. 管理LVS负载均衡软件:可以读取配置文件,并通过一个更为底层的接口来管理IPVS并生成IPVS规则。

二、工作原理

  • VRRP协议:Keepalived的高可用功能是通过VRRP协议实现的。VRRP协议通过竞选机制将路由任务交给某一台VRRP路由器,当主路由器故障时,备份路由器会接管路由任务,确保网络服务的连续性。
  • 心跳机制:主节点(Master)会定期向备份节点(Backup)发送心跳消息,以告知其自己还在运行。如果备份节点在一段时间内未收到心跳消息,则认为主节点已经故障,并启动故障转移过程。
  • 健康检查:Keepalived通过ICMP、TCP端口状态、HTTP GET等方式对后端服务器进行健康检查,确保服务的可用性。

三、应用场景

  • LVS+Keepalived:在LVS负载均衡集群中,Keepalived可以实现调度器(Director)的高可用,并解决单点故障问题。
  • Nginx、Haproxy等高可用:Keepalived不仅限于LVS,还可以作为Nginx、Haproxy等其他系统网络服务的高可用解决方案。

四、特点

  • 自动完成:Keepalived的所有操作都是自动完成的,不需要人工干涉。
  • 支持多层检测:Keepalived支持网络层(Layer 3)、传输层(Layer 4)和应用层(Layer 7)的健康状态检测。
  • 配置灵活:用户可以通过配置文件灵活设置Keepalived的各项参数,以满足不同的需求。

五、组件与框架

  • 控制组件:负责配置文件的解析和编译。
  • 内存管理:提供访问内存的通用方法。
  • I/O复用:负责安排Keepalived内部的任务请求。
  • 核心组件:包含一系列功能模块,如WatchDog(监控checkers和VRRP进程的状况)、Checkers(真实服务器的健康检查)、VRRP Stack(负载均衡器之间的切换)等。

六、使用注意事项

  • 配置正确性:确保Keepalived的配置文件正确无误,以避免不必要的故障。
  • 监控与日志:定期监控Keepalived的运行状态,并查看日志文件以诊断问题。
  • 备份与恢复:定期备份Keepalived的配置文件和重要数据,以便在出现故障时能够快速恢复。

实验:

环境准备:

        实验工具:虚拟机,四台rhel7

使用脚本如上图修改对应的IP:

realserver1:

vmseet.sh eth0 172.25.254.110 realserver1.timinglee.org

realserver2:

vmset.sh eth0 172.25.254.120 realserver2.timinglee.org

KA1:

vmset.sh 172.25.254.10 ka1.timinglee.org

KA2:

vmset.sh eth0 172.25.254.20 ka2.timinglee.org

查看SELinux是否关闭(Disabled):

getenforce

查看防火墙是否关闭:

systemctl status firewalld

server:

下载httpd:

yum install httpd -y

将IP写入HTML文档

#realserver1:
echo 172.25.254.110 > /var/www/index.html
#realserver2:
echo 172.25.254.120 > /var/www/index.html

启动HTTPD服务

systemctl enable --now httpd

KA:

访问server:

curl 172.25.254.110
curl 172.25.254.120

开始实验:

配置说明:

配置文件: /etc/keepalived/keepalived.conf
配置文件组成
GLOBAL CONFIGURATION
Global definitions : 定义邮件配置, route_id vrrp 配置,多播地址等
VRRP CONFIGURATION
VRRP instance(s)
定义每个 vrrp 虚拟路由器
LVS CONFIGURATION
Virtual server group(s)
Virtual server(s)
LVS 集群的 VS RS
KA1安装keepalived:
yum install keepalived -y

帮助:

man  keepalived.conf

打开文档:

vim /etc/keepalived/keepalived.conf 

全局设定:

配置虚拟路由器(设置VIP):

开启keepalived:

systemctl enable --now keepalived.service 

查看VIP设置是否成功:

ifconfig

若启动失败:

清空日志:

> /var/log/messages

重启:

systemctl restart keepalived.service

查看日志:

cat /var/log/messages

发现问题,并修改,再次重启。

KA2:

进行与KA1相同配置

复制KA1的配置文件到KA2:

scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf 

输入KA2的密码,等待传输。

修改文档部分内容:

vim /etc/keepalived/keepalived.conf 

使用抓包命令对KA进行测试:

tcpdump -i eth0 -nn host 224.0.0.18

KA2启动:

systemctl enable --now keepalived.service 

查看IP:

ifconfig

【KA2的优先级=80 < KA1的优先级=100 ,所以KA2没有VIP】

测试KA2:

realserver1远程连接KA1:

ssh -l 172.25.54.10

关闭KA1,模拟故障:

systemctl stop keepalived.service
tcpdump -i eth0 -nn host 224.0.0.18

【KA1故障,断开连接。KA2开始连接】

查看KA2的IP:

ifconfig

【由于KA1故障,VIP从KA1转移到KA2】

查看哪些网络流量被允许或拒绝通过系统:

iptables -nL

【DROP  math-set keepalived dst:意思是172.25.254.100 过来一个丢弃一个,无法ping通】

修改现状方法:

KA:

进入文档:

vim /etc/keepalived/keepalived.conf 

添加内容:

 vrrp_iptables

重启:

systemctl restart keepalived.service 

ping 172.25.254.100

查看哪些网络流量被允许或拒绝通过系统:

【DROP改为ACCEPT,同时也显示出了tcp】

注意:

【这两要不都开,要不注释掉都关】

【不管如何选择,最后记住重启KA的keepalived】

【全部注释后,依旧可以ping通,但是查看iptables,第一组最后一行消失】

keepalived日志分离(独立日志):

KA1:

编写日志级别:

 vim /etc/sysconfig/keepalived 

【日志范围0-7】

重启keepalived:

systemctl restart keepalived.service 

打开采集日志设置文档:

vim /etc/rsyslog.conf

指定采集方法:

local6.*                                                /var/log/keepalived.log

重启rsyslog:

systemctl restart rsyslog.service 

重启keepalived:

systemctl restart keepalived.service

查看生成日志:

cat /var/log/keepalived.log

【全部都是keepalived】

独立子配置文件:

进入keepalived配置文件:

vim /etc/keepalived/keepalived.conf 

注释掉虚拟路由:

添加文件:

include "/etc/keepalived/conf.d/*.conf" 

添加后无法重启keepalived:

查看原因;

journalctl -xe

【告诉我们,找不到添加的文件】

没有就创建一个:

 mkdir -p /etc/keepalived/conf.d

创建并进入子配置文件:

vim /etc/keepalived/conf.d/172.25.254.100.conf

添加VIP内容:

vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}

重启keepalived:

systemctl restart keepalived.service 

查看VIP:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404728.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode:1512. 好数对的数目(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1,1,3] 输出&#xff1a;4 解释&#xff1a;有 4 组好…

easyexcel--导入导出实现自定义格式转换

自定义格式 我们在数据库设计的时候经常会有枚举类型&#xff0c;如0表示普通用户&#xff0c;1表示VIP用户等&#xff0c;这在excel导入的时候&#xff0c;我们会填普通用户而不是0&#xff0c;这样就需要用到自定义格式把普通用户转换成0&#xff0c;我写了一个通用的抽象类…

【机器学习】探索机器学习在旅游业的革新之旅

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习在旅游需求分析中的应用&#x1f31e;用户行为数据分析&#x1f319;旅客偏好预测模型⭐…

垂直行业数字化表现抢眼 亚信科技全年利润展望乐观

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年8月14日&#xff0c;亚信科技控股有限公司&#xff08;股票代码&#xff1a;01675.HK&#xff09;公布了公司截至2024年6月30日的中期业绩。 财报数据显示&#xff0c;2024年上半年&#xff0c;亚信科技的营业收入为人民币…

传输大咖30|动漫游戏行业都在用的企业大文件传输系统

随着动漫游戏对画质的要求越来越高&#xff0c;动画、游戏数据越来越复杂&#xff0c;企业需要传输的文件也越来越庞大&#xff0c;这给动漫游戏行业的大文件传输带来了许多挑战。例如&#xff0c;文件的大小限制、传输速度、文件传输的安全性和稳定性、平台的兼容性等因素将直…

【SpringBoot】SpringBoot的运行原理

SpringBoot项目中都有一个如下的启动类。 SpringBootApplication public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);} }其中SpringBootApplication是这个启动类的核心注解&#xff0c;在它下面又有三个子…

uniapp 页面跳转传参:父页面监听子页面传过来的数据

父页面 监听events事件 uni.navigateTo({url: "/components/watermark-camera",events: { // 重点重点重点重点重点重点重点重点getImages(data) { // 接收子页面抛出的 getImages 事件console.log("水印相机的照片&#xff1a;", data)}}})子页面 const …

【Harmony OS 4.0】页面路由跳转代码示例

ets/pages/Index.ets import router from ohos.router;Entry Component struct Index {State title: string Index Page;State message: string onPageShow(): void { // 页面每次显示时触发。使用aboutToAppear页面没反应。let record router.getParams() as Record<st…

EasyExcel基本使用

EasyExcel介绍 https://github.com/alibaba/easyexcel示例 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xs…

Webrtc之SDP协议

SDP简介 SDP 最常用于 RTC 实时通话的协商过程&#xff0c;在 WebRTC 中&#xff0c;通信双方在连接阶段使用 SDP 来协商后续传输过程中使用的音视频编解码器(codec)、主机候选地址、网络传输协议等。 在实际的应用过程中&#xff0c;通信双方可以使用 HTTP、WebSocket、Data…

Linux---进程(6)---进程控制

目录 进程创建 写时拷贝 代码共享原理 写时拷贝的设计 写时拷贝原理 进程终止 信号编号 进程退出码 exit函数/_exit函数解析 进程等待 等待接口 status 父进程等待方式 阻塞等待 非阻塞等待 进程替换 进程替换接口 Shell运行规则 环境变量与进程替换 su-/su…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG&#xff1a; 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗&#xff1f;Kimi学了这些资料以后&#xff0c;根据这里面的信息综…

C#发送邮件功能实现全面指南?有哪些方法?

C#发送邮件性能优化技巧&#xff1f;C#发信时如何设置邮件格式&#xff1f; 在现代应用程序开发中&#xff0c;发送电子邮件是一个常见的需求。无论是发送通知、警报&#xff0c;还是定期报告&#xff0c;邮件功能都是至关重要的。AokSend将详细探讨如何在C#中实现发送邮件的功…

SpringBoot教程(二十三) | SpringBoot实现分布式定时任务之xxl-job

SpringBoot教程&#xff08;二十三&#xff09; | SpringBoot实现分布式定时任务之xxl-job 简介一、前置条件&#xff1a;需要搭建调度中心1、先下载调度中心源码2、修改配置文件3、启动项目4、进行访问5、打包部署&#xff08;上正式&#xff09; 二、SpringBoot集成Xxl-Job1.…

stm32的UART重定向printf()

1配置好uart 2打开usart.c文件 3在此文件前面添加头文件 4在末尾添加重定向代码 添加的代码 /* USER CODE BEGIN 1 *///加入以下代码,支持printf函数,而不需要选择use MicroLIB //#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #if 1 //#pragma import(__use_n…

day01- Web开发介绍-HTML-CS

Web开发介绍 1 什么是web开发 Web&#xff1a;全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站。 所以Web开发说白了&#xff0c;就是开发网站的&#xff0c;例如下图所示的网站&#xff1a;淘宝&#xff0c;京东等等 那么我们…

JavaEE过滤器的创建与使用过滤器的使用场景

过滤器 Filter也称之为过滤器&#xff0c;过滤器是javaEE规范肿定义的一种技术,可以让请求到达目标servlet之前,先进入到过滤器中,在过滤器中统一进行一些拦截处理,当处理完成后,可以继续向后执行,到达目标servlet,如果配置了多个过滤器,也可以进入下一个过滤器 创建过滤器 创…

asyncua模块实现OPC UA通讯

asyncua是OPCUA的python实现&#xff0c;使用起来非常方便&#xff0c;其github地址是https://github.com/FreeOpcUa/opcua-asyncio UaExpert是OPC UA Client的GUI工具&#xff0c;当编写好server代码后并运行&#xff0c;我们可以使用UaExpert去和server进行通信。UaExpert使…

小程序使用微信支付

接入小程序需要后端进行注册&#xff0c;前端只需要调用API即可。 大概流程如下&#xff1a; 本例使用一个购买商品的例子&#xff0c;前端点击微信支付&#xff0c;后端生成一个商品订单&#xff0c;然后向微信支付系统发起请求&#xff0c;生成一个微信的预支付订单&#xff…

windows上传的文本在linux执行不了,格式转换

在windows编辑的文件脚本上传到linux里面执行不了 1.现象描述 比如在windows编辑简单的文本 2.上传到linux后执行无结果 无响应 3.编码问题 比普通文件多了with CRLF line terminators结尾格式。 cat -v 可以让隐藏的转义字符也打印中显示 4.原因windows和linux的换行符不…