zoukankan      html  css  js  c++  java
  • saltstack回顾【第一篇,初步概念】

    概念:

    1>基于 C/S 架构的服务器基础架构集中化管理平台,通过管理端下发指令,客户端接受指令的方式进行操作,管理端称为 Master,客户端称为 Minion。
    2>具备配置管理、远程执行、监控等功能
    3>基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ【master和slave通过秘钥建立安全连接,通过zeromq消息队列软件建立消息发布连接】
    4>服务占用端口 4505、4506 , 4505位master和minion认证通信端口,4506为master发送命令、minion执行命令返回信息

    工作流程:

    1.Master 与 Minion 之间通过 ZeroMq 进行消息传递,使用了 ZeroMq 的发布订阅模式,连接方式包括 TCP 和 IPC。

    2.Salt 命令,将 cmd.run ls 命令从 salt.client.LocalClient.cmd_cli 发布到 master,获取一个 jodid,根据 jobid 获取命令执行结果。

    3.master 接收到命令后,将要执行的命令发送给客户端 minion。

    4.minion 从消息总线上接收到要处理的命令,交给 minion._handle_aes 处理。

    5.minion._handle_aes 发起一个本地线程调用 cmdmod 执行 ls 命令。线程执行完 ls 后,调用 Minion._return_pub 方法,将执行结果通过消息总线返回给 master。

    6.master 接收到客户端返回的结果,调用 master.handle_aes 方法将结果写的文件中。

    7.salt.client.LocalClient.cmd_cli 通过轮询获取 Job 执行结果,将结果输出到终端。

    转自博文:https://blog.csdn.net/SS_CC_Go/article/details/99635873

    使用:


    目的:通过sls文件,实现文件的传输、文件内容的修改、容器以及其他应用的搭建、java应用的发布

    主机规划:

    (主)master:192.168.25.130

    (从)minion:192.168.25.131     192.168.25.132

    1.yum安装:

    服务端:安装master

    [root@hdoop1 ~]# yum -y install epel-release       #安装第三方epel的yum源,有许多的跟新包
    [root@hdoop1 ~]# yum -y install salt-master salt-minion       #安装saltstack的master跟minion

    客户端:安装minion

    [root@hdoop2 ~]# yum -y install salt-minion

    [root@hdoop3 ~]# yum -y install salt-minion

    2.配置:主从都需要配置

    三台服务器分别:  vim /etc/salt/minion      【指定master】

    master: 192.168.18.86        #16行内容,去注释,指定主机的IP   建议用IP  避免日后有业务需求将主机名修改后相互通信出现问题

    3.启动:

    主:

    [root@hdoop1~]# systemctl start salt-master

    从:2台机器

    [root@hadoop2~]# systemctl start salt-minion

     [root@hadoop3~]# systemctl start salt-minion

     

    salt-key的基本命令:

    salt-key -L #检测当前server端所有minion端key的情况,三种:接收、等待接收和拒绝
    salt-key -a hostname #指定接收某台minion的key
    salt-key -A #接收Unaccepted Keys下所有的minion
    salt-key -d hostname #删除已经接收的机器中指定机器minion key (Accepted Keys:)
    salt-key -D #删除已经接收的所有机器(Accepted Keys:),删除后想重新连接minion,需重启一下对应机器的minion

    接收后查看状态:

    [root@hdoop1 erp]# salt-key
    Accepted Keys:
    hdoop2
    hdoop3
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:

    通过sls文件自定义需求,安装服务或者采集信息:  【eg:sls文件是通过saltstate模块调用函数执行的,以yaml语言描述,层级之间要用2个空格隔开

    sls文件高级方法,通过编写一个top.sls文件,指定minion去执行sls文件

    [root@hdoop1 pki]# vim /etc/salt/master

    搜索file_roots    base、dev、prod是你所能指定的执行环境,对应的目录是你sls文件放置目录

    修改你想指定的目录跟环境(ps:base是必须有的),重启salt-master服务

    到/srv/salt 目录下创建一个apache.sls文件,内容如下: 【ps:$符号是在编辑文本后显示所有字符,避免有多余空格导致格式不对运行不成功  :set list 命令显示】

    apache-install:$
      pkg.installed:$          #pkg是一个内置模块,installd是一个方法,方法调用会根据你服务器系统来决定。eg:  linux 会用yum   ubuntu  会用  apt-get
        - names:$   
          - httpd$
          - httpd-devel$
    $
    apache-service:$    #这个名字是自己定义的,便于自己识别要用到什么功能
      service.running:$   #service  内置模块,running模块下的方法
        - name: httpd$      #注意:启动服务必须是可以通过systemctl启动的服务,如果是二进制包安装的话,需要换一种方式启动
        - enabled: True$   #enabled参数表示开机自启
        - reload: True$      #reload参数表示可以重载

    远程执行:

    包含三大模块  目标 、 模块 、 返回    (返回可以输出到数据库)

    salt  '*'  cmd.run 'w'     #  *:指定的主机,*表示minion的标识id,也可以使用通配符去匹配     cmd.run  模块+方法   w:linux命令行命令
    salt -E  'node(1|2)'  test.ping  # -E 正则表达式,表示或

    top.sls中用:

    base:

      'hdoop(1|2)':

        - match: pcre 

    ##########数据系统#############

    grains:只存在minion中,minion启动时收集的系统信息,当minion所在服务器增配、或者减配,需要重启minion  否则收集到的信息还是老数据 

    应用场景:minion端指定roles(指定后需重启minion),通过  grains +  sls的高级形式  指定不同的roles去匹配对应的minion,minion分别执行不同的sls文件 

    pillar: 主要用于 定义变量、参数

    二者差别:

    出于对数据、服务安全性的问题,salt内部继承了一个控制权限模块,指定某些用户只可以执行某些命令,在master上开启:   【配置文件修改后要重启】

    client_acl:          
      xiaohong:         #这个是指定的用户

        - test.ping       #授权命令

        - nework.*       #也可以通过通配符给与模块下的多个权限

     chmod 755 /var/cache/salt /var/cache/salt/master /var/cache/salt/master/jobs /var/run/salt /var/run/salt/master   ##【没有授权755会报错没有权限执行acl授予的命令】

  • 相关阅读:
    几个开源项目实体层实现方式比较
    ASP.NET MVC+LINQ开发一个图书销售站点
    C#流程控制
    用Java实现多线程服务器程序
    C#修饰符
    C#中的转义字符
    自定义实体类简介
    JAVA学习笔记——多线程(并发)
    java 多线程 wait() 以及 notirfy() 简析
    OA系统权限管理设计
  • 原文地址:https://www.cnblogs.com/byfboke/p/13205948.html
Copyright © 2011-2022 走看看