一次证书过期,才发现三台服务器的时间不同步
上周三早上九点多,客服群里有人问网站为什么打不开了。我点进去看,浏览器直接报证书无效,红色的一大片。
第一反应是证书过期。登上去一查,到期日还有两个多月,不可能。
那问题就在时间上。我在服务器上敲 date,显示的时间比我的手机快了三天多。三天听起来不多,但证书校验是拿双方时间做比对的,服务端时间一旦跑到证书有效期的外面,客户端就认为这张证书没生效。
再看同一台机器上的另外两个服务,时间倒是对的。三台机器里只有一台跑偏。查了原因:这台机之前为了省事手动改过系统时间,后来没把时间同步服务打开,也没设成开机自启。机器重启一次之后就再没同步过,一天偏几十秒,攒了大半年就是三天。
修的时候我没直接改时间,先看同步服务装没装。装了就 systemctl enable --now 打开,没装就装 chrony,改一下配置文件指到内网的 ntp 源,然后 restart。之所以不敢直接 date -s 改,是因为那台机上跑着好几个会写日志的服务,时间一突然往前跳,日志顺序全乱,事后查问题对不上。
改完敲 chronyc sources,看那个带星号的源有没有响应,offset 是不是降到了毫秒级。这一步比看 date 有效,date 只告诉你现在几点,不告诉你同步没同步。
这件事之后我做了两件事。一是把所有机器的时间同步状态拉了个清单,开机自启这项逐台确认,包括那些一年都不重启一次、平时根本想不起来的机器。二是把证书到期时间加进了监控,提前三十天提醒。
后来跟同事聊,他说他们公司的监控只盯了磁盘和 CPU,时间从来没管过。其实时间不同步的后果比想象中多:日志时间戳对不上、分布式服务的票据校验失败、定时任务提前或延后触发、数据库主从复制出问题。这些故障报出来的错都跟时间八竿子打不着,查起来特别费劲。
现在我新开一台机器,第一件事就是确认时间同步有没有开。这个习惯不花什么时间,但省下的可能是一整个上午。
- 点赞
- 收藏
- 关注作者
评论(0)