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

emqx部署

要修改文件-命名空间-节点选择器
 

#apiVersion: v1
##kind: ConfigMap
##metadata:
##  name: emqx-config
##data:
##  emqx.conf: |
## 
#
---
apiVersion: v1
kind: PersistentVolume
metadata:name: emqx-pv
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagehostPath:path: /store/data/emqxtype: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: emqx-pvcnamespace: middle-ware-sy
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: local-storage
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: emqxnamespace: middle-ware-sy
spec:serviceName: "emqx-headless"replicas: 1selector:matchLabels:app: emqxtemplate:metadata:labels:app: emqxspec:nodeName: node2containers:- name: emqximage: emqx:5.8.3ports:- containerPort: 1883name: mqtt- containerPort: 18083name: dashboardvolumeMounts:#      - mountPath: /opt/emqx/data/mnesia#        name: emqx-pvc#        subPath: mnesia- mountPath: /opt/emqx/dataname: emqx-pvcsubPath: data- mountPath: /opt/emqx/logsname: emqx-pvcsubPath: logs- name: timezonemountPath: /etc/localtime#- mountPath: /opt/emqx/etc#  name: emqx-pvc#  subPath: etcvolumes:- name: emqx-pvcpersistentVolumeClaim:claimName: emqx-pvc- name: timezonehostPath: path: /usr/share/zoneinfo/Asia/Shanghai
---
apiVersion: v1
kind: Service
metadata:name: emqx-servicenamespace: middle-ware-sy
spec:type: NodePortselector:app: emqxports:- name: mqttport: 1883targetPort: 1883nodePort: 30004- name: dashboardport: 18083targetPort: 18083nodePort: 30005- name: mqtt-tlsport: 8883targetPort: 8883nodePort: 30006- name: mqtt-wssport: 8084targetPort: 8084nodePort: 30007- name: mqtt-wsport: 8083targetPort: 8083nodePort: 30008

【实现1个emqx,部署在主节点】

目录映射关系{

/data/emqx/etc:/opt/emqx/etc

/data/emqx/data:/opt/emqx/data

/data/emqx/log:/opt/emqx/log }

端口{

web地址:18083:32205

订阅地址:1883:32201

}

部署流程:

  1. helm工具+emqx仓库源

wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz

tar -zxvf helm-v3.12.3-linux-amd64.tar.gz

cp linux-amd64/helm /usr/local/bin/

helm version

helm repo add emqx https://repos.emqx.io/charts

helm repo update

mkdir -p /data/emqx

chmod 777 -R /data/emqx

2.解压emqx包

tar -xf emqx.tar.gz

cd emqx/emqx

vim emqx-kind.yml

ports:

    - name: mqtt

      port: 1883 #修改为1883,或者新增一段1883

      targetPort: 1883

      nodePort: 32201  # 指定 NodePort 用于 MQTT 服务

    - name: dashboard

      port: 18083

      targetPort: 18083

      nodePort: 32205  # 指定 NodePort 用于 Dashboard 服务

#1883为物联网设备mqtt连接端口

#8083为web应用的websocket连接端口

kubectl apply -f emqx-kind.yml

helm install my-emqx emqx/emqx -f values.yaml

#helm install my-emqx emqx/emqx -f values.yaml --namespace middle-ware-sy

#helm uninstall my-emqx --namespace middle-ware-sy#删除

#helm install my-emqx emqx/emqx -f values.yaml -n middle-ware-sy#重新安装

3.验证状态

kubectl get pods -A

emqx  running

若是有报错:

#起不来,因为镜像,修改values.yml里的image还有sts.yml里的image

kubectl describe pods my-emqx-0 -n default

Events:

  Type     Reason     Age                 From               Message

  ----     ------     ----                ----               -------

  Normal   Scheduled  100s                default-scheduler  Successfully assigned default/my-emqx-0 to node2

  Normal   Pulled     44s (x4 over 100s)  kubelet            Container image "emqx/emqx:5.8.5" already present on machine

  Normal   Created    44s (x4 over 100s)  kubelet            Created container emqx

  Normal   Started    44s (x4 over 99s)   kubelet            Started container emqx

  Warning  BackOff    10s (x8 over 93s)   kubelet            Back-off restarting failed container

docker pull emqx/emqx:6.8.7

#/data/emqx目录权限不足,chmod 777 -R /data/emqx

kubectl logs my-emqx-0 -n default

mkdir: cannot create directory ‘/opt/emqx/data/configs’: Permission denied

#如果是二次部署,需要删除/data/emqx下面的所有数据

kubectl delete -f emqx.yaml  #先停止emqx,不再生成数据

