安装部署
# 安装部署
# 安装步骤
# 预期效果
在数字园区产品22.2中,华为FusionCube提供了一键安装包的机制,可通过FusionCube OPS系统一键完成数字园区管理平台定制版K8s版本的安装,在进行安装时,可自动安装包括IoTCenter 和数据库软件(MySQL或OpenGaussDB)两套软件。
# 一键安装包组成
安装包中有IoTCenter镜像和OpenGaussDB镜像,分为ARM和x86,共四个镜像,在image文件夹中。InstallTool包含安装和升级脚本,在resourceFile中有相应的yaml文件。
# Yaml文件说明
Yaml语言是专门用来写配置文件的。yaml文件是用来写k8s部署时需要的资源清单的。
在resourceFile文件夹中包含IoTCenter和OpenGaussDB两个镜像包的yaml文件,yaml.j2是原始的还未传参的yaml文件,执行一键安装命令后,文件会接收到传入的参数,然后在resourceFile文件夹中生成对应的含参的yaml文件。
注意
如果用MySQL镜像,会多出mysql-password.yaml和mysql-password-arm.yaml两个文件,它们分别对应两个不同架构CPU下传入的MySQL密码,在执行安装脚本时会自动判断架构,选择执行相应的yaml文件。
# 一键安装脚本使用方法(示例)
首先cd到install.sh 的目录,然后按照镜像版本和nfs储存地址或者本地储存配置需要传入的参数。可手动执行,也可通过DevOps系统自动执行该脚本。 命令示例
sh install.sh
'repoURL=.****.com:5000/cube-repo-space|romaMqsAddr=71.77.**.**:39776;71.77.**.**:39776|nfsHostLoginUser=aaaa|hcso=false|iotAppId=aaaa|gateWayNumber=2|nfsVip=71.77.**.**|whitelist=abcx86.hicampuscube.com|romaConnectorAppIdWithTenant=aaaa__io.**.iot|nodeSelector=iotServer: iot|romaConnectorAppId=io.**.iot|iotAppSeret=aaaa|romaTenantName=aaaa|nfsRootPwd=aaaa|nfsPath=/var/hicampusdata/gwIoTCenter,/var/hicampusdata/gwiotdb|zabbixServer=71.77.**.**:31152,71.77.**.**:31162|namespace=iot|nfsHostLoginPwd=aaaa|imageTag=6.0.0.2|nfsIp=71.77.84.78,71.77.**.**|romaConnectorAppSecret=************,************.************'
安装脚本接收到传入的参数后将在resourceFile文件夹中生成对应的yaml文件,之后通过对环境的判断,自动选择需要执行的yaml文件开始部署,首先会创建node和命名空间,之后开始部署MySQL,之后部署IoTCenter。 升级脚本首先通过传入的参数只更新resourceFile中文件夹中的IoTCenter-deployment.yaml文件,最后通过kubectl apply -f 命令更新yaml文件,k8s通过新的deployment文件拉取新的镜像,完成更新。本包的脚本未涉及到数据库的版本更新和表的更新。
# 配置流程
# 预期效果
IoTCenter部署在华为的FusionCube一体机中,一般情况下EBG版本的IoTCenter会内置EBG插件和接口调用所用到的鉴权用户名,这时候可以直接在ROMA中测试是否能正常调用到IoTCenter的接口。
如果无法调用,可以按照对接检查项目进行检查是否存在预置的用户。在ROMA界面中自定义后端中有相关接口调用时使用的变量,可以核对用户名是否和预置的用户相同。
# 前置条件
注意
物联网平台和Roma均已完成部署,并可以正常使用。如果部署的ROMA平台没有对接IoTCenter平台的资产包,则需要导入资产包。
# ROMA参数说明
详情
# 连接参数
图中“消息集成MQS内网连接地址”为直接对接ROMA的KAFKA的连接地址,消息集成MQS Connector连接地址为通过iot_jar的java包对接ROMASDK实现上报的地址。
图中为敢为EBG项目资产中的连接参数,一个为租户名,一个为秘钥。
# 消息推送主题(Topic)
详情
ROMA查询消息时会选择消息类型,不同的消息类型对应着不同消息。
Topic名称 | 消息主题Topic | 租户标识 |
---|---|---|
终端属性数据变化通知 | T_IOT_DEVICE_DATACHANGED | GW__sctest1001(示例) |
终端状态变化通知 | T_IOT_DEVICE_ONLINESTATUS | |
终端事件变化通知 | T_IOT_DEVICE_ALARM | |
终端指令下发结果通知 | T_IOT_DEVICE_COMMANDRSP | |
人员信息同步 | T_IOT_DEVICE_PERSON_PASS_EVENT_GW |
比如查询设备注册消息,就选择终端属性变化通知的消息主题
# IoTCenter配置
详情
注意
在EBG22.1及后续版本中,默认接口已由FusionCube OPS系统自动配置,若未找到相关接口,也可通过资产包导入的方式完成接口清单的初始化。
# 北向接口配置
# 添加配置
详情
- 登录ROMA
- 新增配置(或编辑配置)
- 配置名称:IoTCenterApiAddr
- 集成应用:敢为
- 配置值:平台访问地址。
# 创建后端
# 鉴权
详情
后端名称:IOT_鉴权
集成应用:敢为集成
后端请求方法:post
后端请求路径:/io/sctest1001__io.ganwei.iot/south/device-management/v2/south/platform/signIn
后端安全认证:无认证
创建完成后,将自动跳转至编辑器,进行一下操作:
点击【编辑器】——【文件】——【新建函数后端】——选择【空白模板】
在【空白模板】处填写好鉴权脚本。
点击【保存】,再点击【测试】,在body处传参,点击测试,结果如下证明成功。
测试成功后,点击【部署】——【发布】,发布完成后,改API接口已创建完成。
# 批量查询终端基础信息
详情
后端名称:IOT批量查询终端基础信息
集成应用:敢为集成
后端请求方法:post
后端请求路径:
/io/sctest1001__io.ganwei.iot/iot/north/device-management/devicesList?GatewayId=&StartTime=。接口以ROMA资产包为准
后端安全认证:无认证
创建完成后,将自动跳转至编辑器,进行一下操作:
点击【编辑器】——【文件】——【新建函数后端】——选择【空白模板】
在【空白模板】处填写好鉴权脚本。
修改脚本中的【X-ClientId】请求头,’X-ClientId’:”实际项目中应用接入管理中注册的AppId”
点击【保存】,再点击【测试】,在body处传参,点击测试,结果如下证明成功。
其余接口同鉴权接口注册步骤一致。
# 配置定时鉴权任务
详情
任务名称:IOT_定时鉴权(干维保)
集成应用:敢为
数据类型:CALENDAR
调用周期:30分钟
API:鉴权
请求参数Body:
{
<p> "UserName":"XXXXXX",
<p> "Password":"XXXXXXXXXXXX"
}
创建完成后立即启动。
# Postman调用ROMA映射后IOT地址
详情
- 收集ROMA地址及域名地址。通常ROMA端口为443 ROMA地址:
域名地址:
- 在本地配置域名访问。
以windows为例,可打开C盘目录下
C:\Windows\System32\drivers\etc
下的hosts文件
配置如下:
IP+空格+域名
- Postman地址填写访问
# 物模型添加
在本方案中,物模型是非常重要的配置信息,是联系真实世界和虚拟世界的纽带。系统中包含两种物模型,一种是由IoTCenter进行直接管理的物模型,即IoTCenter产品信息、设备信息(含遥测、遥信、设置),一种是通过IoTCenter映射生成目标物模型,如EBG的物模型,或华为云IoTDA管理的物模型。
前者在添加产品和设备信息时自动被创建,而后者则可通过如下三种方式进行管理。
详情
# 添加模型
详情
点击图标打开对话框添加物模型。
选中添加的物模型,点击图标打开对话框新增一个服务。
然后在服务中添加一个属性信息,属性信息对应产品中的遥测点
然后添加一个命令信息,在绑定产品的时候就会在产品中生成对应的命令。
# 模型绑定产品
详情
当物模型设置好之后,就可以进入产品信息管理界面对模型进行绑定,绑定之后就会在产品管理中生成对应的产品。
之后进入产品管理界面可以看到生成好的产品。
# 物模型同步产品信息
在新版物模型中增加了产品信息同步到物模型的功能,如果对产品的遥测和设置点等进行添加或删除操作,变动将会同步到物模型,避免造成上报消息缺失。 在产品信息管理页面,选择一个产品点击更新按钮,产品的信息向物模型同步。
# 实时数据推送配置
ROMA源自华为数字化转型集成实践,聚焦应用和数据连接,提供轻量化消息、数据、API等集成能力,简化企业上云,支持云上云下、跨区域集成,打通IT与OT,连接企业与生态伙伴,帮助企业实现数字化转型。
消息中间件是分布式系统中重要的组件,本质就是一个具有接受消息、存储消息、分发消息的队列,应用程序通过读写队列消息来通信。
分布式消息服务Kafka版是一个高吞吐、高可用的消息中间件服务,适用于构建实时数据管道、流式数据处理、第三方解耦、流量削峰去谷等场景,具有大规模、高可靠、高并发访问、可扩展且完全托管的特点,是分布式应用上云必不可少的重要组件。
# Roma配置说明
对接ROMA平台目前有两种方式,第一种方式为通过jar包的方式对接,第二种方式为对接ROMA的Kafka地址。
# 22.1及以前版本
22.1版本的IoTCenter为6.0.0,只支持通过jar包的方式对接ROMA平台。其中对接参数配置在容器中的/opt/ganwei/iot_jar/config/config.properties中。
22.1版本只支持mysql数据库。
# 22.2及后续版本
22.2版本的IoTCenter为6.0.1,可以通过jar包和Kafka两种方式对接。一般在项目上默认使用的是Roma SDK对接。在22.2版本中,在使用jar对接的时候配置文件config.properties 中的秘钥已启用了加密,在文件中会看到很长的一串密码。
22.2版本支持mysql和高斯数据库,默认使用高斯数据库,在22.2版本建议使用Kafka对接。
# 对接Roma SDK
进入IoTCenter容器,输入
cat /opt/ganwei/iot_jar/config/config.properties
打开config.properties文件检查配置文件。
# 配置说明
详情
需要重点关注如下4个参数:
huawei.ump.producer.url 为Roma 服务端MQS地址地址需要检查其连通性。
huawei.ump.producer.appId为Roma 应用id
huawei.ump.producer.appSecret为RomaSDK 连接密钥,22.1版本为明文,22.2版本为图中所示采用使用敢为平台加密工具-【使用高级AES加密】生成的字符串,详见《安装部署文档-使用高级AES加密字符串》。以上三项如果采用Cube流水线部署,将会被自动配置,若手工部署,则需手工导入配置,以上三项都可以在ROMA平台中拿到。
iot.environment.variable为iot环境变量, DEBUG为调试模式、可连接测试或调试环境的Roma,PROC为生产环境、可连接Roma线上运行环境。
# 问题排查
详情
若是在应用过程中遇到roma平台无法接收上报数据的问题,排查思路如下:
- 1、 检查ip是否正确、网络是否打通。可使用curl -kv https://xxx:xx来验证是否可访问。如:curl -kv https://71.77.xx.xx:44380
- 2、 检查appId和appSecret(根据ebg版本判断密钥是否需加密)是否正确。
- 3、 检查是否为调试模式DEBUG,理论上默认为调试模式,需手动修改为生产模式PROC。
- 4、 前面检查都没问题的话,基本可判定是roma那边的问题,反馈给roma处理。 2.2.7.3. 对接Roma Kafka(只适用于22.2后续版本) 目前在IoTCenter Ebg版本中默认集成的版本为Roma SDK,从22.2开始,Roma产品也可以通过Kafka进行直接对接,实际使用时启用直接对接ROMA的kafka的方法是通过修改IoTCenter界面中的应用平台管理中的平台管理中内置的EBG_Plate平台来实现的。 通过修改平台参数,将默认的kafka地址修改成roma的kafka地址、用户名及密码。
下翻到最后,有kafka的用户名和密码选项,将其修改成roma的kafka信息即可。
填入的参数为:
ROMA平台应用找到sctest1001__敢为IOT 应用点击进入
22.2版本ROMA平台开启了SSL证书认证,需要对SSL证书进行转换
1、先在ROMA平台内下载证书文件
2、进入到任意linux环境中进行转换
转换命令:
keytool -importkeystore -srckeystore client.truststore.jks -destkeystore server12.p12 -srcstoretype jks -deststoretype pkcs12
统一密码:dms@kafka(密码不能对外公开,涉及华为安全规范)
执行:
openssl pkcs12 -in server12.p12 -out client.crt -nokeys (密码见上)
执行成功 3、文件拷贝至映射dll文件内地址:
/var/hicampusdata/gwIoTCenter/dllToCopy/dll/
4、添加转换证书参数
是否加载证书填IsCertificate: 1 Kafka证书地址 CertAddress:dll/证书文件名