本文介绍如何通过函数计算部署网络时间同步助手,实现设备本地时间与网络时间同步。如果您的设备上已经安装了NTP服务,有和云端服务器周期性同步系统时间的能力,则无需操作本文内容。

前提条件

本示例仅适用于Link IoT Edge专业版,在开始操作本章内容前,请您确保已根据专业版环境搭建内容完成边缘实例的创建。

背景信息

连接到边缘端的设备,很多Linux系统默认没有安装NTP服务,系统启动后时间常常是从1970年开始计时。或者一些Linux虚拟机只在系统刚启动时做一次时间同步,后续随着系统休眠等情况,虚拟机计时会暂停。随着时间的推移,系统时间与网络时间的差距会越来越大。

当设备本地时间和网络时间不同步时,可能会导致访问云服务失败,也可能导致无法在线安装某些软件。正确的时间戳,对于日志分析也能提供更有价值的参考信息。

您可以通过物联网边缘计算提供的边缘函数计算功能,很好的解决设备本地时间与网络时间不同步的问题。

一、创建时间同步函数

  1. 下载时间同步函数,该函数会自动和NTP服务器同步网络时间。
  2. 登录阿里云函数计算控制台
    如尚未开通该服务,请阅读并勾选我已阅读并同意内容,单击立即开通,开通服务。
  3. (可选)左侧导航栏单击服务-函数,在新建函数后的下拉框中选择新建服务,根据界面提示配置参数后,单击创建创建一个服务。
    其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。
    说明 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
  4. 创建服务成功后,在服务-函数页面单击新建函数,并使用事件函数方式创建函数。
  5. 设置时间同步函数的基础管理配置参数。
    参数 描述
    所在服务 选择已创建的EdgeFC服务。
    函数名称 设置为syncNetworkTime
    运行环境 设置函数的运行环境,此示例中选择nodejs8
    函数入口 使用默认值index.handler
    函数执行内存 设置为512 MB。
    超时时间 设置为10秒。
    参数 描述
    所在服务 选择已创建的EdgeFC服务。
    函数名称 设置为syncNetworkTime
    运行环境 设置函数的运行环境,此示例中选择nodejs8
    函数入口 使用默认值index.handler
    函数执行内存 设置为512 MB。
    超时时间 设置为10秒。
    实例并发度 保持默认值。

    其余参数的值请根据您的实际需求设置,也可以不设置。详情请参见函数计算

    确认函数信息后,单击完成

  6. 创建函数完成后,系统自动跳转到函数详情页面。请在代码执行页签下选择代码包上传,单击选择文件,上传步骤1中下载的syncNetworkTime-code.zip代码包,然后单击保存
    代码包上传成功后,您可在在线编辑框中查看源码。在线编辑函数

二、分配函数到边缘实例

  1. 登录边缘计算控制台
  2. 在左侧导航栏单击应用管理
  3. 参考函数计算应用内容,使用本文上方步骤一中已创建的函数,创建函数计算类型的边缘应用。

    应用信息参数说明如下:

    参数 描述
    应用名称 设置您应用的名称,例如syncNetworkTime
    应用类型 选择函数计算
    地域 选择您创建的服务所在的地域。
    服务 选择EdgeFC服务。
    函数 选择syncNetworkTime函数。
    授权 选择AliyunIOTAccessingFCRole
    应用版本 设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。

    函数配置说明如下:

    参数 描述
    启用默认配置 选择
    运行模式 运行模式有两种。此处选择持续运行模式。程序部署后会立即执行。
    超时限制(秒) 函数收到事件后的最长处理时间,此处使用默认值5秒。如超过该时间函数仍未返回结果,该函数计算程序将会被强制重启。
    定时运行 单击开关按钮,打开定时运行,文本框中填入* * * * *。表示该函数会被定时触发运行,每分钟执行一次。Cron表达式详细信息请参见CRONTAB 网页内容。
    注意 若您搭建的环境是专业版(LE Pro)环境,则网络时间同步助手需要修改宿主机的系统时间,因此在容器配置中,是否启动特权模式选择 。详细的参数说明请参见“函数计算应用”章节中的容器配置

    其余参数无需配置。

  4. 左侧导航栏单击边缘实例
  5. 在本文“前提条件”中完成的边缘实例右侧,单击查看
  6. 实例详情页面边缘应用页签,单击分配应用
  7. 将已创建的时间同步函数syncNetworkTime分配到边缘实例中,单击关闭

三、部署边缘实例

  1. 实例详情页面,单击右上角部署后在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
    您可以通过单击部署详情来查看部署进度及结果。
  2. 实例部署成功后,在网关上执行date命令查看系统的本地时间。此时网关的系统时间应该和网络时间一致。

至此您已经完整地体验了使用边缘函数计算实现网络时间同步的功能。