- SaltStack與ZeroMQ
SaltStack底層是基於ZeroMQ進行高效的網絡通信。
ZeroMQ簡介
ØMQ (也拼寫作ZeroMQ,0MQ或ZMQ)是一個為可伸縮的分布式或並發應用程序設計的高性能異步消息庫。它提供一個消息隊列, 但是與面向消息的中間件不同,ZeroMQ的運行不需要專門的消息代理(message broker)。該庫設計成常見的套接字風格的API。能夠提供進程內(inproc)、進程間(IPC)、網絡(TCP)和廣播方式的消息信道, 並支持扇出(fan-out)、發布-訂閱(pub-sub)、任務分發(task distribution)、請求/響應(request-reply)等通信模式。
- SaltStack第一種模式:發布與訂閱
ZeroMQ支持Publish/Subscribe,即發布與訂閱模式,我們經常簡稱Pub/Sub。
Salt Master運行兩個網絡服務,其中一個是ZeroMQ PUB系統,默認監聽4505端口。
可以通過修改/etc/salt/master配置文件的publish_port參數設置。
它是salt的消息發布系統,如果查看4505端口,會發現所有的Minion連接到Master的4505端口,TCP狀態持續保持為ESTABLISHED。
lsof -i:4505
- SaltStack第一種模式:請求與響應
ZeroMQ支持Request-Reply,即請求與響應模式,我們經常簡稱REQ/REP。
Salt Master運行的第二個網絡服務就是ZeroMQ REP系統,默認監聽4506端口,可以通過修改/etc/salt/master配置文件的ret_port參數設置。
它是salt客戶端與服務端通信的端口。比如說Minion執行某個命令后的返回值就是發送給Master的4506這個REP端口
如果安裝了python-setproctitle軟件包,所以我們可以直接看到Salt Master啟動的進程的名稱。
yum install -y python-setproctitle
重啟master和minion
systemctl restart salt-master systemctl restart salt-minion
/usr/bin/salt-master -d ProcessManager # 中心進程管理器 /usr/bin/salt-master -d _clear_old_jobs # 清除舊的Jobs文件及更新fileserver /usr/bin/salt-master -d Publisher # 將任務PUB到Minion端 /usr/bin/salt-master -d EventPublisher # Event Publisher進程 /usr/bin/salt-master -d ReqServer_ProcessManager # ReqServer進程管理器 /usr/bin/salt-master -d MWorker # 工作進程 /usr/bin/salt-master -d MWorker # 工作進程 /usr/bin/salt-master -d MWorker # 工作進程 /usr/bin/salt-master -d MWorker # 工作進程 /usr/bin/salt-master -d MWorker # 工作進程 /usr/bin/salt-master -d MWorkerQueue # 將Ret接口(ROUTER)數據轉發到Worker(DEALER)