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

前提条件

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

背景信息

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

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

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

一、创建时间同步函数

  1. 下载时间同步函数syncNetworkTime-code.zip。该函数会自动和NTP服务器同步网络时间。
  2. 登录函数计算控制台
    如尚未开通该服务,请阅读并选中我已阅读并同意,单击立即开通,开通服务。
  3. (可选)在左侧导航栏单击服务及函数,在服务及函数页面服务列表区域,单击新增服务,创建一个服务。
    其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。
    说明
    • 若您首次在函数计算中创建服务,请根据配置向导配置参数。
    • 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
  4. 创建服务成功后,在服务与函数页面的EdgeFC区域,单击新增函数
  5. 新建函数页面,单击事件函数区域中的配置部署
  6. 设置时间同步函数的基础管理配置参数。
    参数 描述
    所在服务 选择已创建的EdgeFC服务。
    函数名称 设置为syncNetworkTime
    运行环境 设置函数的运行环境,此示例中选择Node.JS 8.x

    上传代码右侧选择上传代码包,单击上传代码,上传步骤1中下载的syncNetworkTime-code.zip代码包。

    函数入口 使用默认值index.handler

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

    确认函数信息后,单击新建完成操作。

  7. 创建函数完成后,系统自动跳转到函数详情页面。您可在代码执行页签的代码执行管理区域下,选中在线编辑单选框,查看源码。
    在线编辑函数

二、分配函数到边缘实例

  1. 登录边缘计算控制台
  2. 在左侧导航栏单击应用管理
  3. 使用已创建的syncNetworkTime函数,创建函数计算类型的边缘应用。具体操作,请参见函数计算应用

    应用信息参数说明如下:

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

    函数配置说明如下:

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

    其余参数无需配置。

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

三、部署边缘实例

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

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