zoukankan      html  css  js  c++  java
  • Saltstack学习(五)-架构扩展

    一、saltstack多master架构

    单台master管理多台minion时,master压力过大,存在单点问题,需要对master做高可用

    1.1、多master架构原理

    image

    原理说明:

    1)minion端配置多个master地址

    2)两台master之间的配置文件,状态文件,密钥文件必须相同

    方案设计

    1)使用rsync+inotify或sersync实现文件的同步

    2)使用nfs共享挂载的方式

    1.2、rsync方式

    1)安装新的master

    yum install salt-master -y
    #注意:先不要启动

    2)同步旧master的配置文件,状态文件,密钥文件到新的master上

    #配置文件
    rsync -avz /etc/salt/master server-two:/etc/salt/
    
    #密钥文件
    rsync -avz /etc/salt/pki/master/master.* server-two:/etc/salt/pki/master/  #master的公钥与私钥
    
    #状态文件
    rsync -avz /srv server-two:/

    3)修改minion配置,重启minion

    # vim /etc/salt/minion
    master:
      - server-one
      - server-two
    # systemctl restart salt-minion

    4)启动新master,并测试

    systemctl start salt-master
    salt-key -A -y  
    salt '*' test.ping

    5)实时同步

    rsync+inotifysersync方式完成实时同步

    脚本思路:

    #!/usr/bin/bash
    Srv_Config=/srv
    Master_Config=/etc/salt/master
    Master_New=10.0.0.21
    Date=$(date +%F-%T)
    
    rsync -avz --delete $Srv_Config  $Master_New:/ &>/dev/null && 
    rsync -avz --delete $Master_Config $Master_New:$Master_Config &>/dev/null
            if [ $? -eq 0 ];then
                    echo "$Date Rsync Salt Config Is Ok!"
            else
                    echo "$Date Rsync Salt Config Is Err!"
            fi

    1.3、NFS挂载方式

    待续


    二、salt syndic架构

    2.1、syndic原理

    image

    image

    原理说明

    1)主控master可以控制一群master,通过syndic将操作命令传输给受控master,受控master来完成对自己旗下minion的管理,并将结果传回主控master,从而实现了主控master对所有minion的间接管理。

    2)syndic节点上也需要master,,syndic连接主控master

    文档:https://docs.saltstack.com/en/latest/topics/topology/syndic.html

    2.2、syndic配置

    环境说明:

    master syndic       minion

    10.0.0.11

    10.0.0.21

    10.0.0.22,10.0.0.23

    1)配置顶级master

    [root@salt-master srv]# yum install salt-master -y
    [root@salt-master srv]# vim /etc/salt/master
    order_masters: True   #打开表示master与syndic通信
    [root@salt-master srv]# systemctl restart salt-master

    2)配置syndic

    [root@syndic ~]# yum install salt-syndic -y
    [root@syndic ~]# vim /etc/salt/master
    # If this master will be running a salt syndic daemon, syndic_master tells
    # this master where to receive commands from.
    syndic_master:
      - 10.0.0.11   #配置master的ip地址
    
    [root@syndic ~]# systemctl restart salt-master
    [root@syndic ~]# systemctl restart salt-syndic

    3)配置minion

    两台执行相同操作

    [root@salt-minion2-c7 ~]# yum install salt-minion -y
    [root@salt-minion2-c7 ~]# vim /etc/salt/minion
    master:
      - 10.0.0.21   #配置syndic的地址
    [root@salt-minion2-c7 ~]# systemctl restart salt-minion
    
    #如果之前已经添加过受信任的Master需要删除对应的key,然后重启
    rm -f /etc/salt/pki/minion/minion_master.pub

    4)master添加syndic key信任,syndic添加minion key信任

    #master上
    [root@salt-master srv]# salt-key -A -y
    [root@salt-master srv]# salt-key -L
    Accepted Keys:
    salt-minion1-c7
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:
    
    #syndic上
    [root@syndic minion]# salt-key -A -y
    [root@syndic minion]# salt-key -L
    Accepted Keys:
    salt-minion2-c7
    salt-minion3-c7
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:
    
    #master上测试
    [root@salt-master ~]# salt '*' test.ping   #显示的是两台minion,说明master知道有多少台minion,但不知道多少syndic
    salt-minion2-c7:
        True
    salt-minion3-c7:
        True
    
    #syndic上测试
    [root@syndic minion]# salt '*' test.ping
    salt-minion2-c7:
        True
    salt-minion3-c7:
        True

    说明:syndic的file_root、pillar_root必须与高级master一致,master知道有多少台minion,但不知道多少syndic

    三、salt masterless架构(无主架构)

    Salt脱离Master独立运行,这种状态可以称为无mastersalt

    这种模式可以用于登陆minion后的一些调试任务,可以将状态文件配置在本地进行执行

    文档:https://docs.saltstack.com/en/latest/topics/tutorials/quickstart.html

    3.1、无主架构配置

    1)配置minion为本地执行模式

    [root@salt-minion3-c7 ~]# vim /etc/salt/minion
    file_client: local
    
    file_roots:
      base:
        - /srv/salt/
    
    pillar_roots:
      base:
        - /srv/pillar
    
    [root@salt-minion3-c7 ~]# systemctl restart salt-minion

    2)编写本地sls文件

    [root@salt-minion3-c7 ~]# cat /srv/salt/demo.sls 
    pkg-demo:
      pkg.installed:
        - pkgs:
          - screen
          - nmap

    3)使用salt-call本地执行

    [root@salt-minion3-c7 ~]# salt-call --local state.sls demo
    [root@salt-minion3-c7 ~]# salt-call --local cmd.run 'w'
    local:
         13:43:23 up  4:20,  1 user,  load average: 0.01, 0.02, 0.05
        USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
        root     pts/0    10.0.0.1         09:26    3.00s  0.82s  0.02s w
  • 相关阅读:
    Linux C多线程实现生产者消费者
    数据库视图创建学习
    jsp生成好看的验证码
    每日英语
    ES6学习笔记(一)——let和const
    dataTables的导出Excel功能
    jquery生成二维码图片
    angular2表单初体验
    echarts系列之动态加载数据
    js刷新页面方法
  • 原文地址:https://www.cnblogs.com/hujinzhong/p/11441616.html
Copyright © 2011-2022 走看看