【原创】
本文作者:Denghui.Zhou,欢迎交流讨论。
原文链接:https://jianwi.com/articles/bigdata/cloudera/ntp.html
版权声明:原创不易,转载请注明出处,谢谢!
相关资源分享清单:
- NTP 主服务节点配置文件:server-ntp.conf
- NTP 客户节点配置文件:client-ntp.conf
- scm 服务环境初始化脚本:scm-deamon.sh
- systemd 服务配置文件:scm-deamon.service
- scm-deamon 部署:deploy-scm-deamon.sh
CDH 集群需要保持各节点时间同步,需要在每个节点配置 NTP 时间同步服务
1、集群配置 NTP 主从时间同步服务
安装 NTP
yum install -y ntp
配置 /etc/ntp.conf
参数
ntp 时钟服务节点:在集群中配置一个 ntp 时间服务器,负责对内网其它节点提供时钟服务。
配置参数说明如下,完整配置脚本见清单中的 server-ntp.conf
:
# 设置对内网主机提供NTP服务,集群网关是192.168.20.1,允许内网其他机器同步时间
restrict 192.168.20.1 mask 255.255.255.0 nomodify notrap
# 指定上层对时的外部服务器,优先选择阿里云的时钟服务
server time6.aliyun.com perfer
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
#允许上层时间服务器主动修改本机时间
restrict time6.aliyun.com nomodify notrap noquery
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 1.cn.pool.ntp.org nomodify notrap noquery
restrict 2.cn.pool.ntp.org nomodify notrap noquery
restrict 3.cn.pool.ntp.org nomodify notrap noquery
#外部时间服务器不可用时,设置以本地时间作为时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10
ntp 子节点:配置参数与 ntp 时钟服务节点同步时间。
配置参数说明如下,完整配置脚本见清单中的 client-ntp.conf
:
# 指定上层对时的外部服务器,192.168.20.30为配置了ntpd时钟服务端的节点IP
server 192.168.20.30 perfer
server time6.aliyun.com
#允许上层时间服务器主动修改本机时间
restrict 192.168.20.30 nomodify notrap noquery
restrict time6.aliyun.com nomodify notrap noquery
# 外部时间服务器不可用时,设置以本地时间作为时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10
启用 ntp 服务
systemctl start ntpd
systemctl enable ntpd
初始时间同步
ntpdate -u time6.aliyun.com
同步系统时间到硬件
hwclock --systohc
2、节点非正常开机启动时的主机时钟偏差问题解决
问题:在 Cloudera 集群中,节点意外宕机自动重启后,集群持续报告
主机时钟偏差
的告警信息,导致集群内一些服务无法正常提供服务。
原因:经排查测算后找到原因了,在服务器非正常启动后,
cloudera-scm-agent
启动时,会检测ntpd
服务是否启动,如果没有检测到ntpd
,Cloudera 默认会以chronyd
作为默认时间服务。然而系统并未配置chronyd
服务,所以一直会出现主机时钟偏差
的告警信息,服务器正常启动时不会出现该问题。
解决办法:配置一个自定义服务,保证在启动
cloudera-scm-agent
服务之前已经启动了ntpd
服务。
**配置 scm-deamon.sh
**
#!/bin/bash
# Cloudera集群服务守护脚本
logfile=/tmp/scm-deamon.log
echo "-----------------------------" >> $logfile 2>&1
/usr/bin/date >> $logfile 2>&1
echo "开始初始化:" >> $logfile 2>&1
/usr/sbin/swapoff -a >> $logfile 2>&1
free >> $logfile 2>&1
/etc/rc.d/init.d/network restart >> $logfile 2>&1
systemctl status network >> $logfile 2>&1
/usr/bin/sleep 3 >> $logfile 2>&1
systemctl restart ntpd >> $logfile 2>&1
systemctl status ntpd >> $logfile 2>&1
/usr/bin/sleep 3 >> $logfile 2>&1
systemctl disable cloudera-scm-agent >> $logfile 2>&1
systemctl restart cloudera-scm-agent >> $logfile 2>&1
systemctl status cloudera-scm-agent >> $logfile 2>&1
/usr/bin/date >> $logfile 2>&1
echo "初始化完成!" >> $logfile 2>&1
echo -e "-----------------------------\n\n" >> $logfile 2>&1
配置 scm-deamon.service
服务
[Unit]
Description=Cloudera环境初始化服务
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/opt/srv/systemd.scripts/scm-deamon.sh
[Install]
WantedBy=multi-user.target
部署 scm-deamon.service
服务,请参考上述分享的 deploy-scm-deamon.sh
脚本。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于