K8s环境下使用sidecar模式对EMQX的exhook.proto 进行流量代理
背景
在使用emqx作为mqtt时需要我们需要拦截client的各种行为,如连接,发送消息,认证等。除了使用emqx自带的插件机制。我们也可以用多语言-钩子扩展来实现这个功能,但是目前emqx仅仅支持单个grpc服务端的设置,所以会有单点问题。当然也可以用外部的流量代理。本文在k8s环境下使用sidecar的模式对grpc的流量做负载均衡,以实现高可用的效果。如图所示:

进行拦截:

打包emqx-exhook-server
docker build -f Dockerfile -t emqx-exhook-server:0.0.1 .
k8s 部署emqx
apiVersion: apps/v1
kind: Deployment
metadata:name: emqx-deploymentlabels:app: emqx
spec:replicas: 1selector:matchLabels:app: emqxtemplate:metadata:labels:app: emqxspec:initContainers:- name: emqx-exhook-serverimage: emqx-exhook-server:0.0.1restartPolicy: Alwayscontainers:- name: emqximage: emqx:5.8.0ports:- name: mqttcontainerPort: 1883- name: mqttsslcontainerPort: 8883- name: mgmtcontainerPort: 8081- name: wscontainerPort: 8083- name: wsscontainerPort: 8084- name: dashboardcontainerPort: 18083restartPolicy: Always---
apiVersion: v1
kind: Service
metadata:name: emqx-service
spec:selector:app: emqxports:- name: mqttport: 1883protocol: TCPtargetPort: mqtt- name: mqttsslport: 8883protocol: TCPtargetPort: mqttssl- name: mgmtport: 8081protocol: TCPtargetPort: mgmt- name: wsport: 8083protocol: TCPtargetPort: ws- name: wssport: 8084protocol: TCPtargetPort: wss- name: dashboardport: 18083protocol: TCPtargetPort: dashboard
测试
- mac-desktop下需要开启端口转发
kubectl port-forward svc/emqx-service 18083:18083
kubectl port-forward svc/emqx-service 1883:1883
-
配置

-
进行发布/订阅

