TIME: 2080630 BY: 王刚
一、需求的提出
1. 现有系统中的服务器均未连接到外部互联网,且内网环境中没有NTP服务器;
2. 运维过程中发现服务器之间时间不同步,为避免因为时间同步问题出现的系统异常,现需要在内网中搭建一台NTP服务器。
二、现有环境介绍
1. 现有内网环境为封闭的环境,无法连接到外部互联网;
2. 现服务器有Windows Server(2003、2008)、LinuxServer(NeoKylin 、CentOS);
3. 部分服务器运行在VM上,通过 vcenter管理。
三、NTP服务建思路计划(C/S架构)
1. 在一台Linux服务器上安装NTP提供时间同步服务;
2. 其他Linux应用服务器亦需要安装NTP作为客户机,同步NTP服务器提供的时间;
3. Windows客户机通过修改时间服务器地址,同步NTP服务器提供的时间;
4. 为NTP服务器配置指定的域名,然后通过DNS解析NTP服务器的域名来实现时间同步。例如:time.windows.com-->NTP服务器
四、NTP服务器配置要求
1. 硬件配置要求:低配置服务器即可,但最好是物理机,避免出现宿主机与虚拟机之间时间互相同步的异常现象;
2. 防火墙配置要求:由于ntp服务需要使用到UDP端口号为123,所以当系统的防火墙(iptables)启动的情况下,必须开放UDP端口号123
[root@node10 ~] iptables -I INPUT -p udp -m udp --sport 123-j ACCEPT
#对外开放123端口
五、实施步骤
1、NTP Server端配置步骤
1) 首先NTP Server无法连接到互联网,我们要为其手动配置准确的时间(如果有条件可以购买硬件NTP服务器,来确保时间来源准确)
[root@node10 ~] date -s '2018-06-30 01:01:01'
#2018-06-30 01:01:01为将要设定的时间
[root@node10 ~] hwclock -w
#设定好系统时间后,把准确的系统时间同步到本机硬件
2) 一般Linux安装的时候默认已安装NTP服务,安装前检查是否已安装
[root@node10 ~]# rpm -qa|grep ntp
ntpdate-4.2.6p5-5.el6.x86_64
ntp-4.2.6p5-5.el6.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
3) 如果没有安装,则执行以下步骤进行安装
[root@node10 ~]#yum -y install ntp
4) 备份默认配置文件,修改配置文件注释默认server,配置本机为时间同步服务器,为其他客户机提供时间同步服务
[root@node10 ~]# cp /etc/ntp.conf{,.back}
[root@node10 ~]# vim /etc/ntp.conf
...
#内网环境中,注销默认Server
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
#配置同步本地硬件时间,在不联网的情况下把本地时间作为时间同步来源
server 127.127.1.0# local clock
fudge 127.127.1.0 stratum 10
#配置客户端授权,给指定的客户端设置访问NTP Server的权限
restrict 192.168.4.0 mask 255.255.255.0 nomodify notrap
....
5) 其他授权配置参数:
ignore | 拒绝所有类型的ntp连接 |
nomodify | 客户端不能使用ntpc与ntpq两支程式来修改服务器的时间参数 |
noquery | 客户端不能使用ntpq、ntpc等指令来查询服务器时间,等于不提供ntp的网络校时 |
notrap | 不提供trap这个远程时间登录的功能 |
notrust | 拒绝没有认证的客户端 |
nopeer | 不与其他同一层的ntp服务器进行时间同步 |
6) 启动NTP服务,并添加为开机启动项。如果有防火墙,需要开放udp的123端口
[root@node10 ~]# service ntpd start #启动ntpd时间服务器
[root@node10 ~]# chkconfig ntpd on #开机自启动
2、NTP在Linux Client端的配置步骤
1) Linux客户端安装NTP,一般都已默认安装。如果没有安装则执行以下步骤安装NTP
[root@node11 ~]# yum -y install ntp
2) 备份默认配置文件,修改配置文件注释默认server,配置已搭建的NTP Server为本机的时间同步服务器
[root@node11 ~]# cp /etc/ntp.conf{,.back}
[root@node11 ~]# vim /etc/ntp.conf
...
#内网环境中,注销默认Server
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
#使用本地搭建的NTP Server同步时间
server 192.168.4.10 iburst minpoll 3maxpoll 4
#minpoll 3表示2的3次方,也就是最短8秒钟后主动与上层NTP服务器同步一次,maxpoll 4表示2的4次方,也就是最长16秒钟后主动与上层NTP服务器同步一次.
3) 启动ntp服务,并添加为开机启动项
[root@node10 ~]# service ntpd start #启动ntpd时间服务器
[root@node10 ~]# chkconfig ntpd on #开机自启动
4) 测试NTP Client与NTP Server之间时间同步情况
[root@node11 ~]# ntpdc -c loopinfo
offset: 0.000000 s #数字越小,时间同步效果越好
frequency: 0.000 ppm
poll adjust: 0
watchdog timer: 56 s
[root@node11 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.4.10 LOCAL(0) 11 u 61 64 7 0.403 -10.194 0.025
#这里出现*192.168.4.10表示NTP Client与NTP Server自动同步时间#192.168.4.10前面的*表示正在使用的NTP Server,如果配置多个,还有出现+开头的,表示候选的NTP Server
5) 当ntp自动同步有问题时,可以在crontab中加入如下命令(每5分钟同步一次时间)
[root@node11 ~]# crontab -e
*/5****/usr/sbin/ntpdate -u 192.168.4.10
3、NTP在Windows Client端的配置步骤
1) Windows Server(2003、2008)设置同步NTP服务器时间
2) 运行services.msc启用Remote Procedure Call (RPC)、Windows Time服务;
3) 运行gpedit.msc修改组策略管理模板->系统->Windows时间服务,首先启用全局配置,
然后配置NTP客户端,修改NtpServer为我们上面配置的NTP服务器IP或者域名。
注意:几个重要参数介绍
specialPollInterval:轮询间隔,单位为秒,我设置为10分钟,即600秒。
type:NTP
4、NTP在 VMClient端的配置步骤
虚拟机的配置可以通过在vcenter控制台配置宿主的时间同步设置实现,vmtools会把宿主的时间同步到虚拟机
六、后期巡检方法
1、Linux 客户端巡检方法
执行ntpq -p关注offset和jitter的值,其值越小越好
[root@node11 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.4.10 LOCAL(0) 11 u 61 64 7 0.403 -10.194 0.025
#这里出现*192.168.4.10表示NTP Client与NTP Server自动同步时间#192.168.4.10前面的*表示正在使用的NTP Server,如果配置多个,还有出现+开头的,表示候选的NTP Server
2.Windows客户端巡检方法
手动检查时间同步情况
七、存在的问题
1、没有准确的时间来源,Linux NTP服务器运行一段时间后,可能会出现所有服务器的时间与外部准确时间不一致的情况(整体变快或者变慢)。
后期解决方案:这个是所以隔离网络共同存在的问题,可以通过购买硬件NTP服务器来解决(3-5万)
2、NTP Client时间与NTPServer之间时差过大时,NTP Client不会同步NTPSever提供的时间。这是为了避免时差过大,直接调整后影响系统进而出现故障。
后期解决方案:Linux NTP Client在配置文件里面添加tinkerpanic 600这句话的意思是在时间差大于600秒的情况下,ntpd进程自动关闭,ntpd退出时会向/var/log/messages中写入log。
在时间差过大时,应该由用户手动设置系统时间或者调用ntpdate命令,这样能避免因为时间跳变出现的问题。