zoukankan      html  css  js  c++  java
  • SaltStack

    自动化运维工具的对比:

     saltstack介绍:

    • SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统
    • SaltStack最主要的两个功能是:配置管理与远程执行
    • SaltStack不只是一个配置管理工具,还是一个云计算与数据中心架构编排的利器
    • 采用订阅者模式的分布式管理工具  管理节点【发命令】-->被管理节点【去执行 返回结果】
    • 采用自定义协议zeromq比SSH(一对一)速度更快

    SaltStack部署

    salt-master安装:
    1. yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2el7.noarch.rpm
    2. yum install salt-master
    3. yum install salt-symdic #可选,分布式代理
    4. yum install salt-cloud #可选,基于OpenStack做的,可以支持多种云的使用

    salt-minion安装:
    1. yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2el7.noarch.rpm
    2. yum install salt-minion

    如果太慢就在阿里云里下载:https://mirrors.aliyun.com/saltstack/yum/
    wget ...
    mv saltstack-rhel7.repo /etc/yum.repos.d/
    yum clean all
    yum -y install salt-master/

    SaltStack采用C/S模式,server端就是salt的master,client端就是minion,
    minion与master之间通过ZeroMQ消息队列通信
    minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key-L命令
    就会看到minion的key,接受该minion-key后,也就是master与minion已经互信
    master可以发送任何指令让minion执行了,salt有很多可执行模块,比如cmd模块,在安装minion的时候已经自带了。
    它们通常位于你的Python库中,locate salt | grep /usr/可以看到salt自带的所有东西
    这些模块是Python写成的文件。里面会有很多函数,如cmd.run,当我们执行
    salt '*' cmd.run 'uptime'的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果

    关于zeroMQ
    master监听4505和4506端口
    4505对应的是ZMQ的PUB system,用来发送消息;
    4506对应的是REP system,用来接收消息;

    奴隶去找主人 minion找master
    1) 安装包
    2) 配置文件
    vim /etc/salt/master
    ---空格分隔
    master: 192.168.10.42
    user: root

    vim /etc/salt/minion
    ---
    master: 192.168.10.42
    user: root
    id: minion-01 //自己取的名字不重复即可

    启动:systemctl start salt-master
    启动后多了两个端口4505、4506,一个接收消息,一个发送消息
    salt-key -L 查看自己的奴隶
    systemctl start salt-minion 启动奴隶
    salt-key -L 就可以看到了
    -----
    Accepted Keys: 同意加入的
    Denied Keys: 未被加入的
    Unaccepted Keys: 未知的
    Rejected keys: 被拒绝的
    -----

    认领“奴隶”:
    salt-key -a minion-01
    认领后被加入到Accepted Keys


    salt-key命令
    salt-key -L 列出来认大哥的
    salt-key -A 所有小弟都认
    salt-key -a 单个认
    salt-key -D 剔除所有小弟
    salt-key -d 删除某个

    #如何使用salt看手册
    查看模块列表module(模块也是Python文件)
    salt 'minion-01' sys.list_modules
    查看指定module的function用法
    salt 'minion-01' sys.list_functions cmd
    查看指定模块的详细用法
    salt 'minion-01' sys.doc cmd

    #在master上查看minion
    #查看minion的状态
    salt-run manage.status
    #查看minion在线状态
    salt-run manage.up
    #查看minion不在线状态
    salt-run manage.down

    在master上使用文件分发salt-cp到minion上
    #salt-cp分发文件到minion上,不支持目录分发,通常在master运行
    #拷贝单个文件
    salt-cp minion-01 /root/salt-repo-latest-2.el7.noarch.rpm /tmp
    #拷贝单个文件到minion的目标目录下并改名
    salt-cp minion-01 /root/anaconda-ks.cfg /tmp/abc

    minion本地执行命令:salt-call
    例如只想改某个“奴隶端”
    #salt-call minion本地执行命令,自己执行可执行模块,不是通过master下发指令
    salt-call test.ping

    master上批量操作
    #执行单个salt命令,模块命令
    salt "*" test.ping
    *代表所有主机执行test.ping命令
    #执行一个Linux命令,系统命令
    salt "*" cmd.run "hostname"
    cmd.run告诉客户端执行什么linux命令
    #执行一个脚本
    salt "*" cmd.script 'salt://脚本名'
    脚本名必须放在单引号内,/srv/salt脚本默认路径

    查看salt minion在执行什么操作
    查看所有:salt-run jobs.active
    查看某个的jid:salt 'minion-01' saltutil.running
    终止minion正在执行的操作:salt 'minion-01' saltutil.kill_job 23423 数字表示jid的值

    #清除minion缓存
    salt '*' saltutil.clear_cache
    3) 调整平台
    4) 应用
    5) 部署一个环境
    *部署业务
    *升级业务
    *配置文件升级业务
    *服务管理

    备注
    部署一个Nginx环境
  • 相关阅读:
    pdo连接的时候设置字符编码是这样的
    mysql8.0+修改用户密码
    mysql账户添加远程访问
    php中的动态变量的一个应用
    redis scan迭代模糊匹配
    限制用户频繁提交
    js判断checkbox是否选中
    mysql 分组取每个组的前几名的问题
    Yii框架和Vue的完美结合构建前后端分离项目
    JS发送跨域Post请求出现两次请求的解决办法
  • 原文地址:https://www.cnblogs.com/staff/p/11526154.html
Copyright © 2011-2022 走看看