ansible使用預設的ssh方式通訊,它的效率會遠遠低於stltstack的zeromq訊息佇列。
但是依然有許多手段可以優化ansible的執行速度。
(1)開啟ssh長連線
ansible對ssh的依賴性非常強,優化ssh將會優化ansible的執行效率。
可以在ansible.cfg中設定ssh長連線。
ssh_args = -o controlmaster=auto -o controlpersist=5d
如果開啟長連線,就會減少下次ssh的連線次數。
controlpersist=5d表示長連線的時長為5天。
(2)開啟pipelining
在整個ansible的執行流程中,有乙個過程就是把生成好的本地python指令碼傳輸到各個節點上然後執行。
如果開啟了pipelining,這個過程將會在ssh的會話中進行,可以提高整個執行效率。
pipelining = true
(3)開啟accelerate模式
ansible還有乙個accelerate模式,這個模式會使用python程式在遠端機器上執行乙個守護程序,
然後ansible會通過這個守護程序的監聽埠進行通訊。
[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
(4)設定facts快取
在執行playbook的時候,預設第乙個task都是gathering facts,就是收集每台主機的facts資訊。
如果你不需要facts資訊,那麼可以在playbook中設定gather_facts:false來提高playbook的效率。
但是現在我想收集facts的資訊,又想加速收集過程,此時就可以使用facts快取了。
playbook檔案:
ansible.cfg設定:
fact預設設定在memory裡面,也就是不長時間儲存。
fact_caching = memory
fact的快取可以放在json檔案、redis資料庫裡面等。
fact_caching = jsonfile
fact_caching_connection=/tmp/ansible_fact_cache
檢視生成的日誌:
它會用主機ip來生成乙個json檔案,然後寫入當前主機的fact資訊,這個節點再需要fact的時候就會直接讀取這個檔案。
第一種方式是通過角色進行劃分
production # 生產環境的inventory檔案
staging # 暫存環境的inventory檔案
group_vars/#組變數定義
group1.yml
group2.yml
host_vars/# 主機變數定義,為每台主機單獨定義變數
hostname1.yml
hostname2.yml
library/# 自定義模組存放目錄
module_utils/filter_plugins/# 自定義filter外掛程式存放目錄
site.yml # playbook的統一入口檔案
webservers.yml # web服務相關的playbook檔案
dbservers.yml # 資料庫相關的playbook檔案,如果還有其它型別,可以繼續建立
roles/# role存放目錄
common/# common 角色目錄,共用目錄
tasks/main.yml # common角色task入口檔案
handlers/main.yml # common角色handlers入口檔案
templates/ntp.conf.j2 # common角色templates檔案
files/bar.txt # common角色files資源檔案
foo.
sh# common角色files資源檔案
vars/main.yml # common角色變數定義檔案
defaults/main.yml # common角色預設變數定義檔案,優先順序低
meta/main.yml # common角色依賴檔案
library/# 角色還可以包含自動一模組
module_utils/lookup_plugins/# 還可以包含lookup外掛程式
webtier/# webtier角色目錄,與common同級
monitoring/# monitoring角色目錄,與common同級
第二種是通過環境進行環境進行劃分,比如生產環境、測試環境獲知開發環境等
inventories/ # inventory主要存放的是主機資訊,預設是/etc/ansible/hosts
production/#生產環境
hosts #主機和主機組配置資訊
group_vars/#組變數
group1.yml
group2.yml
host_vars/#主機變數
hostname1.yml
hostname2.yml
staging/#測試環境
hosts
group_vars/group1.yml
group2.yml
host_vars/stagehost1.yml
stagehost2.yml
library/#自定義模組存放目錄
module_utils/filter_plugins/#filter外掛程式存放目錄
site.yml #playbook統一入口檔案
webservers.yml #web和db服務playbook檔案
dbservers.yml
roles/#角色
common/#共有
webtier/#其它
如果你使用的是雲主機,你不應該在靜態檔案中管理inventory,因為此時inventory資訊是動態波動的。
你應該使用inventory外掛程式或者指令碼來實現。
(1)語法檢測
在編寫完playbook之後一定要進行語法檢測,否則一旦運用到生產環境將是乙個大問題。
只需要在執行playbook的時候使用--syntax-check引數即可。
(2)灰度發布
在進行完語法檢測之後,你應該先挑一台機器進行測試,將所有的任務跑一遍。
這樣就可以直觀感受是否能夠達到預期效果。你只需要把乙個或多個task使用deletgate_to引數指定到一台裝置上進行測試。
(3)是否達到預期
在執行playbook的時候使用--diff和--check引數去對比生成後的檔案是否為我們所需的檔案。
sql優化操作
insert優化 1,當同乙個使用者插入很多行的時候,應該盡量使用多個表的insert語句,這種方式將大大減少客戶端與資料庫之間的連線,關閉等等消耗,因為每一次插入資料都會執行連線資料庫,關閉資料庫等等操作 如下 insert into test valus 1,2 3,4 5,6 7,8 2,如果...
Hbase API操作優化
一.put 優化 hbase的api配備了乙個客戶端的寫緩衝區 write buffer 緩衝區負責收集put操作,然後呼叫prc操作一次性將put送往伺服器。預設情況下寫緩衝區是禁用的,可以呼叫table.setautoflush false 來啟用緩衝區 test public void tes...
作業系統優化
1.基本系統程序 csrss.exe 這是子系統伺服器程序,負責控制windows建立或刪除執行緒以及16位的虛擬dos環境。lsass.exe 管理ip安全策略以及啟動 isakmp oakley ike 和 ip 安全驅動程式。explorer.exe 資源管理器。ss.exe 這是乙個會話管理...