正常连接
总结
- 对于在k8s的集群的来说也是支持的,因为每个pod都有一个sidecar
- 对于sidecar 也可以动态升级,不影响主容器
- 因每个pod都有一个sidecar,原生支持负载均衡(客户端负载均衡),挂掉一台且不会影响emqx集群
- github
相关文章:
K8s环境下使用sidecar模式对EMQX的exhook.proto 进行流量代理
背景 在使用emqx作为mqtt时需要我们需要拦截client的各种行为,如连接,发送消息,认证等。除了使用emqx自带的插件机制。我们也可以用多语言-钩子扩展来实现这个功能,但是目前emqx仅仅支持单个grpc服务端的设置,所以会有…...
Dirble:一款高性能目录扫描与爬取工具
今天给大家介绍的是一款名叫Dirble工具,它是一款易于使用的高性能网站目录扫描工具。该工具针对Windows和Linux平台设计,在Dirble的帮助下,广大安全研究人员可以快速对目标站点进行目录扫描和资源爬取。 工具安装 广大研究人员可以使用下列…...
C#语言基础
GitHub - babbittry/Csharp-notes: C# 课程笔记https://github.com/babbittry/Csharp-notes?tabreadme-ov-file#net%E6%98%AF%E4%BB%80%E4%B9%88 C# 数据类型 | 菜鸟教程 (runoob.com)https://www.runoob.com/csharp/csharp-data-types.html 语法基础 一、命名空间、类、方…...
网络分析仪——提升网络性能的关键工具
目录 什么是网络分析仪? 1. 实时流量监控 2. 历史数据回溯分析 3. 网络性能关键指标监测 4. 可视化界面与报告生成 总结 在当今的数字化世界,网络的稳定性和性能直接影响企业的运营效率。网络拥堵、延迟和丢包等问题会导致用户体验的下降ÿ…...
简单认识Maven 1
1.基本概念 Maven 是一个开源的项目管理和构建工具,主要用于 Java 项目,但也支持其他基于 JVM(Java Virtual Machine)的项目,如 Scala、Groovy 等。它基于项目对象模型(Project Object Model,P…...
鼠标右键删除使用Visual Studio 打开(v)以及恢复【超详细】
鼠标右键删除使用Visual Studio 打开(v) 1. 引言2. 打开注册表3. 进入对应的注册表地址4. 右键删除 AnyCode 项5. 效果6. 备份注册表文件——恢复菜单 1. 引言 安装完 Visual Studio 鼠标右键总有 “使用Visual Studio 打开(v)”,让右键菜单…...
如何缩短微商城系统推广周期
前言 微商城系统的推广周期是企业关注的重点之一。为了缩短推广周期,企业需要采取一系列有效的策略和措施。以下是对如何缩短微商城系统推广周期的详细介绍: 一、明确目标用户群体 在推广之前,企业需要明确自己的目标用户群体是谁…...
电脑如何清理重复文件?方法很简单!
清理重复文件能够有效释放存储空间,提高系统运行效率。长期堆积的重复文件会导致硬盘空间不足,从而影响系统性能。此外,清理文件还能帮助用户更好地管理和组织文件,避免因文件混乱而浪费时间。 常见的重复文件类型 重复文件可以是…...
【Linux】ioctl分析
简介 一个字符设备驱动通常会实现常规的open、release、read和write接口,但是如果需要扩展新的功能,通常以ioctl接口的方式实现。 #mermaid-svg-uY8EyPklf5e4ZMQo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…...
物联网通信会给人们的生活带来什么样的变化
物联网(IoT)通信的崛起正以前所未有的速度改变着人们的生活方式。从智能家居、智能交通到远程医疗、工业自动化,物联网技术的应用已经渗透到我们日常生活的方方面面。以下是对物联网通信如何具体影响并改变人们生活的详细探讨。 一、智能家居…...
Android 中获取当前 CPU 频率和占用率
最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下: 目前没有标准的 API 来获取 CPU 的使用频率,只能通过读取指定 CPU 文件获取当前 CPU 频率,在某些机器或者特定版本中…...
pymobiledevice3使用介绍(安装、常用命令、访问iOS沙盒目录)
项目地址:https://github.com/doronz88/pymobiledevice3 首先先介绍一下pymobiledevice3, pymobiledevice3是用Python3 实现的,用于处理 iDevices(iPhone 等)。它可以跨平台使用,支持:windows…...
python 爬虫模拟登录
在使用 Python 编写爬虫时,模拟登录是一个非常常见的需求,尤其是当你需要爬取需要身份验证的数据时。模拟登录通常需要以下步骤: 分析登录页面:确定提交登录请求的 URL 和相关参数。发送登录请求:模拟用户发送登录表单…...
AOP基础、快速入门、进阶
一、概述 AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实就是面向特定方法编程 那什么又是面向方法编程呢,为什么又需要面向方法编程呢?来我们举个例子做一个说明: 比如…...
哪款宠物空净运行吸毛好、噪音小?希喂、霍尼韦尔、安德迈测评!
作为宠物领域目前最火热的产品,宠物空气净化器的讨论度一直很高。身为铲屎官的我在产品刚出的时候就购入了一台,结果让我非常失望! 抛开产品效果不提,它运行起来的声音实在太大了!我家猫根本不愿意靠近,每…...
新兴的安全职业挑战
我们经常与安全专业人士交谈,他们希望在努力提升职业发展的同时提高自己的价值并克服组织内部的挑战。在这些谈话中,花费大量时间讨论公司未来将面临的安全问题并不罕见。 安全领导者希望为问题制定计划并获得领导层对其计划的支持。这通常意味着实施修…...
代码随想录算法训练营Day32 | 122.买卖股票的最佳时机Ⅱ、55.跳跃游戏、45.跳跃游戏Ⅱ、1005.K次取反后最大化的数组和
目录 122.买卖股票的最佳时机Ⅱ 55.跳跃游戏 45.跳跃游戏Ⅱ 1005.K次取反后最大化的数组和 122.买卖股票的最佳时机Ⅱ 题目 122. 买卖股票的最佳时机 II - 力扣(LeetCode) 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i…...
3D Slicer 教程一
先了解一下什么是3D Slicer,这个是做什么,然后一步步了解功能,一起看看源码 一.初识 这块软件用来处理医学影像,是一款开源的软件. 里面涉及到一些 2d 常见的操作,图像处理,调窗,测量; 涉及到3d的一些常见重建,mpr,vr,cpr等, 还包括一些分割,变换等(越高级精确的一些通过插件…...
github pages + hugo 搭建静态博客网站
体验地址 1. 起因, 目的: 其实6年前,我就写过这个。 项目代码 博客地址 最近想改写一下。 github 推荐的主题是 Jekyll, 我当时用的就是这个,感觉很麻烦。尤其是文章命名。 新的主题 hugo 用起来还行。 2.过程: 过程记录&am…...
Python爬虫如何爬取并解析JSON数据
前言 Python爬虫是一种用于从互联网上获取数据的程序,而JSON(JavaScript Object Notation)是一种常用的数据交换格式。本文将介绍如何使用Python爬虫来爬取并解析JSON数据,同时还会讲解如何使用代理IP来提高爬取效率。 1. 什么是…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
