EMQX

Info:

使用 EMQX

通过 Helm3 在 Kubernetes 上部署 EMQX 4.0 集群 | EMQ

emqx/deploy/charts/emqx at main-v4.4 · emqx/emqx (github.com)

emqx/values.yaml at main-v4.4 · emqx/emqx (github.com)

emqx/emqx-operator: A Kubernetes Operator for EMQ X Broker (github.com)

配置项 | EMQX 文档

EMQX 安装

Info:

即 EMQX 服务器端。

> helm repo add emqx https://repos.emqx.io/charts
"emqx" has been added to your repositories
> helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "emqx" chart repository
Update Complete. ⎈Happy Helming!⎈
> helm search repo emqx
NAME CHART VERSION APP VERSION DESCRIPTION
emqx/emqx 4.4.0 4.4.0 A Helm chart for EMQ X
emqx/emqx-ee 4.4.1 4.4.1 A Helm chart for EMQ X
emqx/emqx-operator 1.0.1 1.1.2 A Helm chart for EMQX Operator Controller
emqx/kuiper 0.9.0 0.9.0 A lightweight IoT edge analytic software

安装:

vi values.yaml:

replicaCount: 1
image:
repository: emqx/emqx
pullPolicy: IfNotPresent recreatePods: false podManagementPolicy: Parallel extraEnv: [] extraEnvFrom: [] extraArgs: [] extraVolumes: [] extraVolumeMounts: [] persistence:
enabled: true
size: 8Gi
storageClass: "local-path"
accessMode: ReadWriteOnce resources: {}
# limits:
# cpu: 500m
# memory: 512Mi
# requests:
# cpu: 500m
# memory: 512Mi # Containers that run before the creation of EMQ X containers. They can contain utilities or setup scripts.
initContainers: {}
# - name: mysql-probe
# image: alpine
# command: ["sh", "-c", "for i in $(seq 1 300); do nc -zvw1 mysql 3306 && exit 0 || sleep 3; done; exit 1"] ## EMQ X configuration item, see the documentation (https://hub.docker.com/r/emqx/emqx)
emqxConfig:
EMQX_NAME: "{{ .Release.Name }}"
## Cluster discovery by k8s
EMQX_CLUSTER__DISCOVERY: "k8s"
EMQX_CLUSTER__K8S__APP_NAME: "{{ .Release.Name }}"
EMQX_CLUSTER__K8S__APISERVER: "https://kubernetes.default.svc:443"
EMQX_CLUSTER__K8S__SERVICE_NAME: "{{ .Release.Name }}-headless"
EMQX_CLUSTER__K8S__NAMESPACE: "{{ .Release.Namespace }}"
EMQX_CLUSTER__K8S__ADDRESS_TYPE: "hostname"
EMQX_CLUSTER__K8S__SUFFIX: "svc.cluster.local" emqxAclConfig: >
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.
{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.
{allow, all}. emqxLoadedPlugins: >
{emqx_management, true}.
{emqx_recon, true}.
{emqx_retainer, true}.
{emqx_dashboard, true}.
{emqx_telemetry, true}.
{emqx_rule_engine, true}.
{emqx_bridge_mqtt, false}. emqxLoadedModules: >
{emqx_mod_acl_internal, true}.
{emqx_mod_presence, true}.
{emqx_mod_trace, false}.
{emqx_mod_st_statistics, false}.
{emqx_mod_delayed, false}.
{emqx_mod_rewrite, false}.
{emqx_mod_subscription, false}.
{emqx_mod_topic_metrics, false}. service:
type: LoadBalancer
mqtt: 1883
mqttssl: 8883
mgmt: 8081
ws: 8083
wss: 8084
dashboard: 18083 podSecurityContext:
enabled: true
fsGroup: 1000
fsGroupChangePolicy: Always
runAsUser: 1000
supplementalGroups:
- 1000 containerSecurityContext:
enabled: true
runAsNonRoot: true
runAsUser: 1000
helm install emqx emqx/emqx --namespace emqx --create-namespace -f ./values.yaml --wait

安装输出:

NAME: emqx
LAST DEPLOYED: Sat Feb 19 20:48:49 2022
NAMESPACE: emqx
STATUS: deployed
REVISION: 1
TEST SUITE: None

EMQX 验证

安装后查看 EMQX 集群情况:

# kubectl -n emqx get pods
NAME READY STATUS RESTARTS AGE
svclb-emqx-kbl22 6/6 Running 0 41s
emqx-0 1/1 Running 0 41s # kubectl -n emqx exec -it emqx-0 -- emqx_ctl cluster status
Cluster status: #{running_nodes =>
['emqx@emqx-0.emqx-headless.emqx.svc.cluster.local'],
stopped_nodes => []} # kubectl -n emqx get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
emqx-headless ClusterIP None <none> 1883/TCP,8883/TCP,8081/TCP,8083/TCP,8084/TCP,18083/TCP,4370/TCP 86s
emqx LoadBalancer 10.43.193.192 10.<none> .245 1883:31558/TCP,8883:31122/TCP,8081:31592/TCP,8083:30322/TCP,8084:31095/TCP,18083:32427/TCP 86s

