如何在离线环境下部署 EMQX ECP

科技   科技   2025-01-14 07:46   北京  
作者:于悦,EMQ 后端工程师
EMQX ECP 是一款工业互联数据平台,能够满足工业场景大规模数据采集、处理和存储分析的需求,提供边缘服务的快速部署、远程操作和集中管理等功能,助力工业领域数据互联互通,以数据 + AI 驱动生产监测、控制和决策,实现智能化生产,提高效率、质量和可持续性。
在当今的企业级应用部署中,EMQX ECP 提供了灵活的安装选项,如:通过 Docker Compose 和 Helm Chart 两种主流方式安装。然而,在某些特殊环境下,由于网络限制,用户无法直接访问外网,这对于依赖在线拉取 Docker 镜像的安装流程来说是一个挑战。
为了克服这一限制,EMQX 特别提供了一种离线安装 ECP 的解决方案。通过提前将所需的 Docker 镜像导入到客户的环境中,即使在没有外网连接的情况下,也能确保 ECP 的顺利部署和运行。这种离线安装方法不仅提高了安装的灵活性,还增强了在各种网络环境下的适应性和可靠性。



docker compose 安装


1. 下载 docker image 压缩包,您也可以联系我们,获取离线安装包。

2. 解压缩。

mkdir  imagetar -zxvf   emqx-ecp-dependency-images-2.4.1-alpha.4.tar.gz -C  ./image

3. 导入 docker image。

cd image for t in *.image; do docker load -i "$t"; done

4. 将下载的安装包 emqx-ecp-docker-compose-installer-2.1.1.tar.gz 上传到服务器上,解压缩后,进入解压缩后的目录,执行以下步骤完成 ECP 的安装。

./emqx_ecp_ctl configure

配置

./emqx_ecp_ctl start

启动

./emqx_ecp_ctl status

查看状态,全是Up,表示安装成功



helm chart 安装


1. 下载 docker image 压缩包

2. 解压缩

mkdir  image & tar -zxvf   emqx-ecp-dependency-images-2.4.1-alpha.4.tar.gz -C  ./image

3. 导入 docker image

在 Kubernetes 中,docker 和 containerd 的主要区别在于它们作为容器运行时的实现方式不同:docker 通过其自身的容器运行时来管理容器的生命周期,而 containerd 作为一个更轻量级的容器运行时,直接与容器交互,通常提供更简洁的接口和更好的性能。这两种导入 docker image 的方式也有所不同。

注意:
您可以通过以下命令来判断 Kubernetes 集群中使用的是 docker 还是 containerd:
kubectl get nodes -o jsonpath='{.items[*].status.nodeInfo.containerRuntimeVersion}'
这条命令将返回每个节点使用的容器运行时版本信息,以返回的信息是否包含「docker」或「containerd」作为判断依据。下面分别是2种情况的安装步骤:
「docker」
cd image for t in *.image; do docker load -i "$t"; done
「containerd」
#!/bin/bash
# 遍历当前文件夹下所有以 .image 结尾的文件for image_file in *.image; do   # 获取不带 .image 扩展名的文件名   base_name="${image_file%.image}"       # 重命名文件,将 .image 扩展名改为 .tar.gz   mv "$image_file" "${base_name}.tar.gz"       # 解压缩 .tar.gz 文件   gunzip "${base_name}.tar.gz"       # 导入解压缩后的 .tar 文件到 containerd   ctr -n k8s.io image import "${base_name}.tar"       # 可选:删除解压缩后的 .tar 文件,以节省空间   # rm "${base_name}.tar"done
  • 将上述脚本保存为一个文件,例如 import_images.sh
  • 脚本执行
chmod +x import_images.sh./import_images.sh
  • 查看镜像是否导入成功
crictl images
4. 通过 helm chart 安装
helm repo add emqx https://repos.emqx.io/chartshelm repo updatehelm pull emqx/kube-ecp-stack --version ${version} --untarcd kube-ecp-stack
如有必要,可通过修改 values.yaml 来实现。
比如指定使用特定的 StorageClass , 默认为 standard :
global:   image:      registry: ""      repository: ""      pullPolicy: IfNotPresent      ##      ## Optionally specify an array of imagePullSecrets.      ##      # pullSecrets: &global-image-pullSecrets      #   - name: "ecp-registry"      pullSecrets: &global-image-pullSecrets []   storage:      className: &global-storage-className "standard"      accessModes: &global-storage-accessModes      - ReadWriteOnce
安装启动
helm upgrade --install ${YOUR_RELEASE_NAME} . --namespace ${YOUR_NAMESPACE} --create-namespace
大约等待 30s 后,检查安装的 pod 状态,如果都是 Running 状态,表示安装成功。

查看 pod 状态



结语


通过遵循本文提供的离线安装指南,用户可以确保 EMQX ECP 在任何环境下都能稳定运行,从而实现高效、可靠的消息队列服务。这种安装方式不仅提高了系统的可用性,还为用户提供了更多的控制权,以适应不断变化的业务需求和技术挑战。



点击“阅读原文”,了解更多






EMQ中文社区
EMQ 映云科技是全球领先的「云边端」连接与数据平台供应商,通过自主研发的 MQTT 软件,实现物理世界与数字世界间的数据采集、传输、转换、存储、分析与控制。
 最新文章