关于OpenResty+doujiang24/lua-resty-kafka写入kafka故障转移模拟测试

news/2024/5/4 7:34:48/文章来源:https://blog.csdn.net/u013014691/article/details/129710869

关于OpenResty+doujiang24/lua-resty-kafka写入kafka故障转移模拟测试

PS:文章中用到的ip和代码已脱敏

1. 环境

请查看这篇文章https://editor.csdn.net/md/?articleId=122735525

2. 配置

kafka地址:

kafka_broker_list={{host="193.168.1.2",port=9092},{host="193.168.1.3",port=9092},{host="193.168.1.1",port=9092}
}

发送脚本:

local kafka_broker_list={{host="193.168.1.2",port=9092},{host="193.168.1.3",port=9092},{host="193.168.1.1",port=9092}
}
local kafka_topic_app = "topic_app"
local p = producer:new(kafka_broker_list, {producer_type = "sync",refresh_interval=10000})
local offset, err = p:send(kafka_topic_app, nil, body)

将我的服务打包成docker image,使用的基础镜像是debian10
测试是在某个服务器上安装的docker中进行的

3. 过程

3.1 服务器上启动容器脚本

docker run -d -it -p 0.0.0.0:9000:8080 --name nginx-kafka --privileged=true nginx-kafka:0.0.1 /bin/bash

说明:

  • -p 0.0.0.0:9000:8080 开放ECS(10.199.138.33)的9000端口访问,流量会转发到容器的8080端口
  • --privileged=true 开放特权,否则root账户不可操作iptables

3.2 启动容器后安装iptables

apt-get install iptables -y

3.3 测试与kafka连通性

telnet 192.168.1.1 9092

在这里插入图片描述

telnet 192.168.1.2 9092

在这里插入图片描述

telnet 192.168.1.3 9092

在这里插入图片描述
可以看到容器到3个ip地址和端口都是通的

3.4 postman调用测试

在这里插入图片描述
可以看到报送请求可以被正确发送到kafka

3.5 封禁容器对 192.168.1.1 的访问

iptables -A OUTPUT -d 192.168.1.1 -j DROP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2ZS4CYe-1679469875060)(C:\Users\E104239\AppData\Roaming\Typora\typora-user-images\image-20230322142817103.png)]

一直在尝试连接

此时nginx的error.log无任何输出。

使用postman调用报送接口:
在这里插入图片描述
可以看到发送kafka消息超时了。

3.6 封禁容器对 192.168.1.1,192.168.1.2 的访问

iptables -A OUTPUT -d 192.168.1.2 -j DROP

封禁后测试连通性:
在这里插入图片描述

发现已经连接不上了。

此时使用postman测试报送,结果和章节3.5一致。

3.7 封禁容器对 192.168.1.1,192.168.1.2,192.168.1.3 的访问

iptables -A OUTPUT -d 192.168.1.3 -j DROP

封禁后测试连通性:
在这里插入图片描述
发现已经连接不上了。

日志中出现了连接192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092的报错,也有fetch_metadata的报错

2023/03/22 14:57:56 [error] 51#0: *1450 lua tcp socket connect timed out, when connecting to 192.168.1.1:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:57:56 [error] 51#0: *1450 [lua] client.lua:151: _fetch_metadata(): all brokers failed in fetch topic metadata, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:57:56 [error] 51#0: *1452 lua tcp socket connect timed out, when connecting to 192.168.1.1:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:57:56 [error] 51#0: *1452 [lua] client.lua:151: _fetch_metadata(): all brokers failed in fetch topic metadata, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:57:58 [error] 51#0: *1466 lua tcp socket connect timed out, when connecting to 192.168.1.2:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:58:00 [error] 51#0: *1469 lua tcp socket connect timed out, when connecting to 192.168.1.2:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:58:01 [error] 51#0: *1466 lua tcp socket connect timed out, when connecting to 192.168.1.3:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:58:03 [error] 51#0: *1469 lua tcp socket connect timed out, when connecting to 192.168.1.3:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:58:04 [error] 51#0: *1466 lua tcp socket connect timed out, when connecting to 192.168.1.1:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 14:58:04 [error] 51#0: *1466 [lua] client.lua:151: _fetch_metadata(): all brokers failed in fetch topic metadata, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080

