集群时钟同步必读-NTP和chrony

 

一、  前言

搭建和维护集群环境中时钟同步是非常重要一环。如果集群的时间不统一,例如ceph集群就会报错无法更新数据、CDH集群无法添加客户端等等。目前主流在Linux系统搭建集群用到NTP和chrony软件,本文简单介绍两者的集群搭建。

二、  NTP和chrony区别

根据chrony官网描述,主要区别如下图:(图太大了,截取了一部分)

详细见官网:chrony – NTP 实施的比较

 

三、  环境准备

注意:ntp和chrony无法同时再一台机器运行;请单独安装运行

 

ntp下载地址(Centos7):

http://mirror.centos.org/centos/7/os/x86_64/Packages/ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm

http://mirror.centos.org/centos/7/os/x86_64/Packages/ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

 

chrony下载地址(Centos7):

http://mirror.centos.org/centos/7/os/x86_64/Packages/chrony-3.4-1.el7.x86_64.rpm

 

四、  NTP搭建集群同步时间

1、  更新阿里源、安装ntp|ntpdate

离线环境提前下载离线包

#更新阿里源
cd /etc/yum.repos.d/ 
curl -L -O https://mirrors.aliyun.com/repo/Centos-7.repo && mv ./Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
curl -L -O  http://mirrors.aliyun.com/repo/epel-7.repo && mv ./epel-7.repo /etc/yum.repos.d/epel.repo
yum clean all && yum makecache
yum install -y epel-*

#安装NTP
rpm -qa | grep ntp                    
yum -y remove ntpdate ntp        
yum -y install ntp  ntpdate

#设置时区上海
timedatectl set-timezone Asia/Shanghai    
date
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
timedatectl set-timezone Asia/Shanghai

2、  离线环境:3台机器时钟同步其中一台

将192.168.1.131作为主节点,其他节点都同步它,允许同步网段设置为192.168.1.0

● 主节点选择192.168.1.131,修改主节点配置文件

#主节点:修改配置文件
mv /etc/ntp.conf /etc/ntp.conf.bakk
cat >>/etc/ntp.conf<<EOF                
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 192.168.1.131 nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
EOF
cat /etc/ntp.conf
#需要把对应restrict IP和restrict网段进行修改即可

● 其他节点作为客户端192.168.1.132/133,修改其他节点配置文件

#其他节点:ntp客户端配置
mv /etc/ntp.conf /etc/ntp.conf.bakk
cat >>/etc/ntp.conf<<EOF    
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1 
restrict ::1
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 192.168.1.131   
fudge 192.168.1.131 stratum 10 
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor 
EOF
cat /etc/ntp.conf
#需要把对应server Fudge IP和restrict网段进行修改即可

● 注意:先启动主节点的NTP服务、再启动其他节点

#主节点执行同步
systemctl restart ntpd
systemctl status ntpd
#systemctl enable ntpd

● 同步硬件时间,检查集群同步状态,关闭chyony

#其他节点执行同步
ntpdate -u 192.168.1.131

#同步硬件时间
sed -i 's#SYNC_HWCLOCK=no#SYNC_HWCLOCK=yes#g' /etc/sysconfig/ntpdate
hwclock -w            
hwclock -r        


#检查是否成功
ntpstat
ntpq -p
timedatectl

#会冲突,需要停止chronyd.service
systemctl stop chronyd.service
systemctl disable chronyd.service

3、  在线环境:3台机器同步外网时钟服务器即可

在线环境同步时间

#手动同步
ntpdate -u ntp.ntsc.ac.cn

#写入配置文件自动同步
mv /etc/ntp.conf /etc/ntp.conf.bakk
cat >>/etc/ntp.conf<<EOF    
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1 
restrict ::1
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server ntp.ntsc.ac.cn   
fudge ntp.ntsc.ac.cn stratum 10 
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor 
EOF
cat /etc/ntp.conf

4、  开放端口123

如果无法同步,请检查防火墙是否开放端口123

netstat -lnptu | grep ntp

#关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disable firewalld.service  
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sestatus

五、  chrony搭建集群同步时间

1、  更新阿里源、安装chony

离线环境提前下载离线包

#更新阿里源
cd /etc/yum.repos.d/ 
curl -L -O https://mirrors.aliyun.com/repo/Centos-7.repo && mv ./Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
curl -L -O  http://mirrors.aliyun.com/repo/epel-7.repo && mv ./epel-7.repo /etc/yum.repos.d/epel.repo
yum clean all && yum makecache
yum install -y epel-*

#安装chrony
rpm -qa | grep chrony
yum -y remove chrony        
yum -y install chrony

#设置时区上海
timedatectl set-timezone Asia/Shanghai    
date
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
timedatectl set-timezone Asia/Shanghai

2、  离线环境:3台机器时钟同步其中一台

将192.168.1.131作为主节点,其他节点都同步它,允许同步网段设置为192.168.1.0

● 主节点选择192.168.1.131,修改主节点配置文件

#主节点:修改配置文件
mv /etc/chrony.conf /etc/chrony.conf.bakk
cat >> /etc/chrony.conf<<EOF
server 192.168.1.131 iburst
server 127.0.0.1 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.1.0/24
local stratum 10
logdir /var/log/chrony
EOF
cat /etc/chrony.conf

● 主节点选择192.168.1.131,修改主节点配置文件

#其他节点:修改配置文件
mv /etc/chrony.conf /etc/chrony.conf.bakk
cat >> /etc/chrony.conf<<EOF
server 192.168.1.131 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
local stratum 10
logdir /var/log/chrony
EOF
cat /etc/chrony.conf

● 注意:先启动主节点的NTP服务、再启动其他节点

#先停止ntp\ntpdate服务
systemctl stop ntpd.service
systemctl stop ntpdate.service

#再启动chronyd
systemctl restart chronyd.service
systemctl status chronyd.service

#等几秒可以查看同步状态
chronyc sources -v
chronyc clients
timedatectl

3、  在线环境:3台机器同步外网时钟服务器即可

#写入配置文件自动同步
mv /etc/chrony.conf /etc/chrony.conf.bakk
cat >> /etc/chrony.conf<<EOF
server ntp.ntsc.ac.cn iburst
server 127.0.0.1 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.1.0/24
local stratum 10
logdir /var/log/chrony
EOF
cat /etc/chrony.conf

4、  开放端口123和323

下面是 Chrony 服务使用的默认端口:

● UDP 端口 123:Chrony 客户端和服务器都使用此端口进行 NTP 数据包通信。

● TCP 端口 323:如果需要,Chrony 可以使用此端口进行监视和配置。

 

出处: https://home.cnblogs.com/u/subsea/
博客园主页:https://www.cnblogs.com/subsea/
CSDN主页:https://blog.csdn.net/SUBSEA123/