访问控制台:

访问 URL:18083,输入默认用户名:admin,默认密码:public,登陆 EMQX dashboard。

MQTT 消息验证:

可以通过 MQTT X: Cross-platform MQTT 5.0 Desktop Client 连接并进行收发验证。

至此,EMQX(即 MQTT 服务器端) 安装完成。

EMQX 卸载

首先通过 Helm 卸载 EMQX 除存储外的所有资源:

helm uninstall emqx --namespace emqx

之后再通过 Rancher UI 或 kubectl 命令删除存储:

kubectl delete -n emqx pvc emqx-data-emqx-0

EMQX Edge

Info:

即 EMQX Edge 端版本

Edge 端资源较小,存储空间等可以适当设置低一点。如:size: 5Gi

部署 EMQX Edge 集群指定 image.repository=emqx/emqx-edge,其他设置与部署 EMQX 集群保持一致

...
image:
repository: emqx/emqx-edge
...
persistence:
...
size: 8Gi
...

至此,EMQX Edge(即 MQTT Edge 端 Server) 安装完成。

EMQX Edge 离线安装

通过操作机(可以联网或可以通过代理上网) pull EMQX 的容器镜像到对应的镜像仓库:

ctr -n k8s.io images push --plain-http --platform=linux/arm64/v8 <local-registry>:5000/emqx/emqx-edge:4.4.0

然后正常安装即可:

Tip:

前提是本地已安装镜像仓库,且本地 docker 或其他容器运行时已经配置本地镜像仓库地址为 <docker.io> 的 mirror

helm install emqx emqx/emqx --namespace emqx --create-namespace -f ./values.yaml --wait

至此,EMQX Edge(即 MQTT Edge 端 Server) 离线方式安装完成。

总结

MQTT

  1. MQTT Server 通过 Helm Chart EMQX 安装,安装于:服务器/Edge 端 K3S 的 emqx namespace;

    1. 安装模式:单节点
    2. EMQX 版本:4.4.0
    3. EMQX 实例:1 个
    4. EMQX 数据已持久化,容器数据位于:/opt/emqx/data/mnesia, 持久化后的数据位于:/data/rancher/k3s/storage
  2. EMQX UI 为:<locabalaner-ip>:18083, 账号密码默认为:adminpublic
  3. MQTT 地址为:<locabalaner-ip>:1883

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

