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

K8s环境下使用sidecar模式对EMQX的exhook.proto 进行流量代理

背景

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

进行拦截:
exhook

打包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 
  • 配置
    config

  • 进行发布/订阅
    log

    正常连接

总结

  • 对于在k8s的集群的来说也是支持的,因为每个pod都有一个sidecar
  • 对于sidecar 也可以动态升级,不影响主容器
  • 因每个pod都有一个sidecar,原生支持负载均衡(客户端负载均衡),挂掉一台且不会影响emqx集群
  • github
http://www.lryc.cn/news/460175.html

相关文章:

  • Dirble:一款高性能目录扫描与爬取工具
  • C#语言基础
  • 网络分析仪——提升网络性能的关键工具
  • 简单认识Maven 1
  • 鼠标右键删除使用Visual Studio 打开(v)以及恢复【超详细】
  • 如何缩短微商城系统推广周期
  • 电脑如何清理重复文件?方法很简单!
  • 【Linux】ioctl分析
  • 物联网通信会给人们的生活带来什么样的变化
  • Android 中获取当前 CPU 频率和占用率
  • pymobiledevice3使用介绍(安装、常用命令、访问iOS沙盒目录)
  • python 爬虫模拟登录
  • AOP基础、快速入门、进阶
  • 哪款宠物空净运行吸毛好、噪音小?希喂、霍尼韦尔、安德迈测评!
  • 新兴的安全职业挑战
  • 代码随想录算法训练营Day32 | 122.买卖股票的最佳时机Ⅱ、55.跳跃游戏、45.跳跃游戏Ⅱ、1005.K次取反后最大化的数组和
  • 3D Slicer 教程一
  • github pages + hugo 搭建静态博客网站
  • Python爬虫如何爬取并解析JSON数据
  • 【C++】精妙的哈希算法
  • 智慧链动青春:国家区块链中心接待北京市十一学校青少年访学探索
  • 利用C++封装鼠标轨迹算法为DLL:游戏行为检测的利器
  • Qt- QSS风格选择器常用属性选择器样式表盒子
  • 粤智助自助一体机大厂浮出水面 OBOO鸥柏已成服务终端中坚力量
  • SpringBoot-application.properties配置
  • STM32-ADC模数转换
  • lspci | grep VGA
  • 智慧厂区车辆导航解决方案;智慧工厂电子地图应用解决方案;大型工厂内部导航解决方案;智慧工厂可视化地图应用方案
  • 决策树C4.5算法详解及实现
  • prompt learning