rm -fr /data/emqx/* /store/data/emqx/* #删除目录下数据

【emqx.yml方式部署】

[root@master kind]# cat emqx.yml

#apiVersion: v1

##kind: ConfigMap

##metadata:

##  name: emqx-config

##data:

##  emqx.conf: |

##

#

---

apiVersion: v1

kind: PersistentVolume

metadata:

  name: emqx-pv

spec:

  capacity:

    storage: 5Gi

  volumeMode: Filesystem

  accessModes:

    - ReadWriteOnce

  persistentVolumeReclaimPolicy: Retain

  storageClassName: local-storage

  hostPath:

    path: /store/data/emqx

    type: DirectoryOrCreate

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: emqx-pvc

  namespace: middle-ware-sy

spec:

  accessModes:

    - ReadWriteOnce

  resources:

    requests:

      storage: 5Gi

  storageClassName: local-storage

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

  name: emqx

  namespace: middle-ware-sy

spec:

  serviceName: "emqx-headless"

  replicas: 1

  selector:

    matchLabels:

      app: emqx

  template:

    metadata:

      labels:

        app: emqx

    spec:

      nodeName: node2

      containers:

        - name: emqx

          image: emqx:5.8.3

          ports:

            - containerPort: 1883

              name: mqtt

            - containerPort: 18083

              name: dashboard

          volumeMounts:

      #      - mountPath: /opt/emqx/data/mnesia

      #        name: emqx-pvc

      #        subPath: mnesia

            - mountPath: /opt/emqx/data

              name: emqx-pvc

              subPath: data

            - mountPath: /opt/emqx/logs

              name: emqx-pvc

              subPath: logs

            #- mountPath: /opt/emqx/etc

            #  name: emqx-pvc

            #  subPath: etc

      volumes:

        - name: emqx-pvc

          persistentVolumeClaim:

            claimName: emqx-pvc

---

apiVersion: v1

kind: Service

metadata:

  name: emqx-service

  namespace: middle-ware-sy

spec:

  type: NodePort

  selector:

    app: emqx

  ports:

    - name: mqtt

      port: 1883

      targetPort: 1883

      nodePort: 30004

    - name: dashboard

      port: 18083

      targetPort: 18083

      nodePort: 30005

  1. mysql创建库和表用来给emqx存储连接信息(账密)

create database heihei

USE heihei;

CREATE TABLE IF NOT EXISTS `mqtt_acl` (

  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

  `username` varchar(100) NOT NULL,

  `permission` varchar(5) NOT NULL,

  `action` varchar(9) NOT NULL,

  `topic` varchar(100) NOT NULL,

  `qos` tinyint(1),

  `retain` tinyint(1),

  INDEX username_idx(username),

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `mqtt_user` (

  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

  `username` varchar(100) DEFAULT NULL,

  `password_hash` varchar(100) DEFAULT NULL,

  `salt` varchar(35) DEFAULT NULL,

  `is_superuser` tinyint(1) DEFAULT 0,

  `created` datetime DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `mqtt_username` (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `mqtt_user` (`username`, `password_hash`, `salt`)

VALUES ('test', 'b94c8b48b9ce0c98f11f11be025d9aa56ee40d5f89598c35a2a5cf118db0c054', 'maker_sjy');

# 参考:https://blog.csdn.net/maker_knz/article/details/120727309
# 生成密钥网页:https://www.cmd5.com/hash.aspx
INSERT INTO `mqtt_user` ( `username`, `password_hash`, `salt`)
VALUES
        ('test', 'b94c8b48b9ce0c98f11f11be025d9aa56ee40d5f89598c35a2a5cf118db0c054', 'maker_sjy');

#mqttx测试账密:test/test,mqtt服务连接的账密

5.登录webui界面配置mysql连接

浏览器访问-->服务器ip:32205

默认账密:admin/public

改密码:Wod44cm,9

6.emqx配置更改

#放行规则

kubectl exec -it my-emqx-0 -- /bin/bash

echo "{allow,all}." >>etc/acl.conf

#重启生效配置

kubectl delete pod my-emqx-0 -n default

kubectl get pod my-emqx-0 -n default -w

7.mqttx测试

test/test账号

#下载mqttx :https://www.emqx.com/zh/downloads/MQTTX/v1.11.1/MQTTX-Setup-1.11.1-x64.exe

相关文章:

  • 有源医疗器械的安规三项
  • three.js后处理原理及源码分析
  • VUE3:封装一个评论回复组件
  • Vue基础(7)_计算属性
  • 【mysql】python+agent调用
  • Adobe Lightroom Classic v14.3.0.8 一款专业的数字摄影后期处理软件
  • 【C++QT】Item Views 项目视图控件详解
  • 第二阶段:基础加强阶段总体介绍
  • 全面解析DeepSeek算法细节(2) —— 多令牌预测(Multi Token Prediction)
  • 如何在idea中编写spark程序
  • FDA会议类型总结
  • 排序算法详解笔记(一)
  • 生物化学笔记:神经生物学概论03 脑的高保真数字信号 突触可塑性
  • jquery解决谷歌浏览器自动保存加密密码是乱码
  • 每日一题(12)TSP问题的贪心法求解
  • 深度学习篇---抽样
  • 数据库- JDBC
  • LeetCode 热题 100_最小路径和(92_64_中等_C++)(多维动态规划)
  • React:封装一个评论回复组件
  • 使用JDK的数据校验和Spring的自定义注解校验前端传递参数的两种方法
  • 全国人大常委会关于授权国务院在中国(新疆)自由贸易试验区暂时调整适用《中华人民共和国种子法》有关规定的决定
  • 国铁集团去年收入12830亿元增3%,全年铁路运输利润总额创新高
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • 力箭二号火箭成功进行满载起竖试验,计划今年首飞发射轻舟飞船
  • 中行一季度净赚超543亿降2.9%,利息净收入降逾4%
  • 青海省林业和草原局副局长旦增主动投案,正接受审查调查