概要

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. 解决VM提示:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary files.

    问题: 在开启虚拟机的时候报: VMware Workstation cannot connect to the virtual machine. Make sure you have rights ...

  2. 设计模式之适配器模式(Adapter)(6)

    简介 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用呢? ...

  3. Linux常用基本命令:三剑客命令之-awk模式用法(2)

    1,正则模式,在/etc/passwd中 过滤出使用/bin/bash的用户 ghostwu@dev:~/linux/awk$ awk -v FS=":" 'BEGIN{print ...

  4. 使用普通用户执行 docker

    CentOS 版本 7.4,Docker 版本 docker-1.13 及以下 ll /var/run/docker.sock srw-rw----. 1 root root 0 May 25 14: ...

  5. python中收集函数的解包问题

    收集参数的解包问题 - 把参数放入list或者字典中,直接把list/dict中的值放入收集参数中- 语法:参照案例 # 收集参数的问题 def stu(*args): print("=&q ...

  6. 创建Android Apps的30个经验教训

    这个世界上有两种人-从经验教训中学习的人以及听从别人建议的人.这里是我一路走来学到的一些东西,分享给大家: 在添加任何第三方party之前,请三思:这真的是一个成熟的项目吗? 如果一个东西用户看不到, ...

  7. [20171225]查看并行执行计划注意的问题.txt

    [20171225]查看并行执行计划注意的问题.txt --//如果使用dbms_xplan.display_cursor查看并行执行计划注意一些问题,通过例子说明: 1.环境: SCOTT@book ...

  8. sleep和Sleep区别

    windows Sleep 单位是毫秒 linux sleep 单位是秒

  9. 利用PCA进行故障监测

    利用PCA进行故障监测,传统的统计指标有两种:Hotelling-T2和平方预测误差(Squared prediction error, SPE).T2统计量反映了每个主成分在变化趋势和幅值上偏离模型 ...

  10. Python基础知识:字符串

    1.Python中大写字母命名的变量,默认为常量,不可修改:列如:MYSQL_CONNECTION = '192.168.1.1' 2.字符串换行输入格式:换行用\隔开,两行分别用引号,制表符\t,换 ...