• 10 masterless、高可用、salt执行模块开发、sydic架构


    1、salt无master

    官方文档: http://docs.saltstack.cn/topics/tutorials/quickstart.html

    1、使用场景

    1.在项目中使用salt,写一个state,salt自动帮你配置ok

    2.没有master情况,使用salt,比如mac笔记本

    3.本地运行state,一台服务器怎样用salt

    场景: 2w台门店的电脑,网络不稳定

    用master minion,一天只能连接几十台

    解决:salt-call,连接一次,下发所有的计划任务,自己去跑

    2、node3安装配置

    node3安装salt-minion

    https://www.cnblogs.com/venicid/p/11258428.html#_label1

    [root@localhost ~]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/repo/epel-7.repo
    [root@localhost yum.repos.d]# yum clean expire-cache
    [root@localhost yum.repos.d]# yum install salt-minion -y

    配置salt无master模式

     

     

     

     

    3、本地执行

     停止minion

      本地执行

    # 查看帮助
    [root@localhost yum.repos.d]# salt-call -he
    [root@localhost yum.repos.d]# salt-call --local cmd.run w

     

    4、执行状态

    # 创建salt目录
    [root@localhost yum.repos.d]# cd
    [root@localhost ~]# mkdir /srv/salt
    [root@localhost ~]# cd /srv/salt
    
    # 创建状态
    [root@localhost salt]# vim demo.sls

    # 创建top
    [root@localhost salt]# vim top.sls

     

    # 执行state
    [root@localhost salt]# salt-call --local state.sls demo
    # top执行
    [root@localhost salt]# salt-call --local state.highstate

    2、slat-master高可用 

    官方文档 http://docs.saltstack.cn/topics/tutorials/multimaster.html

    1、什么是高可用 

    master是单点的,万一1个挂了,启动备份的

    其他配置

    告诉minion是多个master的

    超时时间

     

    2、node3装master

    node1为master

    [root@localhost ~]# yum install salt-master -y

     node2为minion

    [root@linux-node2 ~]# vim /etc/salt/minion

     

    3、数据怎么同步

    数据同步要自己来做???

    配置文件同步

    [root@linux-node1 ~]# scp -P 22 /etc/salt/master 192.168.194.128:/etc/salt
    Warning: Permanently added '192.168.194.128' (ECDSA) to the list of known hosts.
    root@192.168.194.128's password: 
    master                                                              100%   29KB  15.9MB/s   00:00    
    [root@linux-node1 ~]# 

    master-key同步

    minion-key同步

     

     file roots,piliar roots 同步

    简便方法。搞个fs,去mount

    mount,老师也是

    key比较重要,官方不建议

    3、salt执行模块开发

    1、service模块

    [root@linux-node1 ~]# ls /usr/lib/python2.7/site-packages/salt/modules/

    service模块 

    2、cmd.retcode

    [root@linux-node1 /srv/salt/base/_modules]# salt * cmd.retcode 'touch /opt/testtesttest'
    [root@linux-node1 /srv/salt/base/_modules]# salt * cmd.retcode 'iotop -b -n 30'

    3、自定义模块

    路径,_modules,不能修改

    [root@linux-node1 ~]# cd /srv/salt/base/
    [root@linux-node1 /srv/salt/base]# mkdir _modules
    [root@linux-node1 /srv/salt/base]# ll
    total 8
    drwxr-xr-x. 3 root root 4096 Aug  8 03:06 init
    drwxr-xr-x  2 root root    6 Nov  4 22:34 _modules
    -rw-r--r--  1 root root  404 Nov  4 05:36 top.sls
    drwxr-xr-x. 3 root root   37 Jul 30 09:25 web
    [root@linux-node1 /srv/salt/base]# cd _modules/

     创建模块

    [root@linux-node1 /srv/salt/base/_modules]# vim my_disk.py
    [root@linux-node1 /srv/salt/base/_modules]# cat my_disk.py 
    def list():
        cmd = 'df -h'
        ret = __salt__['cmd.run'](cmd)
        return ret

    同步到所有minion

     

     

     master执行

    [root@linux-node1 /srv/salt/base/_modules]# salt * my_disk.list

     4、syndic架构

    管理上万个minion

    一个master管理的minion是有限的

    官网 https://docs.saltstack.com/en/latest/topics/topology/syndic.html

    参考blog:https://www.cnblogs.com/kaishirenshi/p/9420790.html

                    http://www.ttlsa.com/saltstack/saltstack-syndic-example/

    1、安装

    多层syndic

     

    node3 装master

    [root@localhost ~]# yum install salt-master -y

    node1 装 sydic

    [root@linux-node1 ~]# yum install salt-syndic -y

     2、配置

     node1陈浩南配置 MasterOfMaster:node3 蒋先生

    master和syndic在同一个机器,同一个配置文件

    [root@linux-node1 ~]# vim /etc/salt/master

     node3 蒋先生,order_master

    [root@localhost ~]# vim /etc/salt/master 

     3、启动

    node1 陈浩南

     node3蒋先生

    node3执行 salt-key

    蒋先生node3接受陈浩南node1

     这是,陈浩南node1管理下的2个minion小弟

     master:注意,返回的结果是所有minion端的结果,而不是syndic端本身的结果。

     

    syndic其实是特殊的minion

    4、优化

     涉及到文件的同步,不涉及到key

    有点:可以创建多层级的

    缺点,涉及到数据同步

            master不知道自己有多少个sydic (代码设计模式中,不知道)

    不是特别的完美

    其他公司:

          1. 用消息队列,代替syndic,agent和master中间加个消息队列。像OpenStack

          2. 调优,网络稳定时候可以用

          3. 做多个集群,分而治之

  • 相关阅读:
    eclipse安装插件最简单的方法!!
    mysql数据库导入sql文件的方法。
    拿起丢掉的东西,才叫做坚持。
    个人总结作业
    黄金点游戏程序注解
    结对项目的完成与体会
    第三周任务学习记录
    vs2013的安装与使用 测试
    习题作业
    对于四则运算编程自己的过程问题
  • 原文地址:https://www.cnblogs.com/venicid/p/11795281.html
Copyright © 2020-2023  润新知