自动化安装 NTP服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化安装 NTP服务器相关的知识,希望对你有一定的参考价值。

1 概述

linux服务器在提供服务时,要和其他机器进行请求的交互,实际生产环境中,可能因为时间不同步,导致了服务异常。本文将接受NTP服务器的相关配置和 概念,通过脚本实现一键安装NTP服务器和客户端

将服务器的本地机器的时间设置为NTP服务器,读者可以自己将server调整为网络上的时间服务器

2 服务器的配置

服务器端要安装包 ntp包

命令如下

yum -y install ntp

服务器端需要修改配置文件命令如下

vim  /etc/ntp.conf

driftfile /var/lib/ntp/drift
restrict 192.168.32.0 mask 255.255.255.0 nomodify 
#允许哪些机器同步
restrict 172.18.0.0  mask 255.255.0.0  nomodify
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0  
#将该服务器的本地时间作为ntp server的时间,如果其他客户端同步,将同步这台服务器的时间,这里如果要同步公网上的服务器,可以写上公网的服务器,
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

重启ntpd:

service ntpd restart

等五六分钟,让ntpd完成自身的时间同步

设置开机启动

chkconfig ntpd on

验证

ntpq  -p


技术分享

这里st为 stratum,范围是0--15,如果为16就是错误的

关于restrict格式如下:

restrict [ip] mask [mask_number] [parameter]

其中parameter如下:

ignore:居然所有类型的ntp连接

nomodify:不允许客户端修改服务器的时间参数,但是允许客户端透过这部主机进行时间校验。

noquery:不允许客户端进行时间校验。

notrap:不提供trap时间登录

notrust:拒绝没有认证的客户端

3 客户端同步时间

客户端需要停用ntp服务,否则无法运行ntpdata  服务器地址这个命令 来同步时间,同步的时候会提示ntp被使用中

停用服务命令如下

service ntpd stop

同步服务器的时间,如本例子中服务器的ip是192.168.32.61

ntpdate 192.168.32.61

设置定时同步

使用cron或修改crontab文件定期向NTP服务器更新时间

语句如下

crontab -e
* 10 * * *  /usr/sbin/ntpdate 192.168.32.61;/sbin/hwclock -w   
#每天十点执行同步命令

4  自动化安装脚本

#!/bin/bash
#
#******************************************************************************
#Author:              Sunny
#Date:                2017-09-08
#FileName:            install_ntp.sh
#version:              1.0
#Your change info:
#Description:          For install ntp by  auto
#Copyright(C):        2017  All rihts reserved
#*****************************************************************************
is_bakfile(){
[ -e /root/bakfile ] || mkdir /root/bakfile
}
min_time () {
time=`date +%Y%m%d%H%M`
}
is_bakfile
min_time
[ -e /etc/ntp.conf ] &&mv /etc/ntp.conf /root/bakfile/ntp.conf."$time".bak
read -p "Please input your choice,server or client: " choice
if ! $(date | grep CST &>/dev/null);then
[ -e /etc/localtime ]&& mv /etc/localtime /root/bakfile/localtime."$time".bak
ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
fi
case $choice in
server)
echo "#################################################################################################"
echo "if your server is virtual host,suggest you will use its own time to  synchronization host time."
echo "you should also install vmware tools in the server host in order  use phisical  host  time to syn your virtual time,you need to start time ntp option in vmware"
echo "If your want to user common time from internet  to syn server host time,you  should make sure your host can access to the common time server from internet.You just replace server ip which line in line "server 127.127.0.1" "
echo "start to config ntp server"
echo "###################################################################################################"
echo
echo
rpm -q ntp &>/dev/null || yum -y install ntp &>/dev/null
cat >>/etc/ntp.conf<<eof
driftfile /var/lib/ntp/drift
restrict 192.168.32.0 mask 255.255.255.0 nomodify
restrict 172.18.0.0  mask 255.255.0.0  nomodify
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
eof
service ntpd restart&>/dev/null || echo "Something wrong when restart ntp service"
netstat -ntlup | grep ntpd &>/dev/null && echo "ntpd is running " || echo "Something wrong happened when start ntp,please check"
chkconfig ntpd on
echo "now it use cmd "ntpq -p",if you see st is what you set in  stratum and less than 16,ntp server is now now ,but it need few minutes to work normal."
ntpq  -p
echo "hint: to syn client host time after 3 minites"
;;
client)
netstat -ntlup | grep ntpd &>/dev/null && service ntpd stop&>/dev/null
read -p "Please input which server to syn(default:192.168.32.61): " ip
if [ -z "${ip:-}" ];then
ip=192.168.32.61
fi
ntpdate $ip
#set auto syn schedule
grep ntpdate /etc/crontab &>/dev/null && echo "already set auto ntp schdule,please check" || echo "* * * * * root /usr/sbin/ntpdate 192.168.32.61;/sbin/hwclock -w">>/etc/crontab
;;
*)
echo "Your choice is wrong,please check"
;;
esac
unset ip
unset time
exit

