centos7 时钟同步服务部署
在安装集群时,要求集群中的所有机器时间必须同步,这时需要chrony来做时间同步。安装 chrony 可以使用 ansible 来批量配置,也可以手动修改,实验环境如下:
主节点:node1,从节点:node2、node3,主节点作为服务端,从节点作为客户端。
hostname | IP |
---|---|
node1 | 192.168.1.110 |
node2 | 192.168.1.120 |
node3 | 192.168.1.130 |
一. 手动安装
1.1 所有节点安装chrony
在所有节点安装 chrony 服务。
sudo yum install -y chrony
1.2 在master上配置server
在node1
上注释掉默认的server配置/etc/chrony.conf
,添加172.22.0.1,表示自己是服务端的角色。
# server 0.rhel.pool.ntp.org iburst
# server 1.rhel.pool.ntp.org iburst
# server 2.rhel.pool.ntp.org iburst
# server 3.rhel.pool.ntp.org iburst
server 172.22.0.1 iburst
1.3 在master上配置同步
在node1
上做如下配置/etc/chrony.conf
。allow 0.0.0.0/0
表示允许所有的客户端来同步时间, local stratum 10
表示没有外部时间同步源的时候也可以向客户端提供同步服务。
allow 0.0.0.0/0
local stratum 10
1.4 在slave上配置server的ip
在node2、node3
上配置/etc/chrony.conf
。
# server 0.rhel.pool.ntp.org iburst
# server 1.rhel.pool.ntp.org iburst
# server 2.rhel.pool.ntp.org iburst
# server 3.rhel.pool.ntp.org iburst
server 192.168.1.110 iburst
1.5 所有节点配置
node1、node2、node3
上同时配置时区,然后重启服务。
# 配置时区
timedatectl set-timezone Asia/Shanghai
# 启动服务
systemctl restart chronyd
systemctl enable chronyd
systemctl status chronyd
1.6 验证同步
# 在node2或者node3上手动修改时间,等待一段时间后自动和node1进行同步(如果时间相差太多的话,需要更长时间来同步)
sudo date -s "2019-10-22 15:05:37"
# 如果相差时间太多的话,重启全部chronyd服务即可很快同步。
date
二. 批量安装
2.1 安装ansible工具
找一个管理节点安装ansible,比如在node1上
# 安装ansible
sudo yum install -y ansible
# ansible的配置略
2.2 批量安装chrony
只需将192.168.1.110
替换成实际的 server 的 IP 地址即可,其他不需要修改。
# 安装chrony
ansible all -m shell -a "yum install -y chrony" --become
# 统一修改时区
ansible all -m shell -a "timedatectl set-timezone Asia/Shanghai" --become
# 修改配置一
ansible all -m shell -a "sed -i 's/^server\(.*\)iburst$/# server\1iburst/g' /etc/chrony.conf" --become
ansible all -m shell -a "sed -i '/# Record the rate/i\server 192.168.1.110 iburst\n' /etc/chrony.conf" --become
# 修改配置二
sudo sed -i '/#local stratum 10/a\local stratum 10' /etc/chrony.conf
sudo sed -i '/#allow 192.168.0.0/a\allow 0.0.0.0/0' /etc/chrony.conf
# 重启服务,查看时间是否同步
ansible all -m shell -a "systemctl restart chronyd" --become
ansible all -m shell -a "systemctl enable chronyd" --become
ansible all -m shell -a "date"
三. 常用工具
# 查看时间同步服务器列表
chronyc -n sources
chronyc -n sources -v
# 查看正在使用的时间服务器状态
chronyc -n sourcestats
# 查看本机的时间同步状态
chronyc tracking