saltstack
master 启动


REQSERVER
1 接收来自于client的请求,然后派发给空闲的Mworker
2 接收来自于minion的返回信息
4506 bind ROUTER
workers.ipc  bind  DEALER


Publisher
发布来自于client的请求给所有的minion
4505 bind  PUB
publish_pull.ipc bind PULL


EVENTPUBLISHER
主要是通知client,任务执行的状态,结果!
master_event_pull.ipc bind pull
master_event_pub.ipc bind PUB



MWORKER
多进程,实际处理工作
wokers.ipc connect  REP 


minion
4505 connect SUB (接收执行任务,数据以字典格式发送)
4605 connect REQ (返回执行结果)


执行具体任务的时候
job flow
1 salt '*' test.ping
创建了一个client对象
2 client 4506 REQ connect
发送执行项目
3 REQSERVER把请求交给可用的MWOKER,通过wokers.ipc

4 首先,确定你有权利这么做。然后通过publish 把client交予的命令发送给所有的minion。ClearFuncs.publish()
MWokers 产生新的配对
publish_pull.ipc connect PUSH

5 你的woker宣告任务开始执行利用evnetpublish
master_event_pull.ipc  connect push
然后eventpublish通过pub方式把消息传送给所有的client订阅者
(连接到master_event_pub.ipc)

6 消息加密以后通过Publisher发送给所有的mininon

7 所有的minion通过4505的订阅接收消息

8 minion先解密消息,再在本地执行操作,但是事先会判断对象是不是自己

9 minion把响应数据加密后发送给master的4506,master把数据交给可用Mwoker

10 Mwoker接收数据后解密,然后通过eventpublish 发送相对应的状态通知

11 此时你的LocalClient就接收到返回信息了。或者等待超时。

12 当所有的minion都返回了结果,或者超时,则此次任务结束。
salt-zmq.png

results matching ""

    No results matching ""