5 附录

5.1 EDT 和 CST区别和设置

要检查各个服务器时间格式,EDT或者是CST,在中国我们将服务器的时间格式调为CST

EDT:指美国东部夏令时间,波士顿、纽约市、华盛顿哥伦比亚特区,都在这个时区内,跟北京时间有12小时的时差,晚12小时。

CST:可以指下面两种:

1. 美国中部标准时间(西六区,-6:00),中国是东八区(+8:00),北京时间比美国中部标准时间早14个小时。3:45 PMCST是北京时间凌晨1:45。

2. 中澳大利亚标准时间(+10:30),中国是东八区(+8:00),北京时间比中澳大利亚标准时间晚2个半小时。3:45 PMCST是北京时间下午上午5:45。

将系统的时间格式调整为CST的命令如下两条

[[email protected] ~]# mv /etc/localtime /etc/localtime.bak

[[email protected] ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

/usr/share/zoneinfo/Asia/Shanghai  为源文件    /etc/localtime 新创建的链接

如果要把CST 时间调整为 EDT,使用如下语句

[[email protected]localhost America]# mv /etc/localtime /etc/localtime.bak

[[email protected] America]#ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

5.2 参考文献

本文的编写参考了以下的文章,读者如果要获取更多详细信息,建议参考如下内容

http://blog.csdn.net/love_life2011/article/details/8067652

http://michael2017.blog.51cto.com/151632/1440488

http://www.cnblogs.com/13188196we/archive/2012/10/20/ntp.html

http://www.linuxidc.com/Linux/2012-08/67223.htm

5.3 相关授时服务器ip

127.127.1.0    本机的ip

210.72.145.44  (国家授时中心服务器IP地址)

ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)

s1a.time.edu.cn 北京邮电大学

s1b.time.edu.cn 清华大学

s1c.time.edu.cn 北京大学

s1d.time.edu.cn 东南大学

s1e.time.edu.cn 清华大学

s2a.time.edu.cn 清华大学

s2b.time.edu.cn 清华大学

s2c.time.edu.cn 北京邮电大学

s2d.time.edu.cn 西南地区网络中心

s2e.time.edu.cn 西北地区网络中心

s2f.time.edu.cn 东北地区网络中心

s2g.time.edu.cn 华东南地区网络中心

s2h.time.edu.cn 四川大学网络管理中心

s2j.time.edu.cn 大连理工大学网络中心

s2k.time.edu.cn CERNET桂林主节点

s2m.time.edu.cn 北京大学

本文出自 “自学linux” 博客,请务必保留此出处http://ghbsunny.blog.51cto.com/7759574/1963847

以上是关于自动化安装 NTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

配置ntp服务

利用ntp自动同步时间

Linux系统自动更新时间

PowerCLi 批量配置NTP

linux系统初始化--​配置ntp自动更新时间

PowerCLi 通过vCenter批量同步所有的esxi主机NTP时间