puppe的2種同步方式
對於puppet agent的同步,有2種方式可以去做
1.在客戶端執行乙個agent程序,通過配置/etc/puppet/puppet.conf配置檔案中的[agent]項下的runinterval去控制agent的同步時間間隔。
2.通過crontab,每隔一段時間去執行puppet agent --test做同步。
2種同步方式的優劣
分析一下以上2種方式對agent同步時間的離散性
第一種方式的問題:取決於你的agent是什麼時候開始執行的,假設在部署agent的時候是乙個個的去部署的,那麼agent的同步間隔就可以相對的比較離散。但要是是批量併發的去部署agent,或者所有節點機器都重啟或者一部分重啟,就可以認為是相當一部分節點的puppet agent在同一時刻執行的,那麼同步的間隔也會保持一致。這樣會導致,平時puppet master很閒,沒有agent過來同步,而在某一刻時間,agent同步會有乙個相當大的併發,輕則導致超時,重則master當機。
第二種方式的問題:通過crontab結合puppet自帶的inline_template功能,計算hostname的hash,通過hash取出乙個隨機的分鐘,每小時的某一分鐘去執行puppet agent --test做同步。因為每隔主機名都是不一樣的,所以這個分鐘數也是不一致的。
樣例如下:
cron {
puppet_init:
command => "/usr/bin/puppet agent --test;
user => root,
hour => '*',
minute => inline_template("<%= hostname.hash % 60 %>");
按照上面的樣例,agent可以在每小時同步一次,而且每個agent在這個小時中分鐘數十不同的(通過hostname的hash做離散)
導致的問題:只能每小時做同步了。
我的優化方案
修改crontab任務,在執行一次puppet agent --test後,sleep 30分鐘,再執行一次puppet agent --test,就可以半小時同步一次了。
cron {
puppet_init:
command => "/usr/bin/puppet agent --test;sleep 1800;/usr/bin/puppet agent --test",
user => root,
hour => '*',
minute => inline_template("<%= hostname.hash % 60 %>");
這樣就可以將所有節點的同步的時間點在每隔半小時的時間段中,隨機的離散了,可以很好的優化對puppet master的負載。
優化前後master負載情況
在實際生產環境中,我剛開始是執行puppet agent程序的方式去做同步的,300多個節點下,master負載最高達到2,優化後,master負載沒有超過1,基本維持在0.5以下
讓std map operator 變聰明
std map operator是乙個設計得很磋卻很好用的介面,看下面的例子 include include using namespace std int main mapiimap iimap 1 2 1 iimap 2 2 cout iimap 1 iimap 2 iimap 3 endl r...
如何讓自己變聰明
一 喚醒身體 1 閉上眼睛吃飯。2 用手指分辨硬幣。3 戴上耳機上下樓梯。4 捏住鼻子喝咖啡。5 放開嗓子大聲朗讀。6 聞咖啡看魚的。二 尋求腦刺激 7 到餐館點沒吃過的菜。8 把自己的錢花掉。9 專門繞遠路。10 用左手端茶杯。11 聽不同型別的歌曲。12 一天睡覺6小時。三 積極鍛鍊左右腦 13...
讓apk變可除錯
最近學習android逆向發現已經發布的應用基本都不能直接除錯,於是總結一下目前使用過的讓apk變成可除錯的方法。使用adb如下命令檢視default.prop檔案內容 發現ro.debuggable 0,這個屬性控制手機中的應用是否可除錯,0表示不可除錯,1表示可除錯 這裡使用mprop工具來修改...