RHCE系列之ntp服务器----实践篇

简介:

上篇Linux实战部署系列之ntp服务器----理论篇为大家介绍时间的相关概念和ntp的原理,本篇博文将带大家一起部署生产环境中实现简单的负载均衡和高可用的NTP服务器。

简易架构图:

045240212.png

环境:

1
2
3
4
5
CentOS6.4 x86_64
server-1 192.168.1.111 NTP服务器1
server-2 192.168.1.112 NTP服务器2
client  192.168.1.113 作为客户端的某台业务服务器
ntp-4.2.4p8-3.el6.centos.x86_64


一、ntp服务端

1、检查并安装ntp服务

1
2
3
[root@c64-ntp-1 ~] # rpm -qa|grep ntp   #如果出现下面两个就说明本机已经有了
ntpdate-4.2.4p8-3.el6.centos.x86_64
ntp-4.2.4p8-3.el6.centos.x86_64

如果没有,我们执行下面的命令进行安装

1
[root@c64-ntp- 1  ~]# yum install ntp -y

2、同步NTP服务器时间

由于NTP的限制,如果系统时间比正确的时间要快的话,NTP是不会帮你做调整的,而且当你的时间设置和正确的时间相差很大的时候,NTP会花上很长一段时间进行同步调整,因此鉴于此,我们需要先做一个同步。

首先我们要先确定好自己的时区,最好根据所在地点从新设置时区,本例以上海为例

1
2
3
[root@c64-ntp-1 ~] #/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime    #这样我们就将时区设置成上海了
[root@c64-ntp-1 ~] # date
Sat Nov  2 23:17:36 CST 2013      #可以看到我们的时区已经设置过来了

接下来就要向互联网上的NTP服务器进行时间同步了。这里你如果没有NTP服务器的地址,你可以到http://www.pool.ntp.org(NTP官网)去找离自己城市最近的NTP服务器。由于我用的是上海的地址,所以这里我将离上海最近的3个NTP服务器贴出来。

1
2
3
server 1.cn.pool.ntp.org
server 3.asia.pool.ntp.org
server 0.asia.pool.ntp.org

同步本机时间的命令是

1
2
3
4
[root@c64-ntp-1 ~] # /usr/sbin/ntpdate 1.cn.pool.ntp.org
  2 Nov 23:05:34 ntpdate[11560]: adjust  time  server 218.75.4.130 offset -0.114499 sec
[root@c64-ntp-1 ~] # /usr/sbin/ntpdate 1.cn.pool.ntp.org   #为了减少时延,我们最好执行两遍
  2 Nov 23:05:41 ntpdate[11561]: adjust  time  server 218.75.4.130 offset -0.111105 sec

3、配置NTP服务器

其实,此时我们用/usr/sbin/ntpd start 已经可以向客户端提供时间更新服务了。但是,这样是满足不了企业安全性需求的。下面将为大家讲解ntp的主配置文件设定。

1)解决NTP服务器校准时间时的传送延迟

使用driftfile参数设置: driftfile 文件名

用途:将与上级时间服务器联系时所花费的时间,记录在driftfile参数后面指定的文件内

注意:driftfile后面必须接完整的文件路径,不能是链接文件,并且必须要有ntpd守护进程可以写入的权限。

对应默认配置项:

1
driftfile  /var/lib/ntp/drift

2)权限的控制主要靠restrict这个参数

要的语法为:restrict IP mask 掩码 参数

IP规定了允许或不允许访问的地址(此处若为default,即为0.0.0.0所有ip),配合掩码可以对某一网段进行限制。

参数包括:

ignore:关闭所有NTP服务

nomodify:客户端不能修改服务端的时间,但可以作为客户端的校正服务器

noquery:不提供时间查询,即用户端不能使用ntpq,ntpc等命令来查询ntp服务器

nopeer:不与同一层的其他服务器进行时间同步

kod:kod技术可以阻止“kiss of death”包(一种DOS攻击)对服务器的破坏

notrap:不提供trap远端事件登陆的功能

notrust:客户端除非通过认证,否则指定的网段为不信任网段 #ntp4.2之后的版本,已经默认没有这个参数,如果你添加了,会报错的。

对应默认配置项:

1
2
3
4
restrict default kod nomodify notrap nopeer noquery   #默认对所有client拒绝所有的操作
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1    #允许本机地址的一切操作
restrict -6 ::1

3)用server这个参数设定上级时间服务器

语法为: server IP地址或域名 [prefer]

IP地址或域名即为该NTP服务器指定的上级NTP服务器。当指定多个NTP服务器时,使用prefer参数的服务器优先级最高,如果都没有使用prefer参数,那么服务器的优先级则按从上到下的顺序依次由高到低。在指定上层服务器后,至少15min才会与上层NTP服务器进行时间校对。

对应默认配置项:

1
2
3
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

下面我们要对配置文件进行精简和更改,更改之后的配置文件如下:

1
2
3
4
5
6
7
8
9
10
[root@c64-server-1 ~] # cat /etc/ntp.conf
driftfile  /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery notrust  #默认对所有client拒绝所有的操作
restrict 127.0.0.1    #允许本机地址的一切操作
restrict 192.168.1.0 mask 255.255.255.0 nomodify   #允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间
server 1.cn.pool.ntp.org  perfer    #指定该上级NTP服务器为最优先
server 3.asia.pool.ntp.org          #这个上级NTP服务器是在官网找到离上海最近的NTP服务器
server 0.asia.pool.ntp.org          #这里我们也可以用上海交大之类提供的公益性NTP服务器
includefile  /etc/ntp/crypto/pw
keys  /etc/ntp/keys

配置完成之后,我们就可以启动服务

1
2
[root@c64-ntp-1 ~] # /etc/init.d/ntpd start
Starting ntpd:                                             [  OK  ]

