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

    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输出

  • 相关阅读:
    javascript的严格模式:use strict
    Ionic在线打包IOS平台应用
    安装nodejs6.9x以后,原来在nodejs4.2.x中运行正常的ionic项目出现问题的解决
    cordova插件分类
    ionic 启用sass
    ngCordova
    为Asp.net WebApi 添加跨域支持
    使用ionic framework创建一个简单的APP
    研究主题
    近两天让我羞愧难当的遭遇
  • 原文地址:https://www.cnblogs.com/whych/p/9398938.html
Copyright © 2020-2023  润新知