Helm部署EMQX集群

news/2024/7/7 18:41:30

端口说明:

端口说明集群内端口Nodeport备注
mqtt188331274Port for MQTT
mqttssl888331170Port for MQTT(SSL)
mgmt8081
ws808330099Port for WebSocket/HTTP
wss808432580Port for WSS/HTTPS
dashboard1808331303Port for dashboard

一、Helm在线部署EMQX集群

1、安装helm

wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
helm version

2、添加helm仓库

helm repo add emqx https://repos.emqx.io/charts
helm repo list
helm repo update
helm search repo emqx

3、创建storageClass或者pv,pvc(略)

4、使用持久化资源storageClass安装emqx

helm install emqx emqx/emqx \
  --set replicaCount=3 \
  --set image.tag=5.2.1 \
  --set persistence.enabled=true \
  --set persistence.size=100Mi \
  --set persistence.storageClass=nfs  \
  --set service.type=NodePort \
  --set service.nodePorts.mqtt=31274 \
  --set service.nodePorts.mqttssl=31170 \
  --set service.nodePorts.ws=30099 \
  --set service.nodePorts.wss=32580 \
  --set service.nodePorts.dashboard=31303 \
  --namespace emqx \
  --create-namespacee

5、使用持久化资源pv,pvc安装emqx

helm install emqx emqx/emqx \
  --set replicaCount=3 \
  --set image.tag=5.2.1 \
  --set persistence.enabled=true \
  --set persistence.size=100Mi \
  --set persistence.existingClaim=emqx-data-pvc  \
  --set service.type=NodePort \
  --set service.nodePorts.mqtt=31274 \
  --set service.nodePorts.mqttssl=31170 \
  --set service.nodePorts.ws=30099 \
  --set service.nodePorts.wss=32580 \
  --set service.nodePorts.dashboard=31303 \
  --namespace emqx \
  --create-namespace

6、验证emqx

heml status -n emqx emqx
helm list -n emqx
kubectl get pods -n emqx
kubectl get svc -n emqx
kubectl get pv,pvc -n emqx

7、登录dashboard

http://192.168.1.47:31303
admin / public #默认账号密码
admin / public123

8、创建mysql数据库实例emqx_user,并授权

mysql> create databases mqtt_user;
mysql> grant all privileges on mqtt_user.* to 'mqtt_user'@'%' identified by 'mqtt123';
myql> flush privileges;

9、创建表

  • https://docs.emqx.com/zh/enterprise/v5.2/access-control/authn/mysql.html
mysql> CREATE TABLE `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;

9、插入表数据

在此表中使用 username 作为查找条件。

例如,我们希望添加一名用户名为 emqx_user、密码为 public、盐值为 slat_foo123、散列方式为 sha256 且超级用户标志为 true 的用户:

mysql> INSERT INTO mqtt_user(username, password_hash, salt, is_superuser) VALUES ('mqtt_user', SHA2(concat('public', 'slat_foo123'), 256), 'slat_foo123', 1);

10、添加客户端认证

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/202307240241在这里插入图片描述
在这里插入图片描述

二、Helm离线部署EMQX集群

1、制作应用的离线安装包(需能访问外放)

1.1 安装helm

wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
helm version

1.2 添加仓库

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

1.3 使用helm下载对应版本的chats

1.3.1 查询版本
helm search repo emqx --version 5.2.1

在这里插入图片描述

1.3.2 pull应用chats到本地并上传到指定服务器
helm pull emqx/emqx --version 5.2.1

在这里插入图片描述

2、下载并定制镜像

docker pull emqx/emqx:5.2.1
docker login
docker tag emqx/emqx:5.2.1 58.34.20.154:5500/iecs/emqx:5.2.1 
docker push 58.34.20.154:5500/iecs/emqx:5.2.1

docker login
docker pull 58.34.20.154:5500/iecs/emqx:5.2.1
docker tag 58.34.20.154:5500/iecs/emqx:5.2.1 10.140.20.28/iecs/emqx:5.2.1
docker push 10.140.20.28/iecs/emqx:5.2.1

3、创建storageClass或者pv\pvc(略)

4、使用持久化资源storageClass创建emqx集群

helm install emqx ./emqx-5.2.1.tgz \
  --set replicaCount=3 \
  --set image.repository=10.140.20.28/iecs/emqx:5.2.1 \
  --set image.tag=5.2.1 \
  --set persistence.enabled=true \
  --set persistence.size=100Mi \
  --set persistence.storageClass=nfs  \
  --set service.type=NodePort \
  --set service.nodePorts.mqtt=31274 \
  --set service.nodePorts.mqttssl=31170 \
  --set service.nodePorts.ws=30099 \
  --set service.nodePorts.wss=32580 \
  --set service.nodePorts.dashboard=31303 \
  --namespace emqx \
  --create-namespacee

5、使用持久化资源pv\pvc创建emqx集群

helm install emqx ./emqx-5.2.1.tgz \
--set replicaCount=3 \
--set image.repository=10.140.20.28/iecs/emqx:5.2.1 \
  --set image.tag=5.2.1 \
  --set persistence.enabled=true \
  --set persistence.size=100Mi \
  --set persistence.existingClaim=emqx-data-pvc  \
  --set service.type=NodePort \
  --set service.nodePorts.mqtt=31274 \
  --set service.nodePorts.mqttssl=31170 \
  --set service.nodePorts.ws=30099 \
  --set service.nodePorts.wss=32580 \
  --set service.nodePorts.dashboard=31303 \
  --namespace emqx \
--create-namespace

6、验证emqx

heml status -n emqx emqx
helm list -n emqx
kubectl get pods -n emqx
kubectl get svc -n emqx
kubectl get pv,pvc -n emqx

7、登录dashboard

http://192.168.1.47:31303
admin / public #默认账号密码
admin / public123

8、创建mysql数据库实例emqx_user,并授权

mysql> create databases mqtt_user;
mysql> grant all privileges on mqtt_user.* to 'mqtt_user'@'%' identified by 'mqtt123';
myql> flush privileges;

9、创建表

  • https://docs.emqx.com/zh/enterprise/v5.2/access-control/authn/mysql.html
mysql> CREATE TABLE `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;

