salt的master和minion怎么通讯的?

583 views
Skip to first unread message

pierce

unread,
Aug 25, 2014, 11:14:29 PM8/25/14
to
最近在看salt,对4505 和4506端口不太明白,我理解是这样的
4505:master通过4505端口,订阅本地发布的信息,比如执行的命令
4506:minion连接上4505端口,获取执行的命令后,再通过连接4506端口,返回给master

请各位大神赐教下

绿肥

unread,
Aug 25, 2014, 11:37:36 PM8/25/14
to saltstack...@googlegroups.com
salt的网络底层, 是基于ZeroMQ(2014.7之前). 所以其网络实现, 对应ZeroMQ里的数据模型.

由于Salt的数据通信, 是由Minion先发起的, 其通信流程如下:
(1) Minion启动时, 会连接Master的4506端口进行认证. 对应的模型为 REQ(minion)/ROUTER(Master). key认证通过后, master会返回自己的publisher端口(默认为4505)地址给minion
(2) Minion接收到master的publisher端口后, 会建立连接到Master的publisher端口(默认4505). 对应的模型为 SUB(minion)/PUB(master). 这就是为什么minion端只需要配置一个master port, 而无需配置master的publish port的原因.
(3) Master端通过salt command或API发送远程执行指令, 由于为PUB/SUB模型中, 所有的Minions均能收到该指令, 然后在minion本地进行targeting匹配, 如果匹配, 则进行执行, 反之直接忽略. 另外PUB/SUB是单向数据传递模型, 只能PUB-->SUB, 无法SUB-->PUB
(4) Minion执行完毕后, 会连接master的4506端口进行结果的发送, 对应的数据模型为(1)中的REQ/ROUTER. 与此同时, Master端也会监听event bus, 捕捉minion的返回结果, 并显示在控制台上.

有兴趣的话, 可以了解下ZeroMQ的模式: http://zguide.zeromq.org/page:all


在 2014年8月26日星期二UTC+8上午11时14分29秒,pierce写道:

pierce

unread,
Aug 26, 2014, 1:43:43 AM8/26/14
to saltstack...@googlegroups.com
非常感谢,顺便问下如果看salt源码的话,底层通讯是看payload 这块吗?还是看其他的

pierce

unread,
Aug 26, 2014, 1:44:50 AM8/26/14
to saltstack...@googlegroups.com
非常感谢,顺便问下,看salt源码的话,底层通讯是看payload 这部分,还是其他的?

在 2014年8月26日星期二UTC+8上午11时37分36秒,绿肥写道:

pengyao

unread,
Aug 26, 2014, 1:49:06 AM8/26/14
to 中国SaltStack用户组邮件列表
我是先学习了zeromq, 当时读的是 http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/ , 知道zeromq的各个模式之后, 然后按照master/minion启动时加载哪些代码进行梳理的.


-- 
您收到此邮件是因为您订阅了Google网上论坛中的“中国SaltStack用户组”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到saltstack-users...@googlegroups.com
要发帖到此论坛,请发送电子邮件至saltstack...@googlegroups.com
通过http://groups.google.com/group/saltstack-users-cn访问此论坛。
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/saltstack-users-cn/5960b0e1-6bcb-4a4f-80eb-6d3cd8c40dfa%40googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

Reply all
Reply to author
Forward
0 new messages