使用 Helm 安装 MQTT 服务器-EMQX的更多相关文章

  1. MOTT介绍(2)window安装MQTT服务器和client

    MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 window安装MQTT服务器,我这里下载了一个apache-apollo-1.7.1 ...

  2. window安装MQTT服务器和client

    http://activemq.apache.org/apollo/download.html  官方下载地址   MQTT目录: MQTT简单介绍 window安装MQTT服务器和client ja ...

  3. 阿里云Ubuntu配置安装MQTT服务器

    先来说说mqtt协议: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程 ...

  4. 【嵌入式硬件Esp32】安装MQTT服务器(Windows) 并连接测试

    对于不知道MQTT的肯定会问MQTT是干什么的....... 现在我有一个项目需求, 看到这个项目第一想法肯定需要一个服务器,所有的wifi设备和手机都去连接这个服务器,然后服务器进行信息的中转,类似 ...

  5. 云端安装MQTT服务器

    如果自己下载的3.1版本的MQTT, 安装步骤参考 https://developer.emqx.io/docs/emq/v3/cn/install.html 配置用户名和密码第一种是用http ht ...

  6. 9-(基础入门篇)云端安装MQTT服务器

    https://www.cnblogs.com/yangfengwu/p/9953703.html 记得把文件拷贝到上一节配置的和云端共享的那个盘里面,好拷贝文件到云服务器 进入到bin目录 咱先以控 ...

  7. mqtt服务器apollo的搭建和测试工具paho的使用

    (1)前言 MQTT协议是IBM开发的一个即时通讯协议; 基于发布/订阅的消息协议,近些年来被广泛应用于能源.电力.....等硬件性能低下的远程设备,此外国内很多企业使用MQTT作为android手机 ...

  8. Python:Mac 下 MQTT 服务器 Mosquitto 的配置

    我在Mac电脑上搭建时遇到了一些不同于网上大部分情况的问题,特此分享给可能也有遇到相同情况又找不到解决方法的人. 我的电脑系统:macOS Mojave 10.14.3. paho-mqtt 的安装 ...

  9. (二)基于阿里云的MQTT远程控制(购买阿里云,在云端安装MQTT,测试MQTT远程通信)

    QQ名称为Friday~的网友把他自己买MQTT的过程截图发给了我,今天就说一下如何购买阿里云,安装MQTT可以参考 http://www.cnblogs.com/yangfengwu/p/77646 ...

  10. mqtt开源服务器 EMQX ,客户端MQTTX5.0,使用指南

    服务器 EMQX 官网: https://docs.emqx.io/broker/v3/cn/getstarted.html#mqtt-clients 一.安装启动 # 各平台下载https://ww ...

随机推荐

  1. PHP Phar反序列化学习

    PHP Phar反序列化学习 Phar Phar是PHP的压缩文档,是PHP中类似于JAR的一种打包文件.它可以把多个文件存放至同一个文件中,无需解压,PHP就可以进行访问并执行内部语句. 默认开启版 ...

  2. Idea运行支付宝网站支付demo踩坑解决及其测试注意事项

    一.前言 在一些商城网上中,必不可少的是支付,支付宝和微信比较常见,最近小编也是在研究这一块,看看支付宝怎么进行支付的,支付宝给我们提供了demo和沙箱测试.减少我们的申请的麻烦,公钥和秘钥也比之前方 ...

  3. 使用FreeMarker配置动态模板

    FreeMarker动态模板 目录 FreeMarker动态模板 前言 准备工作 FreeMarker 代码构建 项目结构 创建 Configuration 实例 调用 模板文件 调用结果 Tips ...

  4. 微服务系列之分布式日志 ELK

    1.ELK简介 ELK是ElasticSearch+LogStash+Kibana的缩写,是现代微服务架构流行的分布式日志解决方案,旨在大规模服务的日志集中管理查看,极大的为微服务开发人员提供了排查生 ...

  5. 什么是齐博/齐博CMS之X1?

    齐博x1:核心+模块+插件+钩子的理念把系统的灵活性及拓展性做到了极致!!!齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场. ...

  6. 基于GA遗传算法的TSP旅行商问题求解

    import random import math import matplotlib.pyplot as plt import city class no: #该类表示每个点的坐标 def __in ...

  7. Selenium4+Python3系列(五) - 多窗口处理之句柄切换

    写在前面 感觉到很惭愧呀,因为居然在Selenium+Java系列中没有写过多窗口处理及句柄切换的文章,不过也无妨,不管什么语言,其思路是一样的,下面我们来演示,使用python语言来实现窗口句柄的切 ...

  8. 谷歌拼音输入法扩展API开发指南

    为了帮助开发者在谷歌拼音输入法的基本输入功能基础上,开发和定义更丰富的扩展输入功能,谷歌拼音输入法提供了以Lua脚本编程语言为基础的输入法扩展API.利用输入法扩展API,开发者可以编写自定义的输入功 ...

  9. JS逆向实战4--cookie——__jsl_clearance_s 生成

    分析 网站返回状态码521,从浏览器抓包来看,浏览器一共对此地址请求了三次(中间是设置cookie的过程): 第一次请求:网站返回的响应状态码为 521,响应返回的为经过 混淆的 JS 代码:但是这些 ...

  10. Azure Devops Create Project TF400711问题分析解决

    前几天,团队使用Azure Devops创建团队项目出了一个奇怪的错误: TF400797: 作业扩展具有一个未处理的错误: Microsoft.TeamFoundation.Framework.Se ...