saltstack学习之一:服务架构以及相关配置安装运行
概要
saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编配, 远程执行, 配置管理等等。
部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。号称世界上最快的消息队列ZeroMQ使得saltstack非常快速的管理大量服务器,采用RSA Key方式确认身份,传输采用AES加密,安全性也非常有保障。
服务架构
saltstack是基于C/S服务模式,在该架构中,服务器端Master,客户端Minion。在saltstack架构中,不仅有传统的C/S服务模式,而且有消息队列中的发布与订阅(pub/sub)服务模式。目前我们一般用其C/S架构做批量管理。
minion与master通信模式如下图:

Master与Minion的连接
在master和minion端都是以守护进程的模式运行。SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。整个通信过程可以用debug查看。
master:
salt-master –l debug
ss –a | grep '4505|4506'
minion:
salt-minion –l debug
安装
首先安装epel源,
RHEL/CentOS 6:
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
RHEL/CentOS 7:
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Master端安装:
yum -y install salt-master
Minon端安装:
yum -y install salt-minion
saltstack配置文件
下面给出master和minion所以配置文件的分类解释以及在我们实验环境下所需要设置的配置参数。
master配置文件
在大规模使用saltstack的时候会经常遇到的问题参数
max_open_files:可根据master和minion数量进行适当调整
timeout:根据master和minion网络状况适当调整
auto_accpet和autosign_file:大规模部署的时候可以设置自动签证
master_tops和所有以external开头的参数:saltstack与外部系统进行整合的相关配置参数
主要配置


安全配置

salt-ssh配置

state系统配置

文件服务配置

pillar系统配置

syndic架构配置

日志配置

minion配置文件
主要配置


模块管理配置

state系统配置

文件目录配置

安全配置

日志配置

长连接配置

在我们实验环境下我们使用如下的配置:
master:

minion:

saltstack的证书管理
要理解证书管理首先要了解master与minion认证的原理:
Master与Minion认证
- minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
- master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。
那么一些证书管理的指令可通过salt-key -h查看,下面为常见命令:
小写字母针对的单一对象,大写都是针对全体。
salt-key -L #查询所有接收到的证书
salt-key -a <证书名> #接收单个证书
salt-key -A #接受所有证书
salt-key -d <证书名> #删除单个证书
salt-key -D #删除所有证书
salt-key -P #打印所有的public key
salt-key -p PRINT #打印指定的public key
salt-key -r REJECT #拒绝指等待认证的key
salt-key -R #拒绝所有等待认证的key
salt-key -f FINGER #显示指定key的指纹信息
salt-key -F #显示所有key的指纹信息

