NTP服务器安装
由于集群机器时间不一致,导致程序频繁出bug,需要使用ntp服务器做时间同步。上周突然接到需求,赶快搞一套上去。
1. 选型
首先先选合适的镜像,由于时间紧迫,直接选用hub.docker上最热门的镜像
2. 查看官方文档
从文档中发现提供了docker-compose的启动方式,比较方便,所以决定使用docker-compose来启动镜像,docker-compose文件就存放在git仓库里面
从这里直接进入代码仓库查看代码
找到docker-compose文件复制到本地进行修改
首先,build肯定是不需要的,我们不需要重新去构建镜像,直接使用docker仓库里面构建完的镜像即可,其次,上游的ntp服务器要改成国内可用的ntp服务器,最后,加入本地时区即可。
修改过后的yml文件如下
version: '3.4'
services:
ntp:
image: cturra/ntp:latest
container_name: ntp
restart: always
ports:
- 123:123/udp
read_only: true
tmpfs:
- /etc/chrony:rw,mode=1750
- /run/chrony:rw,mode=1750
- /var/lib/chrony:rw,mode=1750
environment:
- NTP_SERVERS=ntp1.aliyun.com,ntp2.aliyun.com,ntp3.aliyun.com,ntp4.aliyun.com
- LOG_LEVEL=0
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
3. 拉取镜像并启动
将docker-compose.yml拷贝到服务器上面去,先pull已经构建好的镜像,docker pull cturra/ntp。然后docker-compose up -d启动容器
4. 测试
使用另一台机器,执行yum install ntpdate安装ntpdate,然后执行ntpdate ip 命令测试同步是否正常。
经过测试,ntp服务正常使用并且已经将机器时间同步。
5.使用linux定时任务定时同步时间
- 先开启定时任务服务:service crond start。
- 使用crontab -e编辑定时任务。新增定时任务格式为:cron[command],保存后:wq退出
例:*****/usr/sbin/ntpdate 192.168.30.1 >> /opt/app/ntp.log 2>&1