Docker集群部署:3节点_物联网平台_边缘计算网关

服务器资源分配情况

第1步:准备集群节点运行环境

💡 提示

集群部署至少需要3个服务器节点。

确定用于集群部署的服务器信息,例如:IP、账号密码

防火墙配置

💡 提示

防火墙规则有上行(其它终端访问服务器)和下行(服务器访问网络资源)2种。

端口清单如下:

此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/v2xdocs/gqevy8bnlrr3sc3v

安装docker和docker-compose

根据您的操作系统选择

此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/v1xdocs/pc6mq85nntgusa1b
此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/v1xdocs/ombfzh3udmssrpoo
此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/v1xdocs/xl0p1wko115eixcn

第2步:集群内节点的部署包同步

2.1、上传部署包

⚠️ 警告

将部署包上传到集群内任意1台服务器的根目录下。并将部署包重命名为_makeFile

2.2、配置部署包环境变量

修改文件miscroservice.env(docker容器环境变量)中的环境变量。

💡 提示

将配置文件中的文本【需要被替换的模板变量1】、【需要被替换的模板变量2】、【需要被替换的模板变量3】、【需要被替换的模板变量4】、【需要被替换的模板变量5】和【需要被替换的模板变量8】替换为第三方电脑可访问的IP或域名。

💡 提示

环境变量中,部署包默认使用的是REDIS的单体模式。

💡 提示

环境变量中,部署包默认Promethus收集性能指标。

⚠️ 警告

所有的访问地址都是IP或域名端口的组合,即访问地址=IP或域名+服务端口。例如:ZOOKEEPER的访问地址为访问ZOOKEEPER的IP或域名:2181。

可使用下面的命令替换环境变量。

cd /_makeFile
#sed命令说明,当前登录的是集群节点1,实际执行的命令如下:
#              sed -i 's/集群节点1/0.0.0.0/g' miscroservice.env

# 3节点集群部署
sed -i 's/ #server.2/ server.2/g' miscroservice.env   #zookeeper部署默认只使用了1个节点
sed -i 's/ #,2/,2/g' miscroservice.env               #kafka部署默认只使用了1个节点


sed -i 's/REDIS_CONNECTION_TYPE=standalone/REDIS_CONNECTION_TYPE=cluster/g' miscroservice.env



sed -i 's/需要被替换的模板变量1/ZOOKEEPER访问节点1的访问地址,ZOOKEEPER访问节点2的访问地址,ZOOKEEPER访问节点3的访问地址/g' miscroservice.env
sed -i 's/需要被替换的模板变量2/访问数据库PGSQL的IP或域名:5432/g' miscroservice.env
sed -i 's/需要被替换的模板变量3/KAFKA节点1的访问地址,KAFKA节点2的访问地址,KAFKA节点3的访问地址/g' miscroservice.env
sed -i 's/需要被替换的模板变量4/访问MINIO的IP或域名:9000/g' miscroservice.env
sed -i 's/需要被替换的模板变量5/REDIS节点1的访问地址,REDIS节点2的访问地址,REDIS节点3的访问地址/g' miscroservice.env
sed -i 's/需要被替换的模板变量8/CASSANDRA节点1的访问地址,CASSANDRA节点2的访问地址,CASSANDRA节点3的访问地址/g' miscroservice.env

#如果还可以找到内容【需要被替换的模板变量】说明配置文件编辑失败
cat miscroservice.env|grep 需要被替换的模板变量

⚠️ 警告

这些变量在集群内的所有节点都是一样的。

如果还可以找到文本【需要被替换的模板变量1】、【需要被替换的模板变量2】、【需要被替换的模板变量3】、【需要被替换的模板变量4】、【需要被替换的模板变量5】和【需要被替换的模板变量8】说明配置文件编辑失败。

2.3、部署包同步到集群内的其它服务器

scp -r /_makeFile root@用于扩展微服务组件的服务器IP或域名:/    #同步到其它服务器根目录                              

命令执行过程如图:

第3步:安装微服务依赖软件

3.1、配置依赖软件的环境变量

⚠️ 警告

安装依赖软件前,必须修改集群内所有节点的部分环境变量,下面这些环境变量的值不尽相同

修改文件miscroservice.env(docker容器环境变量)中的环境变量。

💡 提示

将配置文件中的文本【CLUSTER_NODE_ID=1】、【集群节点1】、【集群节点2】、【集群节点3】、【需要被替换的模板变量0】、【需要被替换的模板变量10】替换为第三方电脑可访问的IP或域名。

⚠️ 警告

当前登录的集群节点需要配置为广播地址【0.0.0.0】,例如:当前登录的是集群节点1,实际执行的命令如下:【sed -i ‘s/集群节点1/0.0.0.0/g’ miscroservice.env】

