同步时间
配置文件中/etc/chrony.conf
里面指定:
server master iburst
keyfile /etc/chrony.keys
commandkey 1
allow all
在/etc/chrony.keys文件中添加:
1 password
将chrony.conf以及chronoy.keys同步scp到各个slave节点;
chronyc是客户端(c结尾代表客户端),在启动客户端之前要启动deamon,即service chronyd restart;
chronyc -a代表自动从配置文件中读取登录信息;
client指令:
accheck master: 代表校验是否能够和指定的服务器通信,501是代表用户名密码验证出错;209代表allow deny,需要在配置文件中增加allow;208返回正常;
clients: 罗列出已经和server通信的客户端
activity: 主机是否可用
makestep: 强制进行同步
NTP
到官网上面下载ntpd之后,.configure && make && make install;
到/usr/local/sbin/下面就可以看到ntp开头的一堆内容;
首先要明白NTP在局域网内部搭建模式是两种:server+client;
Client/Server模式
server配置
对于server而言,需要启动ntpd服务,并且配置/ect/conf
配置内容:
server,如果是本机只需要添加一个
server 127.127.1.0 # 同步服务器的地址,对于NTP Server这个就是本机地址,最好127.0.0.1不用因为配置文件中默认是将这个地址屏蔽掉
fudge 127.127.1.0 stratum 2 # 设置指定Server的层级,对于Server这个值应该比较小,代表是等层的服务器
Client 配置
对于client而言,不需要启动ntpd服务,但是需要通过crontab方式来进行定时更新。编辑/etc/crontab:
30 8 * * * root /usr/sbin/ntpdate NTP Server IP
ntptime来查看同步情况,如果是返回OK证明同步通信OK
层级模式
第二种模式是层级,即使client也作为一个NTPServer只不过没有下级节点而已,这种设计就可以所以的节点启动NTP服务,只要是配置文件中配置好上级节点即可(NTP Server上级配置127.127.1.0)。
第二种模式部署比较简单,但是其实在客户端,它将会针对NTP专门启动一个Daemon进程来做定时任务,对于服务器设置有洁癖者而言,是无法容忍的,于是很多管理员都是建议使用第一种方式。
Trouble Shooting
the NTP socket is in use, exiting
NTP服务占用端口123,但是发现有的时候,即使关闭了NTP服务,尝试使用ntdate来进行同步的时候仍然有问题,报异常:the NTP socket is in use, exiting,这个需要通过lsof或者netstat来看一下都有哪些进程在占用123,进行删除。
ntpd怎么也起不来了,ps aux | grep ntpd也没有该进程;因为ntpd占用的是123端口通过如下指令:
netstat -lanp | grep ':123'
发现被chrony给占用了;我现在知道为什么chrony和ntpd不能共存的原因了;停掉chrony服务,关掉开机启动,再启动ntp,great!
ntpdate异常
运行./ntpdate 报错:ntpdate[106761]: bind() fails: Permission denied,这是因为需要管理员权限执行,前面加上sudo即可;
运行./ntpdate 报错:ntpdate[18753]: the NTP socket is in use, exiting,这是因为有nptd进程存在;通过ps aux | grep ntpd来进行发现,然后杀死进程;
客户端运行./ntpdate 报错:ntpdate[96947]: no server suitable for synchronization found,使用./ntpdate -d server指令进行跟踪,发现问题是Server dropped: strata too high,strata是stratum的复数,级别太高了,继续看输出发现stratum达到了15,stratum用于调整NTP的层级,于是修改了服务器端的ntp.conf的配置文件,增加了fudge master stratum 0,代表server中指定的master服务器是顶级服务器(0);与此关联的,发现此问题的时候,在服务器端敲入ntpq -p的时候,将会接收到:No association ID's returned异常
有的时候通过-d跟踪没有任何异常,但是就是返回no server suitable for synchronization found,那可能是timer server本身需要再等待一会(比如刚刚启动,需要初始化一段时间)
添加日志
设定ntpd日志,在/etc/ntp.conf中添加一行:
logfile /var/log/ntp.log
启动ntpd,观看日志
inappropriate address 192.168.156.104 for the fudge command, line ignored;
这是因为不能直接fudge时间服务器,而是fulge127.127.1.0,增加一个server,然后fudge那个server问题解决;
NTP工具
ntpq -p就是现实和主机同步情况,查看watch ntpq -p可以一直监控变化
ntpdate一定要后面跟着server地址;ntpdate是指和指定的时间服务器进行同步;
ntpstat来查看同步效果
server 127.127.1.0
fudge 127.127.1.0 stratum 10