linux-时间同步服务

"nginx"

Posted by yangsir on November 25, 2024

“Yeah It’s on. ”

时间同步服务

两种时间同步服务

  • ntpd服务
  • chrony服务

适用场景

特性 ntpd chrony
适用环境 长期运行的物理服务器 虚拟机、嵌入式设备或网络不稳定环境
启动时间 时间同步较慢 时间同步较快
精度需求 高精度场景 常规使用场景
断网适用性 较差,断网后影响明显 能在断网后持续校准时间

实验搭建高可用chrony时间同步服务器

实验环境

操作系统 主机名 IP
centos7 mysql2 192.168.13.133
centos7 mysql3 192.168.13.134

1、安装应用服务

1
2
3
4
5
6
#安装chrony
yum install -y chrony


#安装Keepalived
yum install -y keepalived

2、配置 Chrony 时间服务

Server 1(192.168.13.133)

1
2
3
4
5
6
7
8
9
10
11
12
13
#vi /etc/chrony/chrony.conf

# 配置上游时间源
server ntp.aliyun.com iburst

# 允许内网访问
allow 192.168.13.0/24

# 本地时间优先级
local stratum 10

# 日志记录
logdir /var/log/chrony

ps:iburst用于在客户端第一次尝试与 NTP 服务器同步时,快速发送一组请求包(默认是 4 个包),以加速初始时间同步过程。

Server 2 (192.168.13.134)

配置文件与 Server 1 相同,仅时间源可以略作调整。

3、配置Keepalived 高可用

创建一个检查chronyd 服务的脚本

Server 1(192.168.13.133)主

1
2
3
4
5
6
7
8
9
10
11
12
13
# vi /etc/keepalived/check_chrony.sh

#!/bin/bash

# 检查 chronyd 服务是否运行
if systemctl is-active chronyd > /dev/null 2>&1; then
    exit 0  # 正常运行
else
    exit 1  # 服务异常
fi


# chmod +x /etc/keepalived/check_chrony.sh

配置 Keepalived

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# vi /etc/keepalived/keepalived.conf

vrrp_script check_chrony {
    script "/etc/keepalived/check_chrony.sh"  # 指定检查脚本路径
    interval 2                                # 每 2 秒检查一次
    weight -20                                # 检查失败时降低优先级
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0                            # 替换为实际网卡名称
    virtual_router_id 51
    priority 100                              # 主服务器优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345                       # VRRP 认证密码
    }
    virtual_ipaddress {
        192.168.0.100                         # 虚拟 IP
    }
    track_script {
        check_chrony                          # 引用健康检查脚本
    }
}

Server 2(192.168.13.134)备

Server 2和Server 1的脚本一样,配置文件只需修改priority

例如

1
priority 90

4、启动服务(主备)

1
2
3
4
5
systemctl enable chronyd
systemctl start chronyd

systemctl enable keepalived
systemctl start keepalived

5、客户端

1
2
3
4
5
#在客户端设置时间服务器为虚拟 IP
server 192.168.13.100 iburst

#检查时间同步
chronyc sources