可使用下面的命令替换环境变量。

cd /_makeFile
sed -i 's/CLUSTER_NODE_ID=1/CLUSTER_NODE_ID=KAFKA和ZOOKEEPER部署节点的数字编号/g' miscroservice.env
sed -i 's/集群节点1/集群节点1的集群内通信的IP或域名/g' miscroservice.env
sed -i 's/集群节点2/集群节点2的集群内通信的IP或域名/g' miscroservice.env
sed -i 's/集群节点3/集群节点3的集群内通信的IP或域名/g' miscroservice.env

sed -i 's/需要被替换的模板变量0/当前节点的公网IP或域名/g' miscroservice.env
sed -i 's/需要被替换的模板变量f/当前节点的网卡(内网)IP/g' miscroservice.env

#如果还可以找到内容【需要被替换的模板变量】说明配置文件编辑失败
cat miscroservice.env|grep 需要被替换的模板变量

💡 注意

需要被替换的模板变量f在1.4.1之前版本的部署包内都为需要被替换的模板变量10,为避免与其他替换变量重复查找修改为需要被替换的模板变量f。

⚠️ 警告

如果还可以找到文本【集群节点1】、【集群节点2】、【集群节点3】、【需要被替换的模板变量0】、【需要被替换的模板变量f】说明配置文件编辑失败。

3.2、安装微服务依赖软件

进入对应的依赖软件目录,执行容器编排命令。

安装服务中心(Zookeeper)集群

cd /_makeFile/center
docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志                                 

安装消息中间件(Kafka)集群

cd /_makeFile/message
docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志                                 

安装缓存(Redis)集群

cd /_makeFile/redis
docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志                                 

💡 注意

REDIS集群部署时,在所有节点启动后,需要在任一REDIS环境执行如下命令对集群进行初始化。

redis-cli -a litangyuan –cluster create 节点1:6379 节点2:6379 节点3:6379

redis-cli -a litangyuan --cluster create  节点1:6379 节点2:6379 节点3:6379

集群初始化成功结果如下图

数据持久化工具集群

💡 注意

该容器编排文件docker-compose.yml里面包含pgsql、minio、cassandra等软件。

请结合实际情况安装相关软件。

cd /_makeFile/storage
docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志                                 

安装负载均衡软件

💡 提示

可视化服务组件包括组态、大屏和管理页面3个部分。

cd /_makeFile/loadbalance
docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志

第4步:安装微服务组件

结合实际需求扩展微服务组件到多台服务器。

导入镜像

查看服务器CPU信息

hostnamectl                                    

命令执行结果如下,红框内的是CPU信息:

导入镜像

_images目录下对应CPU架构的离线镜像导入docker。

PS:注意这个文件的版本号,与您实际版本一致。

docker load -i _images/thingskit_miscroservice_x86.tar  #服务器CPU架构多为x86-64

启动服务组件:核心服务

cd /_makeFile/services/core
#把docker-compose.yml文件中的服务名,替换为core1
sed -i 's/服务名/core1/g' docker-compose.yml

#如果还可以找到“服务名”说明配置文件编辑失败
cat docker-compose.yml|grep 服务名

docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志

启动服务组件:规则引擎

cd /_makeFile/services/rule

docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志

启动服务组件:设备接入服务

💡 提示

设备接入服务的组件目录可选值:transport_http、transport_mqtt、transport_tcp。

cd /_makeFile/services/transport

sed -i 's/组件目录值/transport_mqtt/g' docker-compose.yml
sed -i 's/服务名/mqtt1/g' docker-compose.yml
# 不同接入协议需要修改端口,默认为MQTT的1883
sed -i 's/1883:1883/8088:8088/g' docker-compose.yml       

docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志

⚠️ 警告

如果还可以找到内容【服务名】、【组件目录值】说明配置文件编辑失败。

启动服务组件:脚本引擎

💡 提示

如果配置环境变量JS_EVALUATOR的值为【remote】时,集群中至少存在一个脚本引擎的服务组件。

cd /_makeFile/services/js-executor

docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志

第5步:部署可视化管理页面

💡 提示

可视化服务组件包括组态、大屏和管理页面3个部分。

配置Nginx的环境变量

修改文件miscroservice.env(docker容器环境变量)中的环境变量。

💡 提示

将配置文件中的文本【需要被替换的模板变量7】和【需要被替换的模板变量9】替换为第三方电脑可访问的IP或域名。

可使用下面的命令替换环境变量。

cd /_makeFile
sed -i 's/需要被替换的模板变量7/NGINX反向代理的核心服务访问地址/g' miscroservice.env
sed -i 's/需要被替换的模板变量9/NGINX反向代理的组态访问地址/g' miscroservice.env

