SaltStack底层是基于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。
[root@saltStack01 base]# lsof -i:4505 -n COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mini 11073 root 21u IPv4 383431 0t0 TCP 10.124.124.78:39330->10.124.124.78:4505 (ESTABLISHED) salt-mast 31457 root 16u IPv4 301885 0t0 TCP *:4505 (LISTEN) salt-mast 31457 root 18u IPv4 301971 0t0 TCP 10.124.124.78:4505->10.124.124.78:39330 (ESTABLISHED) salt-mast 31457 root 19u IPv4 414261 0t0 TCP 10.124.124.78:4505->10.124.124.79:41858 (ESTABLISHED) salt-mast 31457 root 20u IPv4 414262 0t0 TCP 10.124.124.78:4505->10.124.124.80:46214 (ESTABLISHED) [root@saltStack01 base]#
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启动的进程的名称。
[root@saltStack01 base]# yum install -y python-setproctitle [root@saltStack01 base]# systemctl restart salt-master [root@saltStack01 base]# systemctl restart salt-minion [root@saltStack01 base]# ps aux | grep salt root 11070 0.0 0.2 306960 21308 ? Ss Apr13 0:00 /usr/bin/python /usr/bin/salt-minion root 11073 0.0 0.6 699156 47392 ? Sl Apr13 1:59 /usr/bin/python /usr/bin/salt-minion root 11081 0.0 0.2 402132 20104 ? S Apr13 0:00 /usr/bin/python /usr/bin/salt-minion root 80387 3.1 0.5 388072 39988 ? Ss 09:47 0:00 /usr/bin/python /usr/bin/salt-master ProcessManager root 80393 0.0 0.2 310484 20028 ? S 09:47 0:00 /usr/bin/python /usr/bin/salt-master MultiprocessingLoggingQueue root 80398 0.0 0.4 468808 33788 ? Sl 09:47 0:00 /usr/bin/python /usr/bin/salt-master ZeroMQPubServerChannel root 80401 0.0 0.4 386880 33420 ? S 09:47 0:00 /usr/bin/python /usr/bin/salt-master EventPublisher root 80402 0.3 0.4 390336 37064 ? S 09:47 0:00 /usr/bin/python /usr/bin/salt-master Maintenance root 80403 0.0 0.4 387928 34128 ? S 09:47 0:00 /usr/bin/python /usr/bin/salt-master ReqServer_ProcessManager root 80404 0.0 0.4 764784 34720 ? Sl 09:47 0:00 /usr/bin/python /usr/bin/salt-master MWorkerQueue root 80411 11.4 0.6 483788 47676 ? Sl 09:47 0:01 /usr/bin/python /usr/bin/salt-master MWorker-0 root 80412 11.4 0.6 483800 47676 ? Sl 09:47 0:01 /usr/bin/python /usr/bin/salt-master MWorker-1 root 80413 11.2 0.6 483800 47688 ? Sl 09:47 0:01 /usr/bin/python /usr/bin/salt-master MWorker-2 root 80414 11.3 0.6 483796 47684 ? Sl 09:47 0:01 /usr/bin/python /usr/bin/salt-master MWorker-3 root 80415 11.3 0.6 483800 47692 ? Sl 09:47 0:01 /usr/bin/python /usr/bin/salt-master MWorker-4 root 80416 0.0 0.4 461804 34484 ? Sl 09:47 0:00 /usr/bin/python /usr/bin/salt-master FileserverUpdate root 81400 0.0 0.0 112652 956 pts/1 S+ 09:47 0:00 grep --color=auto salt [root@saltStack01 base]#进程描述
/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)
- ZeroMQ支持Request-Reply,即请求与响应模式,我们经常简称REQ/REP。
- Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口
- 可以通过修改/etc/salt/master配置文件的ret_port参数设置。
- 它是salt客户端与服务端通信的端口。
- 比如说Minion执行某个命令后的返回值就是发送给Master的4506这个REP端口
- 如果安装了python-setproctitle软件包,所以我们可以直接看到Salt Master启动的进程的名称。