此时使用postman测试报送,结果和章节3.5一致。

3.8 删除封禁 192.168.1.1

iptables -t filter -D OUTPUT -d 192.168.1.1 -j DROP

测试连通性:

在这里插入图片描述
发现可以联通了,此时日志输出:

2023/03/22 15:02:22 [error] 51#0: *1912 lua tcp socket connect timed out, when connecting to 192.168.1.2:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 15:02:23 [error] 51#0: *1915 lua tcp socket connect timed out, when connecting to 192.168.1.2:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 15:02:23 [error] 51#0: *1917 lua tcp socket connect timed out, when connecting to 192.168.1.2:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 15:02:25 [error] 51#0: *1912 lua tcp socket connect timed out, when connecting to 192.168.1.3:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 15:02:26 [error] 51#0: *1915 lua tcp socket connect timed out, when connecting to 192.168.1.3:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080
2023/03/22 15:02:26 [error] 51#0: *1917 lua tcp socket connect timed out, when connecting to 192.168.1.3:9092, context: ngx.timer, client: 192.168.1.4, server: 0.0.0.0:8080

使用postman测试:
在这里插入图片描述

奇迹般的可以访问了。

结论

  1. 封禁192.168.1.1,开发其它两个ip访问时埋点报送无法发送至kafka,没能故障转移

  2. 解除192.168.1.1封禁时可以正确的将埋点发送到kafka,可以认为当此ip恢复访问时,kafka可以正确的恢复。

以上结论可以类推某个ip如果一直无法访问就没法将请求消息正确发送到kafka,此ip恢复时即可正确发送到kafka

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

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

相关文章

电子拣货标签10代系统简介