#如果还可以找到内容【需要被替换的模板变量】说明配置文件编辑失败
cat miscroservice.env|grep 需要被替换的模板变量

⚠️ 警告

如果还可以找到内容【需要被替换的模板变量7】和【需要被替换的模板变量9】说明配置文件编辑失败。

💡 提示

如果您需要开启HTTPS协议,需要将TLS_FILE_PUBLIC的值【com.thingskit.pem】、TLS_FILE_PRIVATE的值【com.thingskit.key】这2个内容替换为第三方电脑可访问的域名。

可使用下面的命令替换环境变量。

cd /_makeFile
sed -i 's/com.thingskit.pem/证书的公钥文件名/g' miscroservice.env
sed -i 's/com.thingskit.key/证书的私文件名/g' miscroservice.env

#如果还可以找到内容【com.thingskit】说明配置文件编辑失败
cat miscroservice.env|grep com.thingskit

配置管理界面/大屏的服务端信息

⚠️ 警告

版本v1.1.2_Release和之前的版本需要执行改操作。

💡 提示

管理页面和大屏都需要对配置文件_app.config.js中的文本【localhost】替换为第三方电脑可访问的IP或域名。

修改与前端配合的后端信息,例如:后端API、websocket接口等。

cd /_makeFile/_workspace/data_view
sed -i 's/localhost/外网IP或域名/g' _app.config.js

cd /_makeFile/_workspace/web_ui
sed -i 's/localhost/外网IP或域名/g' _app.config.js

#如果还可以找到内容【需要被替换的模板变量】说明配置文件编辑失败
cat monolith.env | grep localhost

⚠️ 警告

如果还可以找到内容【localhost】说明配置文件编辑失败

💡 提示

默认未开启安全协议SSL

sed -i 's/"VITE_GLOB_CONTENT_SECURITY_POLICY":"false"/"VITE_GLOB_CONTENT_SECURITY_POLICY":"true"/g' _app.config.js

修改后配置文件效果图

启动物联网平台

cd /_makeFile/webserver
docker-compose	up -d

docker-compose logs  --tail=200 -f    #查看管理界面日志

第6步:刷新负载均衡配置文件

💡 提示

扩展核心服务设备接入服务时需要刷新负载均衡的配置文件。

核心服务

cd /_makeFile/loadbalance/conf
sed -i '/核心服务的负载均衡节点/a  server 节点别名1 访问服务的IP或域名:端口 check inter 5s resolvers docker_resolver resolve-prefer ipv4' haproxy.cfg
#如果找不到内容说明配置文件编辑失败
cat haproxy.cfg | grep 新加内容的关键字

设备接入服务:MQTT

cd /_makeFile/loadbalance/conf
sed -i '/设备接入协议MQTT负载均衡节点/a  server 节点别名1 访问服务的IP或域名:端口 check inter 5s resolvers docker_resolver resolve-prefer ipv4' haproxy.cfg
#如果找不到内容说明配置文件编辑失败
cat haproxy.cfg | grep 新加内容的关键字

设备接入服务:TCP

cd /_makeFile/loadbalance/conf
sed -i '/设备接入协议TCP负载均衡节点/a  server 节点别名1 访问服务的IP或域名:端口 check inter 5s resolvers docker_resolver resolve-prefer ipv4' haproxy.cfg
#如果找不到内容说明配置文件编辑失败
cat haproxy.cfg | grep 新加内容的关键字

设备接入服务:HTTP

cd /_makeFile/loadbalance/conf
sed -i '/设备接入协议HTTP的负载均衡节点/a  server 节点别名1 访问服务的IP或域名:端口 check inter 5s resolvers docker_resolver resolve-prefer ipv4' haproxy.cfg
#如果找不到内容说明配置文件编辑失败
cat haproxy.cfg | grep 新加内容的关键字

第7步:重启负载均衡软件

💡 提示

扩展核心服务设备接入服务时需要重启负载均衡软件。

cd /_makeFile/loadbalance
docker-compose	restart

docker-compose logs  --tail=200 -f    #查看管理界面日志

第8步:测试集群部署是否成功

负载均衡软件状态

💡 提示

Haproxy访问地址:http:/访问服务的IP或域名/:9999/stats

账号/密码:账号和密码在配置文件中查看

第9步:测试ThingsKit物联网平台是否安装成功

💡 提示

访问地址:http://你的的IP或域名:9527

超级管理员账号:sysadmin

超级管理员密码:Sysadmin@123

租户管理员/客户默认密码:123456

‼️ 提示

设备的接入需要再超级管理员的账号登录后,创建租户-租户管理员并访问租户账号才能使用。

平台是否安装成功验收清单

此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/v2xdocs/xmdy5eamsg2s0m4l
本文通过 YUQUE WORDPRESS 同步自语雀
云腾五洲-AI助理