anasible優化操作

2022-03-13 22:23:15 字數 3798 閱讀 3797

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 這是乙個會話管理...