zoukankan      html  css  js  c++  java
  • mine 数据

    THE SALT MINE

    Salt Mine被用于在minion端收集任意数据,并被存放在master并扩散到其他minion,这些数据可以通过salt.modules.mine模块从minion端获取。


    MINE VS GRAINS

    mine与grains的比较

    mine数据要比grains更加的灵活实时性更高,grains多是静态数据,而且刷新也是非常有限的,当minion需要从其他minion中获取信息的时候,利用master端定时收集到的mine数据进行共享,取代minion节点之间的对等通信,减少消耗。

    在minion端有一个定时任务在/etc/salt/minion.d/_schedule.conf文件中,里面会定时运行mine.update,将mine数据反馈到master端。


    MINE FUNCTIONS

    在minion端配置mine函数,可以在主配置文件中也可以在pillar中

    示例:

    1 mine_functions:
    2   test.ping: []            #参数必须设置,即使为空
    3   network.ip_addrs:
    4     interface: eth0
    5     cidr: '10.0.0.0/8'
    View Code

    查看master收到的minion声明的mine信息
      salt 'minion-id' mine.get '*' network.ip_addrs
    当该mine信息被扩散到其他minion机器的环境中后需要删除的话使用如下方法
      salt '*' mine.delete '*' network.ip_addrs


     MINE FUNCTIONS ALIASES

    函数别名

    示例:

    1 mine_functions:
    2   network.ip_addrs: [eth0]
    3   networkplus.internal_ip_addrs: []
    4   internal_ip_addrs:
    5     mine_function: network.ip_addrs
    6     cidr: 192.168.0.0/16
    7   ip_list:
    8     - mine_function: grains.get
    9     - ip_interfaces
    View Code

    支持多函数和多参数


    MINE INTERVAL

    执行mine函数执行的间隔

    配置在minion.d/mine.conf文件中

      mine_interval: 60


    MINE IN SALT-SSH

    从2015.5.0版本开始,salt-ssh支持mine.get功能

    由于minion不能提供自己的mine函数配置,所以功能参数就只能从一下3个地方获取:
    1、Roster data
    2、Pillar
    3、Master config

    salt-ssh里面的mine函数配置示例:

    1 test:
    2   host: 104.237.131.248
    3   user: root
    4   mine_functions:
    5     cmd.run: ['echo "hello!"']
    6     network.ip_addrs:
    7       interface: eth0
    View Code

    MINIONS TARGETING WITH MINE

    利用收集到的mine数据获取其他的minion信息,用于部署配置
    参考mine模块的使用
      链接:https://docs.saltstack.com/en/2016.11/ref/modules/all/salt.modules.mine.html#module-salt.modules.mine

    EXAMPLE

    配置一个HA服务的配置文件,使用mine.get获取指定角色的minion的IP

     (1)定义pillar的top文件

    1 /srv/pillar/top.sls:
    2 
    3 base:
    4   'G@roles:web':
    5     - web
    View Code

    (2)定义pillar的sls文件,里面添加mine fuction

    1 /srv/pillar/web.sls:
    2 
    3 mine_functions:
    4   network.ip_addrs: [eth0]
    View Code

    (3)开启minion端定时执行mine函数

    1  /etc/salt/minion.d/mine.conf:
    2  mine_interval: 5
    View Code

     (4)编写任务sls文件

    1 /srv/salt/haproxy.sls:
    2 haproxy_config:
    3   file.managed:
    4     - name: /etc/haproxy/config
    5     - source: salt://haproxy_config
    6     - template: jinja
    View Code

         配置文件中内容

         
    1 /srv/salt/haproxy_config:
    2 <...file contents snipped...>
    3 
    4 {% for server, addrs in salt['mine.get']('roles:web', 'network.ip_addrs', expr_form='grain') | dictsort() %}
    5 server {{ server }} {{ addrs[0] }}:80 check
    6 {% endfor %}
    View Code

    在配置文件中使用mine.get获取到复合条件的minion主机的信息,利用模板渲染到配置文件中

    总结:
      使用mine函数的功能可以帮我们获取到指定的其他minion上的一些信息,譬如grains或pillar的数据信息以及一些全局定义的信息,这些信息是很新鲜的以指定的间隔刷新,使用

            起来会感觉比grains和pillar更加方便,但也是很消耗机器资源,提高了系统的负载压力。

  • 相关阅读:
    互联网 | 逻辑上的黑话才是真正的花里胡哨
    OLAP引擎:基于Druid组件进行数据统计分析
    数据调度组件:基于Azkaban协调时序任务执行
    职场 | 工作五年之后,对技术和业务的思考
    数据搬运组件:基于Sqoop管理数据导入和导出
    valgrind 内存泄漏分析
    Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同
    Solon 的想法与架构笔记
    对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.8 发布
    对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.2 重要发布
  • 原文地址:https://www.cnblogs.com/solitarywares/p/7467282.html
Copyright © 2011-2022 走看看