内网时间同步 ,NTP服务器架设及客户机设置

应用背景:

多台机器协作的分布式系统中,要求严格的时间同步。例如,在以ROS机器人为平台构建的系统中,机器人上搭载树莓派,master服务器使用PC机。ROS的特性使得系统不同的组件可以运行在不同的机器上,彼此通过网络通信,信息之间的时间戳至关重要。

树莓派上没有电池,掉电期间时间是静止不动的,需要通过NTP服务校准。但有时整个系统没有连接互联网,时间无法同步,造成timeout的错误,类似于:

[ WARN] [1467770020.472781433]: Costmap2DROS transform timeout. Current time: 1467770020.4727, global_pose stamp: 1467770014.8758, tolerance: 0.3000
[ WARN] [1452889214.357923367, 182.402000000]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: . canTransform returned after 0.102 timeout was 0.1.

第一次遇见很难反应过来,其实是不同节点之间时间不同步的原因。

为了自动同步不同ROS节点之间的时间,在Master上建立NTP服务器,在从节点上添加该NTP服务器地址,并使用互联网NTP服务器作为备份。这样,在内网环境中,从节点开机后自动与主节点同步时间,在主节点下线时,可以切换到互联网ntp服务器校时。

设置NTP服务器:

在ubuntu系统中:

1. 安装ntp软件包

sudo apt-get install ntp

2. 配置ntp服务器 

sudo vim /etc/ntp.conf

 权限设定主要以restrict这个参数来设定,主要的语法为:
restrict IP mask netmask_IP parameter
其中IP可以是软体位址,也可以是 default ,default 就类似0.0.0.0
至于 paramter则有:
ignore:关闭所有的NTP 连线服务
nomodify:表示Client 端不能更改 Server 端的时间参数,不过Client端仍然可以透过Server 端來进行网络较时。
notrust:该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域
noquery:不提供 Client 端的时间查询
如果 paramter完全没有设定,那就表示该 IP (或网域) 没有任何限制

在本例中,允许网段192.168.123.0内的客户机通过本服务器同步时间,但不允许修改服务器时间。如下图所示

配置完成后,重启ntp服务。

service ntp restart

3. 防火墙允许ntp服务

sudo ufw allow ntp 

 

客户机设置NTP地址:

ntp同步的配置文件是 /etc/systemd/timesyncd.conf

sudo vi /etc/systemd/timesyncd.conf

修改[Time]标签下的NTP值,将本地NTP服务器地址和因特网NTP服务器地址都填在NTP上,用空格分隔。FallbackNTP依旧注释不填,因为填了NTP值会覆盖FallbackNTP. 

[Time]
NTP=192.168.123.101 ntp.ubuntu.com
#FallbackNTP=ntp.ubuntu.com

 

测试:

自动校准:

机器连内网,关机后断电一段时间,重启节点,刚开机时使用date查看系统时间,是不准的,过了几秒之后,与本地NTP服务器同步了时间,时间已经校准成功。

本地NTP服务器关机,树莓派连外网,重启之后依旧可以自己校时。

手动同步:

自动同步的频率较低,在100块钱的机器上时钟偏移有时候会很严重。这时也可以通过ntpdate命令手动同步时间。

ntpdate  <ntp_server_Address> 

Reference

1. How to change the time server for the _in built_ internet time in ubuntu 16.04 LTS?,

2. ubuntu搭建NTP服务器 

3. How to configure UFW to allow ntp to work?

4. 在 Linux 上使用 NTP 保持精确的时间,https://www.imooc.com/article/24397

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值