步骤
- 选择一个主节点, 编写nodelist文件(列出需要同步的节点ip或host名)
- 编写初始化脚本
- 需要同步的节点配置crontab定时任务
编写nodelist文件
# 选择主节点: 192-168-81-58
sudo su root
cd ~
vim nodelist
nodelist文件内容如下, host名称:
192-168-81-54
192-168-81-55
192-168-81-56
192-168-81-57
192-168-81-58
192-168-79-41
192-168-79-42
192-168-79-43
192-168-79-44
192-168-79-45
192-168-79-46
192-168-79-47
编写初始化脚本
# 选择主节点: 192-168-81-58
sudo su root
cd ~
vim ntp_sync.sh
ntp_sync.sh脚本内容如下:
#!/usr/bin/env bash
bin=`dirname $0`
bin=`cd "$bin"; pwd`
cd $bin
host_list=$(cat ~/nodeslist)
master_hostip=$(sed -n 1p ~/nodeslist)
ips_no_host=$(sed -n '2,$p' ~/nodeslist)
# 判断当前系统版本,方便用户单独执行
os_version=centos7
# 遍历所有节点
# 操作:1.修改时区为上海时区 2.设置开机自启动 3.修改配置文件ntp.cnf
for host in $host_list
do
# 设置时区
ssh $host ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 开机自启动
flag=`ssh $host grep -c \"service ntpd restart\" /etc/rc.d/rc.local`
if [ $flag -eq '0' ]; then
ssh $host "echo service ntpd restart >> /etc/rc.d/rc.local"
echo "service ntpd restart in /etc/rc.d/rc.local add successfully!"
else
echo "service ntpd restart in /etc/rc.d/rc.local already exist, not need to add."
fi
flag=`ssh $host grep -c \"hwclock --systohc\" /etc/rc.d/rc.local`
if [ $flag -eq '0' ]; then
ssh $host "echo "hwclock --systohc" >> /etc/rc.d/rc.local"
echo "hwclock --systohc in /etc/rc.d/rc.local add successfully!"
else
echo "hwclock --systohc in /etc/rc.d/rc.local already exist, not need to add."
fi
ssh $host "chmod +x /etc/rc.d/rc.local"
# 安装ntp服务
ssh $host yum install -y -q ntp
if [[ $os_version = "centos6" ]];then
ssh $host "sed -i -e '22 s/^/# /' -i -e '23 s/^/# /' -i -e '24 s/^/# /' -i -e '25 s/^/# /' /etc/ntp.conf"
else
ssh $host "sed -i -e '21 s/^/# /' -i -e '22 s/^/# /' -i -e '23 s/^/# /' -i -e '24 s/^/# /' /etc/ntp.conf"
fi
flag=`ssh $host grep -c \"fudge 127.127.1.0 stratum 10\" /etc/ntp.conf`
if [ $flag -eq '0' ]; then
ssh $host "echo fudge 127.127.1.0 stratum 10 >> /etc/ntp.conf"
echo "fudge 127.127.1.0 stratum 10 in /etc/ntp.conf add successfully!"
else
echo "fudge 127.127.1.0 stratum 10 in /etc/ntp.conf already exist,not need to add."
fi
done
# 主节点操作
# 1.重启ntpd 2.硬件时间以系统时间为标准进行同步 3.打印主节点当前系统时间
service ntpd restart
hwclock --systohc
echo -e "\e[0;32;1m==== "$master_hostip"当前系统时间为: ====\e[0m"
date
echo -e "\e[0;32;1m==== "$master_hostip"当前硬件时间为: ====\e[0m"
hwclock
主节点配置crontab
# 选择主节点: 192-168-81-58
sudo su root
cd ~
crontab -e
crontab内容如下:
*/3 * * * * /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null 2>&1
其它节点配置crontab
# 其它所有节点依次配置crontab任务
#192-168-81-54
#192-168-81-55
#192-168-81-56
#192-168-81-57
#192-168-79-41
#192-168-79-42
#192-168-79-43
#192-168-79-44
#192-168-79-45
#192-168-79-46
#192-168-79-47
sudo su root
crontab -e
crontab任务内容如下:
* */1 * * * /usr/sbin/ntpdate 192-168-81-58