Linux集群配置离线ntp时间同步服务

集群中时间不同步有可能会让大数据的应用程序运行混乱,造成不可预知的问题,比如Hbase、mongodb副本集等,Hbase当时间差别过大时就会挂掉,mongodb如果副本时间过快,会出现时间栈帧溢出提前出发选举等,所以在大数据集群中,ntp服务,应该作为一种基础的服务,以下在演示在CentOS 7.2集群上配置ntp服务的过程

首先检查系统中是否安装ntp包:rpm -q ntp

Linux集群配置离线ntp时间同步服务

然后,执行命令在线安装ntp:yum -y install ntp

安装成功之后,再次执行rpm -q ntp 可以看到对应的包:

Linux集群配置离线ntp时间同步服务

这个时候可以使用命令查看ntp是否设置为开启启动状态:systemctl is-enabled ntpd

可以看到默认是disable禁用开机启动的

Linux集群配置离线ntp时间同步服务

现在执行:chkconfig ntpd on 或者 systemctl enable ntpd 设置为开机自启动

设置成功后,ntp服务并不能立即启动,而是在下次重启之后启动,所以现在手动启动ntp:

systemctl start ntpd.service 

启动之后,执行:netstat -an | grep 123 可以看到ntp服务的123端口已经使用:

Linux集群配置离线ntp时间同步服务

===注意防火墙屏蔽ntp端口===

ntp服务器默认端口是123,如果防火墙是开启状态,在一些操作可能会出现错误,所以要记住关闭防火墙。

或者开启123端口

iptables:

# yum install  iptables  iptables-services

# iptables  -A INPUT -p udp  -m udp --dport  123   -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# iptables  -A  OUTPUT -p udp  -m udp --dport  123   -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

#  systemctl restart iptables.service

firewalld:

#yum  -y install firewalld
# firewall-cmd --zone=public --add-port=123/udp --permanent # firewall-cmd --reload

执行:ps -ef | grep ntpd 可以看到ntp进程也已经启动

Linux集群配置离线ntp时间同步服务

默认情况下ntp是从外网时间服务器来更新时间的,在集群中使用只要保证集群中所有的服务器时间一致即可,所以先配置其中一台服务器为时间服务器,其他服务器相对来说为这台时间服务器的客户端,从时间服务器上获取时间数据,从而避免联网,可用性更高

  1、首先是时间服务器配置:

  时间服务器的IP:192.168.0.157

执行 vim /etc/ntp.conf 打开ntp配置文件,找到server指定时间服务器的位置,这些条都注释掉;然后添加下面2行固定配置:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Linux集群配置离线ntp时间同步服务

然后在restrict指定的两行下面追加一行: restrict 192.168.1.1 mask 255.255.252.0 nomodify notrap

Linux集群配置离线ntp时间同步服务

这个配置根据自己的网关和网段配置,只要能保证局域网主机通信就可以,比如这里子网掩码为255.255.252.0那么网段配置192.168.0.0也可以,只是通信的范围不太一样,总之这个配置就是授权局域网内能从本地同步时间的主机范围。

参考:

配置下游服务器可以使用该服务的IP网段(192.168.0.0-192.168.0.255)
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify 配置上游NTP服务器IP地址
server cn.pool.ntp.org
#外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 3

配置好之后,保存并退出,执行 systemctl restart ntpd.service 重启ntp服务即可

2、然后是其他服务器的配置,这里相当于客户端的配置:

  同样执行上面的一些命令对ntp进行安装、启动、自启配置、状态查看等操作,配置文件依然是:/etc/ntp.conf,打开进行如下配置:

  同样注释默认的server服务器,添加一行指定时间服务器位置:server 192.168.0.157 因为上面时间服务器地址是192.168.0.157

Linux集群配置离线ntp时间同步服务

配置好之后,保存,重启ntp服务即可

  所有客户端都进行以上配置,都启动之后,集群会自动定期进行服务的同步(启动后3-5分钟才会同步),这样集群的时间就保持一致了

  另外如果想要手动同步某一台机器的时间,那么可以依次执行下面命令实现:

systemctl stop ntpd  # 先停止服务,否则ntp socket会被占用
ntpdate 192.168.0.157 # 手动执行同步
systemctl start ntpd # 继续启动服务

同步时,会看到如下结果表示同步成功:

Linux集群配置离线ntp时间同步服务

如果没有网络时,可以在https://pkgs.org/download/ntp  ntp离线安装包,执行其中的install.sh脚本即可安装,配置过程和前面完全一样

ntp同步状态查看

1. ntpstat

ntpstat 命令查看时间同步状态,这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。
刚启动的时候,一般是:

# ntpstat
unsynchronised
time server re-starting
polling server every 8 s

连接并同步后

# ntpstat
synchronised to NTP server (100.115.8.147) at stratum 4
time correct to within 1230 ms
polling server every 64 s

2. ntpq -p

# ntpq -p
remote refid st t when poll reach delay offset jitter
============================================================================
*10.xx.xx.xx 10.175.113.138 3 u 44 128 377 1.065 -0.469 0.087
+100.xx.xx.xx 10.175.113.138 3 u 112 128 377 3.218 -0.986 0.372
  
 remote: *表示目前使用的ntp server;+表示备用服务器

  st:即stratum阶层,值越小表示ntp serve的精准度越高;
  when:几秒前曾做过时间同步更新的操作;
  Poll表示,每隔多少毫秒与ntp server同步一次;
  reach:已经向上层NTP服务器要求更新的次数;
  delay:网络传输过程钟延迟的时间;
  offset:时间补偿的结果;
  jitter:Linux系统时间与BIOS硬件时间的差异时间

其他参数配置参考:https://blog.csdn.net/dengyadeng/article/details/81381142

ntp校时服务器:

server cn.pool.ntp.org
server asia.pool.ntp.org
server cn.ntp.org.cn
server ntp.aliyun.com
server time.asia.apple.com

参考连接:https://www.cnblogs.com/jiawen010/p/12778891.html

时间调整:

# date -s 09:00:00

//往后切2s date -s `date -d "2 second" +"%H:%M:%S"`

//往前切1小时  date -s `date -d "-1 hours" +"%H:%M:%S"`

上一篇:Jmeter实例


下一篇:Guidelines for Writing a Good NIPS Paper