1.方案背景:
在分布式系统或多服务器集群中,必须建立统一的时间同步机制。服务器间的时间不一致会破坏各类依赖时间交互逻辑,例如导致日志时序混乱、事务顺序错乱、证书验证失败等,从而引发一系列难以排查的不可预知故障。
2.NTP同步网络拓扑图:
3.同步方案
可提前咨询医院信息科是否有时间同步服务,如果有且业务服务能直接联通,则只用执行第6步配置好服务器地址(将其中OMS服务器地址改为医院时间同步服务器地址)即可。
1. 在OMS服务器下载ntp服务镜像,命令行如下:
docker pull 219.139.241.229:8844/library/ntp:latest
2. 运行ntp服务,并监听端口,命令行如下:
docker run -d --name ntp --restart=always -p 123:123/udp -e NTP_SERVERS="127.127.1.1" cturra/ntp:latest
3. OMS服务器防火墙开放123端口,命令行如下:
# 开放 UDP/123 firewall-cmd --permanent --add-port=123/udp# 重新加载规则 firewall-cmd --reload# 验证是否已放行 firewall-cmd --list-ports | grep 123/udp
4. OMS本机验证ntp服务是否正常启动,命令如下:
# 验证NTP服务是否正常提供服务 ntpdate -q 127.0.0.1
5. SPD服务器验证udp网络是否通畅,命令行如下:
# 验证网络是否通畅 nc -uzv 这里填写OMS服务器地址 123# 验证是否正常访问OMS的NTP服务 ntpdate -q 这里填写OMS服务器地址
6. 检查SPD服务器chronyd同步时间服务,是否正常,并添加OMS服务的ntp配置,命令行如下:
systemctl status chronyd //确认服务状态 systemctl restart chronyd //重启服务 cp /etc/chrony.conf /etc/chrony.conf.bak //备份配置 echo "server 这里填写OMS服务器地址 iburst" >> /etc/chrony.conf //添加OMS的NTP服务 systemctl restart chronyd //重启服务 chronyc sources -v //确认服务是否生效
7. 检查时间是否同步成功,命令如下:
date "+%Y-%m-%d %H:%M:%S"
检查多台服务器时间一致即可。
8. 将OMS服务的chronyd同步互联网云服务器(根据网络情况可选),在OMS服务器执行如下命令:
systemctl status chronyd //确认服务状态 systemctl restart chronyd //重启服务 cp /etc/chrony.conf /etc/chrony.conf.bak //备份配置 echo "server ntp1.aliyun.com iburst" >> /etc/chrony.conf //添加阿里云的NTP服务 echo "server ntp2.aliyun.com iburst" >> /etc/chrony.conf //添加阿里云的NTP服务 echo "server ntp3.aliyun.com iburst" >> /etc/chrony.conf //添加阿里云的NTP服务 systemctl restart chronyd //重启服务 chronyc sources -v //确认服务是否生效
如果阿里云NTP地址不通,需和医院信息科确认医院是否内网有NTP服务,有则配置医院内网的NTP服务地址,或考虑开通阿里云白名单。