標籤:cloc auth one tab The 叢集 合并 keygen second
在公司的內網中配置叢集同步,可能是代理問題,ntpd和chrony都沒有用,所以只好寫shell指令碼解決
前提條件叢集中各台機器已經配置好了免密登入
一、免密登入配置
1. 用 root 使用者登入。每台伺服器都產生公開金鑰,再合并到 authorized_keys。
2. CentOS 預設沒有啟動 ssh 無密登入 ,每台伺服器都要配置 /etc/ssh/sshd_config。
vi /etc/ssh/sshd_config 修改
UseDNS no
PubkeyAuthentication yes
3. 每台伺服器下都輸入命令 ssh-keygen -t rsa,產生 key,一律不輸入密碼,直接斷行符號,/root 就會產生 .ssh 檔案夾。
4. 在 Master 伺服器下,合并公開金鑰到 authorized_keys 檔案,進入 /root/.ssh 目錄,通過 SSH 命令合并.
cat id_rsa.pub>> authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
5. 把 Master 伺服器的 authorized_keys、known_hosts 複製到 Slave 伺服器的 `/root/.ssh 目錄
scp authorized_keys [email protected]:/root/.ssh/
scp authorized_keys [email protected]:/root/.ssh/
scp known_hosts [email protected]:/root/.ssh/
scp known_hosts [email protected]:/root/.ssh/
二、准同步指令碼timer.sh,在master主機的時間上加了5秒鐘,因為執行指令碼有點延遲,將准同步的範圍縮小
#!/usr/bin/env bash#hosts arrayhosts=("bigdata02" "bigdata03" "bigdata04" "bigdata05")#localhost current time date1=`date "+%Y/%m/%d %H:%M:%S"`date2=`date -d "$date1 5 second" +"%Y/%m/%d %H:%M:%S"`echo "Now the time is $date1"#loop host to set timefor hostname in ${hosts[*]}do theDay=`date -d "$date2" +"%Y-%m-%d"` theTime=`date -d "$date2" +"%H:%M:%S"` echo $hostname ssh -t $hostname bash -c "‘date -s ‘$theDay‘ &&hwclock --systohc‘" ssh -t $hostname bash -c "‘date -s ‘$theTime‘ &&hwclock --systohc‘"done
三、在master上設定定時任務
配置centos7定時任務 每小時執行一次開啟定時任務systemctl start crondsystemctl enable crond.service編輯當前crontab,輸入 crontab -e* */1 * * * sh /home/timer.sh
內網叢集准同步shell指令碼