1. 安装ntp时间同步工具
yum -y install ntp ntpdate #安装ntpdate时间同步工具 ntpdate cn.pool.ntp.org #设置时间同步 hwclock --systohc #将系统时间写入硬件时间 timedatectl #查看系统时间
一般来讲,经过这几部之后,应该就OK了。关于时间服务的网址,可以到http://www.ntp.org.cn/pool.php查阅.
有些时候,在执行ntpdate cn.pool.ntp.org的时候会出现下面的错误:
no server suitable for synchronization found
可以使用ntpdate -d {ip or url} 来查看调试信息,如果出现类似下面的信息,说明服务器连接不上,
transmit(192.168.30.22) transmit(192.168.30.22) transmit(192.168.30.22) transmit(192.168.30.22) transmit(192.168.30.22) 192.168.30.22: Server dropped: no data server 192.168.30.22, port 123 ..... 28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
解决办法之一为:
ntpq -c version #查看ntp版本
如果版本是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误,官网说明
The behavior of notrust changed between versions 4.1 and 4.2.
In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".
In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd
解决:
sudo vim /etc/ntp.conf
把notrust去掉。
如果这个还不能解决,就只能自己选择集群中一台机器为ntp时间服务器,其他机器以此机器的时间为基准来进行同步了。
2. 搭建ntp服务器进行集群时间同步
本节以两台服务器为例
192.168.1.101
192.168.1.102
本节以192.168.1.101作为ntp服务器,192.168.1.102作为客户端来同步服务器的时间, 在多节点的集群中道理是一样的。
2.1 集群中所有机器安装ntp时间同步工具
sudo yum -y install ntp ntpdate #安装ntpdate时间同步工具
2.2 192.168.1.101时间同步服务器设置
启动时间同步服务器
sudo systemctl start ntpd #启动时间同步程序 sudo systemctl enable ntpd #允许时间同步程序开机启动
修改/etc/ntp.conf文件,添加server设置127.127.1.0为其自身
sudo vim /etc/ntp.conf
在public servers节下添加
server 127.127.1.0 #设置自己作为时间同步服务器
在access节下新增加一个restrict段为可以接受服务的网段,本例为192.168.0.0
restrict 192.168.0.0
如下图所示:
保存退出,并重启ntp系统服务
sudo systemctl restart ntpd
2.3 ntp同步客户端设置
本例中192.168.1.102为作为时间同步客户端来同步服务器的时间。在192.168.1.102中编辑/etc/ntp.conf
sudo vim /etc/ntp.conf
在server下面添加一个时间同步服务器地址,本例为192.168.1.101
server 192.168.1.101
如图:
在192.168.1.102中同步时间
sudo ntpdate 192.168.1.101 #如果需要查看调试信息,可以添加参数-d
2.4 所有节点设置ntp服务开启启动
sudo systemctl start ntpd #启动ntp服务
sudo systemctl enable ntpd #设置ntp服务开机启动
2.5 所有节点启动时间同步
sudo timedatectl set-ntp yes