10、插入表数据

在此表中使用 username 作为查找条件。

例如,我们希望添加一名用户名为 emqx_user、密码为 public、盐值为 slat_foo123、散列方式为 sha256 且超级用户标志为 true 的用户:

mysql> INSERT INTO mqtt_user(username, password_hash, salt, is_superuser) VALUES ('mqtt_user', SHA2(concat('public', 'slat_foo123'), 256), 'slat_foo123', 1);

11、添加客户端认证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、卸载EMQX集群

#卸载emqx集群
helm uninstall emqx -n emqx
#删除pv/pvc
kubectl delete -n emqx pvc emqx-data-emqx-0

http://lihuaxi.xjx100.cn/news/1595703.html

相关文章

电影产业的数据洞察:爬虫技术在票房分析中的应用

概述 电影产业是一个庞大而复杂的行业,涉及到各种各样的因素,如导演、演员、类型、主题、预算、宣传、口碑、评分、奖项等。这些因素都会影响电影的票房收入,也会反映出电影市场的动态和趋势。为了更好地了解电影产业的数据洞察,…

为何说医疗器械售后前景呈持续发展趋势?

为何说医疗器械售后前景呈持续发展趋势?如果医院的设备突然不运转了无法工作了,医院如果不及时维修,一天下来不仅患者有生命危险,医院的经济损失也不可估量,但是你知道这些医院的这些设备是怎么维修的吗?医…

嵌入式学习笔记(48)什么是I2C通信

10.1.1物理接口:SCL SDA (1)SCL:时钟线,传输CLK,一般是I2C主设备向从设备提供时钟的通道。 (2)SDA:数据线,通信数据都通过SDA线传输。 10.1.2通信特征:串行、同步、非差分、低速 (1)I2C属于…

EPDB 08、EPDBS 10、PDRV、EPDZA06插装式比例减压阀放大器

比例方向阀W42E-5PS03、W43E-5PS05、W42E-1AS06、W43E-1AS06、插装式S22E-1V08放大器。 该放大器既可用于工业及移动设备应用,也可用于固定安装。因此,电压范围非常宽,在8至35VDC之间变化。这些放大器对欠压和电压尖峰非常不敏感&#xff0c…

从本地到全球:跨境电商的壮丽崛起

跨境电商,作为数字时代的商业现象,正在以惊人的速度改变着全球贸易的面貌。它不仅仅是一种商业模式,更是一场无国界的革命,使商业不再受限于地理位置,而是全面融入全球市场。 本文将深入探讨跨境电商的崛起&#xff0…

c++ qt--线程(二)(第九部分)

c qt–线程(二)(第九部分) 一.线程并发 1.并发问题: ​ 多个线程同时操作同一个资源(内存空间、文件句柄、网络句柄),可能会导致结果不一致的问题。发生的前提条件一定是多线程下…

枫叶时代影视:联想工作站助力中国影视行业发展

近年来,中国影视行业发展迅猛,从传统手绘动画到气势恢宏的特效场景,我们不断被呈现出一场又一场视觉盛宴。而支撑影视行业高速发展的“基石”正是拥有高效、强大算力的图形工作站。在中国工作站市场中,联想工作站家族位居首位&…

中国电信与中国羽协签约,成为中国国家羽毛球队官方合作伙伴

近日,中国电信与中国羽毛球协会签约,正式成为中国国家羽毛球队官方合作伙伴和尊荣赞助商,双方将在科技赋能体育、体育助力品牌传播等方面,开展深入合作,强强联手,互利共赢。 作为建设网络强国、数字中国和维…