• Saltstack架构扩展


    1.Salt多Master架构

    SaltMaster架构可以看成Master->Minion模式的简单水平扩展,两台Master都可以对所有Minion进行管理,如下图:

    SaltMaster只需要在minion端配置多个Master地址即可实现
    Salt支持多Master配置,SaltMaster方式是让一个minion可以同时接收两台或多台master的管理
    因此多个Master之间不会有任何感知,也没有状态的同步,所有想做高可用多Master架构,需要自己来维护多个Master并且要让他们的配置文件、状态文件和密钥文件完全相同
    否则仅在minion端配置多个Master地址是无法实现高可用架构的。

    1.启动一台新服务器,安装salt-master

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

    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/
    
    //状态文件
    rsync -avz /srv server-two:/
    

    3.修改minion的配置, 随后重启minion

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

    4.启动新的master服务, 在server-two上执行, 并执行命令测试

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

    注意: 如果生产环境中配置多master需要注意多master之间的配置文件、状态文件和密钥文件的实时同步问题,可以使用rsync+inotifysersync方式完成实时同步, 实现的脚本思路(low)

    [root@salt0-master scripts]# cat rsync_salt.sh 
    #!/usr/bin/bash
    Srv_Config=/srv
    Master_Config=/etc/salt/master
    Master_New=192.168.70.151
    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
    

    2.Salt Sydic模式架构

    前面我们了解了多Master的方式避免salt-master的单点故障,以解决Salt高可用问题。那如果我们管理主机的数量非常巨大,那一台Master性能就会出现问题,这个时候就需要对Salt进行扩展,用Syndic的方式可以完成多级扩展,Syndic的扩展架构如下图所示

    SaltStack-Syndic

    1.Salt Syndic 必须运行在一个Master上
    2.Syndic要连接上游的Master

    1.配置顶级Master服务器master-蒋先生

    yum install salt-master
    vim /etc/salt/master
    order_masters: True
    systemctl restart salt-master
    

    2.配置syndic服务器syndic-陈浩南

    yum install salt-syndic
    vim /etc/salt/master
    syndic_master: 
      - 192.168.56.11
    systemctl start salt-master
    systemctl start salt-syndic
    

    3.配置下级minion服务器

    # yum install salt-minion
    # vim /etc/salt/minion
    master: syndic-one
    # systemctl restart salt-minion
    
    注意: 如果之前已经添加过受信任的Master需要删除对应的key
    # rm -f /etc/salt/pki/minion/minion_master.pub
    # systemctl restart salt-minion
    

    4.测试master服务器通过syndic管理minion

    在syndic服务器上接收所有minion的key
    # salt-key -L
    
    #在上级master上执行命令, 测试有syndic管理的minion是否可以正常管理
    salt 'minion-syndic-one' test.ping
    

    syndic本身还可以进行更多级的扩展, 通过syndic和多master的配合可以让Salt的架构变得更加灵活和可扩展性,可以应对更多的服务器管理

    重点: Syndicfile_roots、Pillar_roots必须与高级Master一致
    缺点: 高级的Master并不知道自己有多少Minion,仅知道有多少syndic

    3.salt无Master架构

    Salt脱离Master独立运行,这种状态可以称为无mastersalt
    这种模式可以用于登陆minion后的一些调试任务,可以将状态文件配置在本地进行执行

    1.配置salt minion为本地执行方式

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

    2.编写SLS状态文件

    [root@salt1-minion ~]# cat /srv/salt/base/init/dns.sls 
    dns-config:
      file.managed:
        - name: /etc/resolv.conf
        - source: salt://init/files/resolv.conf.template
        - user: root
        - group: root
        - mode: 644
        - backup: minion
    

    3.使用salt-call执行本地安装

    salt-call --local state.sls init.dns
    salt-call --local state.highstate  #必须有topfile
    

    4.Salt SSH实现无Master管理minion

    安装salt-ssh

    [root@salt0-master ~]# yum install salt-ssh -y
    [root@salt0-master ~]# salt-ssh --version
    salt-ssh 2018.3.0 (Oxygen)
    

    配置/etc/salt/roster文件

    # Sample salt-ssh config file
    #web1:
    #  host: 192.168.42.1 # IP地址
    #  user: fred         # 用户名
    #  passwd: foobarbaz  # 密码
    #  sudo: True         # 是否sudo到root
    # priv: /etc/salt/pki/master/ssh/salt-ssh.rsa #私钥路径
    # timeout:5  #超时时间
    

    密码方式: 通过密码方式配置演示salt-ssh使用方式

    [root@salt0-master ~]# vim /etc/salt/roster
    test:
      host: 192.168.56.11
      user: root
      passwd: 123456
      port: 22
    
    [root@salt0-master ~]# salt-ssh -H
    /etc/salt/roster:
        ----------
        web-node1:
            192.168.70.171
            
    [root@salt0-master ~]# salt-ssh '*' cmd.run 'df -h'
    

    密钥方式: 通过密钥方式配置演示salt-ssh

    [root@salt0-master ~]# vim /etc/salt/roster
    test:
      host: 192.168.56.11
      user: root
      priv: /etc/salt/pki/master/ssh/salt-ssh.rsa
      port: 22
    
    [root@salt0-master ~]# salt-ssh -H          
    /etc/salt/roster:
        ----------
        web-node1:
            192.168.70.171
        web-node2:
            192.168.70.172
            
    [root@salt0-master ~]# salt-ssh '*' cmd.run "df -h"
    

    第一次运行需要输入密码复制公钥到目标服务器,后续在执行任何远程命令时都会使用密钥进行认证。

    Salt-ssh的使用

    1.salt-ssh可以进行目标匹配、远程执行模块使用、状态管理的使用、highstate高级状态应用
    2.salt-ssh基本可以实现Salt大部分功能,在不方便部署Salt minion的特殊环境可以使用salt-ssh来实施配置管理

  • 相关阅读:
    python_函数_文件
    Day_2_Python_str_list_dict的使用
    Day_1_Python_循环和格式化
    influxdb2.0版本部署+自启
    格式化Java内存工具JOL输出
    卷心菜的屯币日记
    influxDB时序数据库2.0FLUX查询语法使用记录
    两种转换2021-01-01T00:00:00Z为2021-01-01 00:00:00时间格式的方式(UTC时间转为yyyy-MM-dd HH:mm:ss)
    ThreadLocal的用处
    CentOS7使用ISO镜像文件作为离线Yum源
  • 原文地址:https://www.cnblogs.com/henrylinux/p/11498101.html
Copyright © 2020-2023  润新知