日常命令参数:
master:
/usr/bin/salt #salt核心操作命令
/usr/bin/salt-cp #salt文件传输命令
/usr/bin/salt-key #salt证书管理命令
/usr/bin/salt-master #salt master服务命令
/usr/bin/salt-run #salt master runner命令
/usr/bin/salt-unity #salt统一的调用包装器,围绕其他的Salt CLI脚本
1.salt-cp 分发文件到minion上,不支持目录分发,通常在master运行
salt-cp [options] '<target>' SOURCE DEST
salt-cp '*' testfile.html /tmp
salt-cp 'test*' index.html /tmp/a.html
2.alt-master master运行命令
salt-master [options]
salt-master #前台运行master
salt-master -d #后台运行master
salt-master -l debug #前台debug输出
3.salt-run 该命令执行runner(salt带的或者自定义的,runner以后会讲),通常在master端执行,比如经常用到的manage
salt-run [options] [runner.func]
salt-run manage.status #查看所有minion状态
salt-run manage.down #查看所有没在线minion
salt-run manged.up #查看所有在线minion
minion:
/usr/bin/salt-call #拉取命令
/usr/bin/salt-minion #服务命令
1.salt-call(定时同步)该命令通常在minion上执行,minion自己执行可执行模块,不是通过master下发job
salt-call [options] <function> [arguments]
salt-call test.ping #自己执行test.ping命令
salt-call cmd.run 'ifconfig' #自己执行cmd.run函数
可以把salt-call state.highstate命令放在minion端的定时任务中,来进行自动请求同步。
也可以把salt '*' state.highstate放在master端的定时任务中,来进行自动推送到所有机器。
也可以在/etc/salt/minion配置文件中加入如下内容,如下是每隔5分钟同步,效果一样。
schedule:
highstate:
function:state.highstate
seconds:300
2.salt-minion minion端运行的命令
salt-minion [options]
salt-minion #前台运行
salt-minion -d #后台运行
salt-minion -l debug #前台debug输出
saltstack学习之一:服务架构以及相关配置安装运行的更多相关文章
- SpringCloud学习--微服务架构
目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构? 软件架构是一个包含各种 ...
- ElasticSearch学习笔记--2、ES相关配置
1.配置文件 ES的配置文件位置:config/elasticsearch.yml可以直接搜索elasticsearch.yml 2.配置远程api访问 network.host: 192.168.1 ...
- Struts2学习笔记(1)---相关配置
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 1创建action对象(三种) 1 创建普通的类,不继承任何类, ...
- SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载
相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗? 这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...
- 【lua学习笔记】——在sublime中配置Lua运行环境
一.让Sublime可以运行lua脚本 打开sublime 选择tools-->Build System-->New Build System 在新出现的文件中输入如下内容: { &q ...
- OpenCASCADE(一) VS2017+OpenCASCADE+MFC 下载配置安装运行单文档程序画个基本图形
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12368154.html 一.下载OpenCASCADE 官网下载是: http://www.o ...
- Redis学习笔记:windows上redis的安装运行
Redis的windows版本地址https://github.com/MicrosoftArchive/redis 下载之后解压之 在当前解压目录下可以看到如下文件 在当前目录下打开命令行窗口,输入 ...
- 【.net core】电商平台升级之微服务架构应用实战
一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...
- Re:从0开始的微服务架构:(一)重识微服务架构--转
原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_ ...
随机推荐
- js之搜索框
目标效果:点击搜索框,搜索框内提示信息消失,可输入搜索信息,点击搜索框外搜索框如果没提示信息或者为空时,显示搜索框提示信息,如果有搜索信息,显示搜索信息. 代码如下: <!DOCTYPE htm ...
- VUE CLI 3.0 项目引入 ElementUI
ElementUI 官网: http://element-cn.eleme.io/#/zh-CN/component/installation 一.通过npm安装依赖包 1. 进入到项目目录,执行指令 ...
- NoHttp封装--03 cookie
NoHttp请求自动维持Cookie: 1.支持Session.Cookie.临时Cookie的位置. 2.支持App重启.关机开机后继续持久化维持. 3.提供了接口,允许开发者监听Coo ...
- AJAX的优点 个人理解记录
1:对网站性能的提高.例如我只需要刷新页面中购物车的数据,使用ajax时不需要请求整个页面的数据,对于客户端和服务器的压力都会降低, 减少了ISP的负担,服务器的空间和带宽压力都会降低. 2:用户体验 ...
- python第八十四天---十五周作业
后台管理页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 【HANA系列】SAP HANA XS的JavaScript API详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS的Java ...
- Asp.net webForm设置允许表单提交Html
1. 在表单需要提交Html的页面头部加入 ValidateRequest="false" <%@ Page Language="C#" AutoEve ...
- python基础 - 变量与运算符
变量与运算符 变量 定义一个变量 a = [1,2,3,4,5,6] print(a) # [1,2,3,4,5,6] 变量命名要求: 首字母不能是数字 只能包含字符数字下划线 不能是关键字 type ...
- ABAP 中JSON格式的转换与解析
RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中.本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法. (如果你是因为引号的问题搜索到了这篇文章,请直接拉 ...
- 怎样从本地删除git远程仓库里面的文件
git是大家通用的一种版本控制系统,便捷高效,各种命令需要牢记,今天小渔介绍给大家的是git的删除命令,即将文件从远程仓库中删除的操作. 方法/步骤 首先,我们打开自己的本地GIT仓库,在根目 ...