欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Asible學(xué)習(xí)筆記--優(yōu)化ansible速度-創(chuàng)新互聯(lián)

優(yōu)化ansible速度

簡單介紹和說明下,優(yōu)化ansible執(zhí)行速度的方法,具體如下~

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)面向各種領(lǐng)域:成都橡塑保溫成都網(wǎng)站設(shè)計(jì)網(wǎng)絡(luò)營銷推廣解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。

常規(guī)優(yōu)化方法

ansible的-t選項(xiàng)妙用

ansible的"-t"或"--tree"選項(xiàng)是將ansible的執(zhí)行結(jié)果按主機(jī)名保存在指定目錄下的文件中。

ansible test -m ping -o -f 6 -t /tmp/tree

至于保存的內(nèi)容為何?實(shí)際上僅僅只是保存了普通的輸出內(nèi)容而已。

# pwd
/tmp/tree
# cat 192.168.246.187
{"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

設(shè)置ansible開啟ssh長連接

如要開啟ssh長連接,要求ansible端的openssh版本高于或等于5.6。使用ssh -V可以查看版本號。然后設(shè)置ansible 使用ssh連接被控端的連接參數(shù),此處修改/et c/ans ible/ansible.cfg,在此文件中啟動下面的連接選項(xiàng),其中ControlPersist=5d是控制ssh連接會話保持時長為5天。

ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d

除此之外直接設(shè)置/etc/ssh/ssh_config(不是sshd_config,因?yàn)閟sh命令是客戶端命令)中對應(yīng)的長連接項(xiàng)也是可以的。

開啟長連接后,在會話過期前會一直建立連接,在netstat的結(jié)果中會看到ssh連接是一直established狀態(tài),且會在當(dāng)前用戶家目錄的.ans ible/cp目錄下生成一些 socket 文件,每個會話一個文件。

例如:執(zhí)行一次ad-hoc操作:

ansible test -m ping

查看netstat ,發(fā)現(xiàn)ssh進(jìn)程的會話一直是established狀態(tài)。

netstat -lnpta

且家目錄下~/.ansible/cp/下會生成對應(yīng)的socket文件。

??關(guān)于 ssh 保持長連接的方法:

(1)修改server端的etc/ssh/sshd_config

ClientAliveInterval 60    #server每隔60秒發(fā)送一次請求給client,然后client響應(yīng),從而保持連接
ClientAliveCountMax 3     #server發(fā)出請求后,客戶端沒有響應(yīng)得次數(shù)達(dá)到3,就自動斷開連接,正常情況下,client不會不響應(yīng)

systemctl reload sshd

(2)修改client端的etc/ssh/ssh_config添加以下:(在沒有權(quán)限改server配置的情形下)

ServerAliveInterval 60    #client每隔60秒發(fā)送一次請求給server,然后server響應(yīng),從而保持連接
ServerAliveCountMax 3     #client發(fā)出請求后,服務(wù)器端沒有響應(yīng)得次數(shù)達(dá)到3,就自動斷開連接,正常情況下,server不會不響應(yīng)

(3)命令行臨時修改

在命令參數(shù)里ssh -o ServerAliveInterval=60這樣子只會在需要的連接中保持持久連接, 畢竟不是所有連接都要保持持久的。

開啟pipelining

pipeline也是openssh的一個特性。在ansible執(zhí)行每個任務(wù)的流程中,有一個過程是將臨時任務(wù)文件put到一個 ansible 端的一個臨時文件中,然后sftp傳輸?shù)竭h(yuǎn)端,然后通過ssh連接過去遠(yuǎn)程執(zhí)行這個任務(wù)。

如果開啟了pipelining,一個任務(wù)的所有動作都在一個ssh會話中完成,也會省去sftp到遠(yuǎn)端的過程,它會直接將要執(zhí)行的任務(wù)在ssh會話中進(jìn)行。

開啟pipelining的方式是配置文件(如ansible.cf g)中設(shè)置pipelining=true,默認(rèn)是false。

但是要注意,如果在ansible中使用sudo命令的話(ssh user@host sudo cmd),需要在被控節(jié)點(diǎn)的/etc/sudoers中 禁用"requiretty"。

之所以要設(shè)置/etc/sudoers中的requiretty,是因?yàn)閟sh遠(yuǎn)程執(zhí)行命令時,它的環(huán)境是非登錄式非交互式shell,默認(rèn)不會分配tty,沒有tty,ssh的sudo就無法關(guān)閉密碼回顯(使用"-tt"選項(xiàng)強(qiáng)制SSH分配tty)。

所以出于安全考慮,/etc/sudoers中默認(rèn)是開啟requiretty的,它要求只有擁有tty的用戶才能使用sudo,也就是說ssh連接過去不允許執(zhí)行sudo 。可以通過 visudo/vim 編輯配置文件,注釋該選項(xiàng)來禁用它。

grep requiretty /etc/sudoers 
# Defaults requiretty

