概要

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认证

  1. minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
  2. 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学习之一:服务架构以及相关配置安装运行的更多相关文章

  1. SpringCloud学习--微服务架构

    目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构? 软件架构是一个包含各种 ...

  2. ElasticSearch学习笔记--2、ES相关配置

    1.配置文件 ES的配置文件位置:config/elasticsearch.yml可以直接搜索elasticsearch.yml 2.配置远程api访问 network.host: 192.168.1 ...

  3. Struts2学习笔记(1)---相关配置

    Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 1创建action对象(三种) 1 创建普通的类,不继承任何类, ...

  4. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?  这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...

  5. 【lua学习笔记】——在sublime中配置Lua运行环境

    一.让Sublime可以运行lua脚本 打开sublime 选择tools-->Build System-->New Build System   在新出现的文件中输入如下内容: { &q ...

  6. OpenCASCADE(一) VS2017+OpenCASCADE+MFC 下载配置安装运行单文档程序画个基本图形

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12368154.html 一.下载OpenCASCADE 官网下载是: http://www.o ...

  7. Redis学习笔记:windows上redis的安装运行

    Redis的windows版本地址https://github.com/MicrosoftArchive/redis 下载之后解压之 在当前解压目录下可以看到如下文件 在当前目录下打开命令行窗口,输入 ...

  8. 【.net core】电商平台升级之微服务架构应用实战

    一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...

  9. Re:从0开始的微服务架构:(一)重识微服务架构--转

    原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_ ...

随机推荐

  1. Android系统常用URI

    android系统常用URI android系统管理联系人的URI如下: ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri ContactsContrac ...

  2. 百度网盘满速下载器:pandownload

    http://pandownload.com/index.html 作者提示:1.软件使用 C++ 编写2.大文件需要等待一段时间才会有下载速度3.文件名含有特殊字符可能会下载出错,请重命名再下载4. ...

  3. Python 练习:三级菜单选择城市

    info = { 'GuangDong':{ 'GuangZhou': ['TianHe', 'HaiZhu'], 'MaoMing': ['MaoNan', 'DianBai']}, 'ShanDo ...

  4. 为什么 C# 比 C++ 编译快那么多

    Go 我不懂,下面以 C++ 和 C# 对比来说明为什么 C++ 编译慢和 C# 编译快. C 和 C++ 文件的编译经过几个主要步骤: 处理续行符处理(“\”)之类的杂事 词法分析,解析出 toke ...

  5. Openlayer3之空间参考扩展

    Openlayers默认了两种空间参考,一个是EPSG4326,一个是EPSG3857,其它的空间参考需要进行扩展才能使用.所以我们初始化时进行了如下操作: 1.将配置数据库中所有的空间参考读取出来, ...

  6. WebLogic登录管理控制台、以及相关问题解决

    1.控制台的登录 登录地址是: http://管理实例IP:端口号/console 其中,管理实例的IP或者是管理实例所在主机的主机名 端口号默认7001 因此通过http://localhost:7 ...

  7. 【转】PHP 杂谈 坑爹的file_exists

    转自:http://www.cnblogs.com/baochuan/archive/2012/05/06/2445822.html 介绍   我发现了一个问题,今天与大家分享.我把整个过程描述一下. ...

  8. recovery 恢复出厂设置失败Data wipe failed

    最近客户反馈,编译32位的android系统,在recovery中执行恢复出厂设置的时候失败了,失败的打印提升信息如下. Formatting /data... [ 2.191404] E:get_f ...

  9. WebStorm连接Github教程

    上学期刚开学的时候看过一次git相关的内容,很久没用过,忘了,两个月前又看了一次还精心做了笔记,也没有具体使用,又忘了,所以,避免又双叒叕忘了,我决定正式把git用起来.刚开始是通过Git Bash来 ...

  10. 关于excel中的查找

    弹出查找界面后,点击“选项”按钮 在范围下拉框中选择: 1.工作表:表示在当前表sheet中进行查找 2.工作簿:表示在此excel整个文件中进行查找