Linux实战部署系列之NTP服务器

在上文Linux系统安装后的基础优化-基于CentOS(5.8/6.4)中  ,我们提到了如何定时自动更新服务器时间。同时也提到了,当内网机器数量巨大时,如果都去公网ntp服务器更新时间是会有延时。当然,这也不是仅仅是部署ntp服务器的唯一意义。

在生产环境中,当内网部署了集群时,我们会发现时间对于定位问题发生的先后和原因是非常重要的;而且很多时候,作为提供数据应用的服务器都不能直接连通互联网,此时,我们就需要在内网部署一台专用于时间同步的机器了,这样,服务器通过局域网对ntp进行时间同步即可。

本篇将带领大家先了解一下时间的相关概念和ntp的一些常识。

一、时间和时区
地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便。因此,为了克服时间上的混乱,在1884年华盛顿的一次国际经度会议上,把全球划为了24个时区(东、西各12个时区),规定了格林威治时间(GMT)为0时区时间。而我国首都北京则为东8区,并且我国也将此时间作为全国统一时间,即为北京时间。因此,也就有了我们日常所说的时间的标准了。我们可以理解为,时间是基于时区给出的定义。
然而,我们在计算机中经常看到的是(UTC+08:00)。UTC是英文Coordinated Universal Time的缩写,翻译为协调世界时。而UTC+08:00则代表北京为东8区。因此可想而知UTC +00:00即为格林威治时间。
为什么要提这些呢?
第一,不论我们通过哪种渠道来更新系统的时间,通常公共ntp服务器只会给我们UTC +00:00的时间值,而不是我们当前时区的时间值,因为它也不知道我们在呢啊,所以当我们在安装系统的时候,选择时区那一步非常重要。
第二,我国是有夏令时的,也许哪天就会拨快1小时,让你从东8区变成东9区。当然,到时候还会再拨慢回来的。此时,如果我们设置了正确的时区,当需要改变时间的时候,系统就会自动替我们做出调整。

二、linux的时区
在安装linux的时候,有一步是让你选择时区的,还记得吧。那么如果我们想更改时区,或者说安装的时候设置错了,怎么办呢?不用担心!因为在linux下glibc已经提供给我们了许多编译好的timezone文件,并且把他们存放在了/usr/share/zoneinfo目录下,这里面基本涵盖了大部分的国家和城市。
[root@c64ntp ~]# ls /usr/share/zoneinfo/
Africa      Canada  GB        Indian    Mexico    ROC        Zulu
America    Chile    GB-Eire    Iran      Mideast  ROK        iso3166.tab
Antarctica  Cuba    GMT        Israel    NZ        Singapore  posix
Arctic      EET      GMT+0      Jamaica    NZ-CHAT  Turkey    posixrules
Asia        EST      GMT-0      Japan      Navajo    UCT        right
Atlantic    EST5EDT  GMT0      Kwajalein  PRC      US        zone.tab
Australia  Egypt    Greenwich  Libya      PST8PDT  UTC
Brazil      Eire    HST        MET        Pacific  Universal
CET        Etc      Hongkong  MST        Poland    W-SU
CST6CDT    Europe  Iceland    MST7MDT    Portugal  WET

当我们想查看某个时区的时间时,我们可以用zdump命令
[root@c64-client ~]# zdump Cuba
Sat Nov  2 08:42:13 CDT 2013    #古巴的时间已经出来了

可是当我们想更改时区的时候怎么办呢?
1、修改/etc/localtime文件
/etc/localtime文件定义了我们所在的本地时区,我们可以通过从/usr/share/zoneinfo/下复制我们需要的时区文件去替换/etc/localtime来达到更改时区的目的,例如,这里我们将时区更改为Cuba的时区
123 [root@c64-client ~]# /bin/cp /usr/share/zoneinfo/Cuba /etc/localtime
[root@c64-client ~]# date
Sat Nov  2 08:44:49 CDT 2013          #时区已经更改为了Cuba时区

当然,我们也可以用软连接的方法来进行时区更换,这次我们更换为Canada的时区
[root@c64-client ~]# ln -sf /usr/share/zoneinfo/Canada /etc/localtime
[root@c64-client ~]# date
Sat Nov  2 12:46:54 UTC 2013    #这样刚才Cuba的时区就又变成了Canada的时区了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/22db26488bf6020e227d7bce54a9f009.html