修改設(shè)置/etc/sudoers是在被控節(jié)點(diǎn)上進(jìn)行的(或者ansible連接過去修改),其實(shí)在ansible端也可以解決sudo的問題,只需在ansible的ssh參數(shù)上加上"- tt "選項(xiàng)即可。

ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d -tt

開啟pipelining后,每次執(zhí)行任務(wù)時都大量減少了ssh連接次數(shù)(只需要一次ssh連接),且省去了sftp傳輸任務(wù)文件的過程,因此在管理大量節(jié)點(diǎn)時能極大提升執(zhí)行效率。

修改ansible執(zhí)行策略

默認(rèn)ansible在遠(yuǎn)程執(zhí)行任務(wù)是按批并行執(zhí)行的,一批控制多少臺主機(jī)由命令行的"-f"或"--forks"選項(xiàng)控制。例如,默認(rèn)的并行進(jìn)程數(shù)是5,如果有20臺被控主機(jī),那么只有在每5臺全部執(zhí)行完一個任務(wù)才繼續(xù)下一批的5臺執(zhí)行該任務(wù),即使中間某臺機(jī)器性能較好,完成速度較快,它也會空閑地等待在那,直到所有20臺主機(jī)都執(zhí)行完該任務(wù)才會以同樣的方式繼續(xù)下一個任務(wù)。如下所示:

h2 h3 h4 h5 h6(T1)-->h7 h7 h8 h9 h20(T1)...-->h26 h27 h28 h29 h30(T1)-->h2 h3 h4 h5 h6(T2)-->.....

在ansible 2.0中,添加了一個策略控制選項(xiàng)strategy,默認(rèn)值為"linear",即上面按批并行處理的方式。還可以設(shè)置 strategy的值為"free"。

在free模式下,ansible會盡可能快的切入到下一個主機(jī)。同樣是上面的例子,首先每5臺并行執(zhí)行一個任務(wù),當(dāng)其中某一臺機(jī)器由于性能較好提前完成了該任務(wù),它不會等待其他4臺完成,而是會跳出該任務(wù)讓ansible切入到下一臺機(jī)器來執(zhí)行該任務(wù)。也就是說,這種模式下,一臺主機(jī)完成一個任務(wù)后,另一臺主機(jī)會立即執(zhí)行任務(wù),它是"前赴后繼"的方式。如下所示:

h2 h3 h4 h5 h6(T1)-->h2 h3 h4 h5 h7(T1)-->h2 h4 h5 h7 h7(T1)-->......-->h27 h28 h29 h30(T1) h2(T2)-->h28 h29 h30(T1) h2 h3(T2)-->...

設(shè)置的方式如下:

- hosts: all
   strategy: free
   tasks:
   ...

設(shè)置facts緩存

ansible或ansible-playbook默認(rèn)總是先收集facts信息。在被控主機(jī)較少的情況下,收集信息還可以容忍,如果被控主機(jī)數(shù)量非常大,收集 facts 信息會消耗掉非常多時間。

可以設(shè)置gather_facts: no來禁止ansible收集facts信息,但是有時候又需要使用facts中的內(nèi)容,這時候可以設(shè)置facts的緩存。例如,在空閑的時候收集facts ,緩存下來,在需要的時候直接讀取緩存進(jìn)行引用。

ansible的配置文件中可以修改'gathering'的值為smartimplicit或者explicit

(1)smart 表示默認(rèn)收集facts,但facts已有的情況下不會收集,即使用緩存facts;

(2)implicit 表示默認(rèn)收集facts ,要禁止收集,必須使用gather_facts: False

(3)explicit 則表示默認(rèn)不收集,要顯式收集,必須使用gather_facts: Ture

在使用facts緩存時(即設(shè)置為smart),ansible支持兩種f acts緩存:redisjsonfile

例如,以下是/etc/ansible/ansible.cfg中jsonfile格式的緩存配置方法。

[defaults]
gathering = smart
fact_caching_timeout = 86400                                        ## 這里設(shè)置的緩存過期時間為86400秒,即緩存一天。
fact_caching = jsonfile fact_caching_connection = /path/to/cachedir ## 緩存的json文件放在/path/to/cachedir目錄下,各主機(jī)的緩存 文件以主機(jī)名命名。

緩存文件是一個json文件,要查看緩存文件,如/path/to/cachedir/192.168.100.59中的內(nèi)容, 使用如下語句即可:

cat /path/to/cachedir/192.168.100.59 | python -m json.tool

說明

本博文是參考馬龍帥大佬文章整理生成,屬于博主讀書筆記,如有侵權(quán),請大佬與我聯(lián)系,立刪!

最后,感謝開源,擁抱開源~

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標(biāo)題:Asible學(xué)習(xí)筆記--優(yōu)化ansible速度-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.chinadenli.net/article46/dgiohg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站維護(hù)關(guān)鍵詞優(yōu)化電子商務(wù)云服務(wù)器品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化