SaltStack与ZeroMQ(二)

  • SaltStack与ZeroMQ

SaltStack底层是基于ZeroMQ进行高效的网络通信。

ZeroMQ简介

    ?MQ (也拼写作ZeroMQ,0MQ或ZMQ)是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库。它提供一个消息队列, 但是与面向消息的中间件不同,ZeroMQ的运行不需要专门的消息代理(message broker)。该库设计成常见的套接字风格的API。能够提供进程内(inproc)、进程间(IPC)、网络(TCP)和广播方式的消息信道, 并支持扇出(fan-out)、发布-订阅(pub-sub)、任务分发(task distribution)、请求/响应(request-reply)等通信模式。

Stack第一种模式:发布与订阅

ZeroMQ支持Publish/Subscribe,即发布与订阅模式,我们经常简称Pub/Sub。

Salt Master运行两个网络服务,其中一个是ZeroMQ PUB系统,默认监听4505端口

可以通过修改/etc/salt/master配置文件的publish_port参数设置。

它是salt的消息发布系统,如果查看4505端口,会发现所有的Minion连接到Master的4505端口,TCP状态持续保持为ESTABLISHED。

 - 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)

  

原文地址:https://www.cnblogs.com/jimmy-xuli/p/9124990.html

时间: 2024-11-08 22:30:32

SaltStack与ZeroMQ(二)的相关文章

了解saltstack的通信协议zeromq(二)

上文讨论了PAIR/PAIR,REQ/REP两种模式,现在看看PUB/SUB和PUSH/PULL模式. PUB/SUB:发布订阅模式,跟我们订阅新闻类似的,采用异步IO,多对多模式,如果没有订阅,服务端发送的消息直接丢弃掉. pub_server.py import zmq import random import sys import time port = "5556" if len(sys.argv) > 1:         port =  sys.argv[1]    

Saltstack系列之二——Targeting

昨天原本打算是写salt的WebUi-halite的,不过想了想,还是先写一些"看得见.摸得着的"的一些显而易见,最基本的用处吧.(尝到一些甜头后,才会继续去钻研吧...哈哈~) 那,什么是Targeting呢? 官方给到的解释是: Specifying which minions should run a command or execute a state by matching against hostnames, or system information, or define

SaltStack(五) SaltStack与ZeroMQ

一.ZeroMQ描述 我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器,这些性能的提供主要来自于ZeroMQ,因为SaltStack地城是基于ZeroMQ进行高效的网络通信,ZMQ用于node与node间的通信,node可以是主机也可以可以是进程. 二.ZeroMQ简介 ZeroMQ(我们通常还会OMQ,Zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使用的socket编程更加简单.简洁和性

saltstack之(十二)配置管理mount

线上很多服务器都需要挂载存储上的公共目录,并实现开机启动(/etc/fstab),比如web的静态文件共享目录,日志远程集中收集等. 一.批量挂载部分. 1.在node1上配置nfs服务器,有关nfs服务器配置自己查阅相关文档. 2.在node1上,即salt-master服务端编写state.sls文件. 3.state文件如下: [[email protected] base]# pwd /srv/salt/base [[email protected] base]# tree . ├──

Saltstack中ZeroMQ那点事

基本简介 前置阅读 环境说明 Salt中的ZeroMQ patterns Salt Master Salt Minion Salt 总结 基本简介 Salt 底层网络架构采用 ZeroMQ 进行实现(2014.1及之前版本, 从2014.7起, Salt新增 RAET ), 官方手册 有简短描述. 那么今天就一窥在Salt内部使用了哪些 ZeroMQ pattern? 各个组件间又是如何协作的哪? 前置阅读 0MQ - The Guide: Sockets and Patterns 环境说明 C

Saltstack学习(二)-数据系统

saltstack主要有两种数据系统: Grains Pillar 一.数据系统-Grains 1.1.Grains简介 1)当minion启动后会收集自身的状态信息即grains信息,grains信息是静态的,存储在minion端,如操作系统版本,内核版本,CPU,内存,硬盘,设备型号等.这些信息可以作为master端的匹配目标 2)master端可以自定义grains设置,但需要执行命令推送到minion端 3)master端推送的数据会存放在minion端的/var/cache/salt

saltstack使用之二(完成部署编译nginx以及部分cp模块的使用)

书接上一篇原创其中有好同事的帮忙一起测试不容易写出文档整理一下 salt.modules.cp.get_dir(path, dest, saltenv='base', template=None, gzip=None, env=None) Used to recursively copy a directory from the salt master 1.复制目录 salt '*' cp.get_dir salt://path/to/dir/ /minion/dest 从主节点的能访问到的UR

SaltStack 实践课程二 PHP+NGINX

1.查看file_roots file_roots: base: - /srv/salt/ dev: - /srv/salt/dev/ prod: - /srv/salt/prod/ 2.目录结构如下 [[email protected] prod]# pwd /srv/salt/prod [[email protected] prod]# tree . |-- nginx | `-- files | `-- nginx-1.9.15.tar.gz |-- pcre | |-- files |

基于Saltstack、Artifactory打造传统模式下持续部署平台

一. 持续部署 1. 现状 由于没有建立标准的持续部署流程,导致了版本管理混乱,制品管理混乱,上线持续时间长,上线测试覆盖不全面,业务流量上升后故障较多,排查复杂.运维.测试.开发人员每次版本迭代的时候,都要可能需要经历一次通宵的历练,并且这种在上线的第二天依然会出现很多线上故障. 2. 痛点 ·自动化发布体系覆盖率低.·无标准化发布的流程.a) 只注重敏捷.忽视质量问题:b) 变更频繁导致故障率增加:c) 开发语言种类多,发布制品管理混乱,发布方式复杂:·安全问题容易被忽视. 二. 工具介绍