Centos8配置 chrony NTP服务端及客户端
现在有一台服务器想作为NTP服务器,3台客户端想作为NTP服务器的客户端,保证客户端机器上的时间与服务器端保持同步。清单如下:
类型 | IP地址 |
---|---|
server | 192.168.1.30 |
client | 192.168.1.[31:33] |
部署服务端chrony
ssh登录到server机器后放行防火墙、安装chrony服务、配置chrony服务器端。
放行防火墙端口
Centos8使用firewalld
服务对防火墙进行管理。放行ntp服务(123/udp)
firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload
安装chrony服务
默认情况下Centos8中已经安装好chrony的软件包。如果发现没有安装,使用下面的命令安装即可:
sudo dnf install chrony -y
配置chrony服务端
sudo vim /etc/chrony.conf
不习惯vi/vim
编辑器的小伙伴可以替换为自己喜爱的编辑器如nano
。
把原有自带的上游NTP服务器地址删除。之后手动配置国内阿里云的NTP服务器地址。
server time1.aliyun.com iburst #添加上游NTP服务器
server time2.aliyun.com iburst
server time3.aliyun.com iburst
allow 192.168.1.0/24 #允许IP段内的客户端通过这台服务器获取时间
配置无误后,重启chrony服务,并配置开机自启动:
systemctl restart chronyd.service && systemctl enable chronyd.service --now
使用ss -tlunp | grep chrony
命令检查,发现chrony服务已经在监听123/udp
端口,服务端配置成功。
配置chrony客户端
配置chrony客户端需要将三台客户端都安装chrony并且配置好他们的配置文件。如果说客户端数量较少可以手动配置,当数量为成百上千台机器时使用Ansible自动化配置是一个不错的选择。所以在这里有两种配置方法供大家参考,一种是普通手动配置,一种是使用Ansible-Galaxy角色配置。
手动配置chrony客户端
配置客户端同样的需要放行防火墙、安装chrony软件包、配置chrony客户端。
安装chrony软件包
dnf install chrony -y
修改客户端chrony配置文件
sudo vim /etc/chrony.conf
不习惯vi/vim
编辑器的小伙伴可以替换为自己喜爱的编辑器如nano
。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst
# 把原有的NTP服务器地址注释掉或者直接删除。添加下面刚刚搭建好的NTP服务器地址。
server 192.168.1.30 iburst
注释默认的NTP服务器地址,之后添加上我们自己刚刚搭建好的NTP服务器地址即可完成chrony客户端的手动配置。
重启chrony客户端服务
重启chrony服务,并配置开机自启动:
systemctl restart chronyd.service && systemctl enable chronyd.service --now
查看同步状态
chronyc sources -v
[root@vm1 ~]# chronyc sources -v
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.1.30 3 6 17 16 +3424ns[ +110us] +/- 31ms
可以看到,输出结果里已经有我们搭建好的NTP服务器了。并且在服务器地址前有^*
标记,证明已经正确同步时间。
至此一台客户端的chrony已经搭建完毕。剩下的两台同理部署即可。
使用Ansible自动化配置chrony客户端
相关Ansible基础默认你已经了解,不再赘述。如果你不了解Ansible请从Ansible文档入门学习。
mkdir Chrony && cd Chrony
配置ansible.cfg
vim ansible.cfg
[defaults]
inventory = inventory
remote_user = root
roles_path=./roles:/usr/share/ansible/roles:/etc/ansible/roles
[privilege_escalation]
become=True
become_method=sudo
beome_user=root
become_ask_pass=False
配置主机清单
vim inventory
[client]
192.168.1.3[1:3]
配置ssh免密登陆客户端
下载chrony角色
ansible-galaxy install ericsysmin.chrony
编写Playbok
vim playbook.yml
---
- name: Config Chrony Client
hosts: client
roles:
- role: ericsysmin.chrony
chrony_config_server:
- 192.168.1.30
...
执行结果如下,全部OK即为成功:
PLAY RECAP **************************
192.168.1.31 : ok=7 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
192.168.1.32 : ok=7 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
192.168.1.33 : ok=7 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
之后可以登录几台机器进行手动验证,查看是否已经以NTP服务器保持同步。
ip段不是ip端把