启动完成后,我们通过查看端口和进程来看服务是否真的起来了

1
2
3
4
5
6
7
8
9
[root@c64-ntp-1 ~] # netstat -lntup|grep ntp
udp        0      0 192.168.1.113:123           0.0.0.0:*                               11992 /ntpd   
udp        0      0 127.0.0.1:123               0.0.0.0:*                               11992 /ntpd   
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               11992 /ntpd   
udp        0      0 fe80::20c:29ff:fe06:9c22:123 :::*                                    11992 /ntpd   
udp        0      0 ::1:123                     :::*                                    11992 /ntpd   
udp        0      0 :::123                      :::*                                    11992 /ntpd   
[root@c64-ntp-1 ~] # ps -ef |grep ntp|grep -v grep
ntp      11992     1  0 02:17 ?        00:00:00 ntpd -u ntp:ntp -p  /var/run/ntpd .pid -g

加入开机启动项

1
2
3
4
5
[root@c64-ntp-1 ~] # echo '#ntp server boot configuration by sunsky in 20131020' >>/etc/rc.local
[root@c64-ntp-1 ~] # echo '/etc/init.d/ntpd start start' >>/etc/rc.local
[root@c64-ntp-1 ~] # tail -2 /etc/rc.local  #检查配置结果
#ntp server boot configuration by sunsky in 20131020
/etc/init .d /ntpd  start

四、负载均衡和高可用配置

为了保证实际生产环境中业务的可持续运作,一台NTP服务器有时间是不能满足需求了,因此这里我们需要做负载均衡和高可用,即平时分担两台NTP服务器的查询负载,即时一台NTP服务器挂掉,另外一台服务器还能照常提供时间同步服务。

由于上面我们已经配置出一台NTP服务器了,所以说这里我们只需要按照上面的部署方法,再部署一台即可。


五、客户端配置

1、测试时间同步

现在我们在客户端进行时间同步的测试,同时要注意将系统时间和硬件时间进行同步,同步命令可以用hwclock systohc 或者hwclock –w。

1
2
3
4
[root@c64-client /] # /usr/sbin/ntpdate 192.168.1.111&&hwclock -w
  3 Nov 03:50:34 ntpdate[19587]: adjust  time  server 192.168.1.111 offset -0.046270 sec
[root@c64-client /] # /usr/sbin/ntpdate 192.168.1.112&&hwclock -w
  3 Nov 03:50:48 ntpdate[19589]: adjust  time  server 192.168.1.112 offset -0.039505 sec

2、添加定时任务

因为我们不可能一直手动去同步时间,因此我们需要将同步时间命令添加到定时任务中去。由于我们启用了2台时间服务器,所以在客户端进行更新时间的定时任务设置时,我们就采用2台服务器每5分钟轮流更新的方式。

1
2
[root@c64-client ~]# echo  '*/5 * * * * /usr/sbin/ntpdate 192.168.1.111&&hwclock -w >/dev/null 2>&1'  >>/ var /spool/cron/root
[root@c64-client ~]# echo  '*/10 * * * * /usr/sbin/ntpdate 192.168.1.112&&hwclock -w >/dev/null 2>&1'  >>/ var /spool/cron/root

添加之后,别忘了用下面的命令查看结果哦。

1
2
3
[root@c64-client /] # crontab -l
* /5  * * * *  /usr/sbin/ntpdate  192.168.1.111&&hwclock -w > /dev/null  2>&1
* /10  * * * *  /usr/sbin/ntpdate  192.168.1.112&&hwclock -w > /dev/null  2>&1

确认无误之后,我们的部署就OK了!


到这里为止,我们的负载均衡和高可用的NTP服务器已经部署完成了。其中还有很多后期维护和故障的摆错,我将放到下一篇博文来讲解。因此,在本篇只要大家能按照这个部署下来,就已经很不错了。NTP服务器部署的过程很简单,它复杂就复杂在世面上可供大家参考的资料少,有些参数的效果也不是太好。一旦出错,就让人很郁闷头疼了。所以,关于NTP的一些细节概念一定要把握好。










本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1319520,如需转载请自行联系原作者

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
人工智能 Serverless 数据安全/隐私保护
云端服务器应用实践:函数计算X 通义千问快速部署 AI 个人助手应用
云端服务器应用实践:函数计算X 通义千问快速部署 AI 个人助手应用
324 2
|
2月前
|
监控 负载均衡 安全
幻兽帕鲁服务器搭建实践及优化经验分享
在多人在线游戏的世界里,一个稳定、高效的服务器是确保玩家获得流畅游戏体验的关键。最近,我亲自尝试了为“幻兽帕鲁”这款游戏搭建服务器,并在此过程中积累了一些宝贵的经验。今天,我就将这些经验分享给大家,希望能为同样热爱这款游戏的玩家们提供一些帮助。
83954 6
|
3月前
|
Linux Shell 开发工具
10分钟让你的Linux Shell终端变得更优雅,更高效——【Linux服务器下OhMyZsh+P10k安装实践】
10分钟让你的Linux Shell终端变得更优雅,更高效——【Linux服务器下OhMyZsh+P10k安装实践】
104 1
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
194 0
|
3月前
|
弹性计算 负载均衡 监控
幻兽帕鲁服务器部署实践体验
我的幻兽帕鲁服务器部署实践体验
81 1
|
3月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
43 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
13天前
|
Linux 数据安全/隐私保护
Linux基础与服务器架构综合小实践
【4月更文挑战第9天】Linux基础与服务器架构综合小实践
1242 8
|
4月前
|
缓存 关系型数据库 MySQL
MySQL调优之服务器参数优化实践
MySQL调优之服务器参数优化实践
326 0
|
20天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。