CK_Label_v10一、产品参数 1. 外接供电版 产品型号 CK_Label_v10 尺寸 0.8寸/位 屏幕显示 数码管显示(3位数) 数码管颜色 红色 显示内容 0-999 外观尺寸 114.5x44.5x19mm 外观颜色 蓝色 按键 4 指示灯 1 RGB 灯 灯光颜色 7种(红/绿…

GPU推理服务性能优化之路 | 得物技术

1背景 随着CV算法在业务场景中使用越来越多,给我们带来了新的挑战,需要提升Python推理服务的性能以降低生产环境成本。为此我们深入去研究Python GPU推理服务的工作原理,推理模型优化的方法。最终通过两项关键的技术: 1.Python的GPU与CPU进程…

最佳实践| 探索 Authing 企业级云原生权限治理平台

在现代企业中,数据已经成为最重要的资产之一。 有数据显示,全球大约有一半的组织在过去的一年中经历了至少一次成功的网络攻击事件,其中,39% 的攻击事件是由内部人员造成的。为了保护企业的数据和信息资产,许多政府和…

Linux应用开发之文件与IO流

与大多数操作系统一样,Linux为程序运行提供了大量的服务,包括打开文件、读文件、启动一个新程序、分配存储区以及获得当前时间等,这些服务被称为系统调用接口(system call interface)。另外,glibc库还提供了…

移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2: 输入&#xff…

使用IDEA把项目上传到gitee仓库

使用IDEA把项目上传到gitee仓库在gitee上建立一个仓库第一步(新建仓库)第二步(点击创建)第三步(复制仓库地址)创建工程第一步(选择工程所在文件夹)第二步(文件加入git&am…

qq怎么安装不了(QQ怎么都安装不上重装也不行,是哪里出了问题?)

qq怎么安装不了(QQ怎么都安装不上重装也不行,是哪里出了问题?) 一、发现问题 今天有朋友说他电脑怎么都装不上QQ,总是弹出“安装包可能被非法改动导致安装失败,请从官网下载最新安装包重新安装”,操作系统是XP&#…

[数据结构高频面试题]用两个栈实现队列详解

文章目录 一、栈实现队列的特点分析 1、1 具体分析 1、2 整体概括 二、用栈模拟队列代码的实现 2、1 手撕 栈 代码 2、1、1 stack.h 2、1、2 stack.c 2、2 用栈实现队列代码 🙋‍♂️ 作者:Ggggggtm 🙋‍♂️ 👀 专栏:…

Flink- 物理分区、Sink输出

物理分区 随机分区(shuffle) 轮询分区(Round-Robin) 重缩放分区(rescale) 广播(broadcast) 全局分区(global) 自定义分区(Custom) …

Studio One6中文语言版DAW数字音频音乐创作软件

Studio One6是一款非常实用的数字音乐创作软件,专门用于创作现代化音乐,软件具有简洁的界面和强大的功能,能够很好地辅助用户创作音乐。顾名思义就是“一个工作室”的意思,它所倡导的制作理念是直接在一个制作软件里完成音乐制作的…

Android 解包payload.bin文件,获取system.img

解析payload.bin获取.img文件 payload.bin payload.bin是Android OTA镜像打包文件,将包括system.img、boot.img和lk.img等在内的Android系统进行,打包为一个payload.bin文件。 在系统OTA过程中,系统会自动解压安装。 前期准备 需要安装py…

学习Java日志框架之——搞懂日志门面(JCL+SLF4J)

文章目录一、什么是日志门面1、门面模式(外观模式)2、日志门面二、了解JCL1、JCL组件结构2、JCL案例(1)JCL默认实现(2)导入log4j测试原有程序三、SLF4J简介四、SLF4J基本使用1、入门案例2、动态打印信息3、…

一次内存泄露排查

前因: 因为测试 长时间压测导致 接口反应越来越慢,甚至 导致服务器 崩溃 排查过程 1、top 查看是 哪个进程 占用 内存过高 2、根据 进程 id 去查找 具体是哪个 程序的问题 ps -ef| grep 41356 可以看到 具体的 容器位置 排查该进程 对象存活 状态…

23年PMP考试会使用第七版教材吗?

大家都知道了,今年的考纲是改版了的,为啥要改版呢,因为《PMBOK指南》更新到第七版了,考纲自然也要更新,据PMI的市场调查,近年来,项目管理行业新趋势在第六版和旧考纲中未收纳,为了确…

三、数据链路层

(一)纠错与检错1、奇偶校验码(再研究下,原理知道,具体过程无法重现)分为奇校验和偶校验,奇偶校验位在首部或尾部,奇偶校验满信息位奇偶校验位(1)原理&#xf…

Redis 数据结构

这里写目录标题Redis 数据结构一、String类型String数据类型的使用场景key 的设置约定二、Hash数据类型string存储对象(json)与hash存储对象的区别三、list 类型四、set 类型set数据交并差操作set 类型数据操作的注意事项六、sorted_set 类型Redis 数据结…

算法----火柴拼正方形

题目 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。 如果你能使这个正方形&a…

Junit单元测试框架

1)Junit是一个开源的JAVA语言的单元测试框架,也是JAVA方向使用最广泛的单元测试框架,使用JAVA开发者都应该学习junit框架,并且掌握单元测试的编写 2)selenium和Junit都可以被导入到maven项目里面 3)先进行创建maven项目,导入相关依…

linux 全局环境变量删除后 还有 仍然存在

linux 全局环境变量删除后 还有 仍然存在1、编辑 /etc/profile2、设置REDISCLI_AUTH后,redis-cli 进去redis后不需要再次认证2、删除全局环境后 source后 仍然存在3、unset释放全局环境变量4、总结1、编辑 /etc/profile 设置redis环境变量 在末尾加入一行 export R…

家电企业数字工厂系统解决方案

国内小型家电生产商的中小企业普遍使用传统的手工作业模式,依靠大量的人力,线下管理各种数据,如:纸质文档、excel制作等,信息化程度非常低,严重限制着企业生产效率的提升和生产规模的扩大。对传统制造企业来…