温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

​Saltstack 自动化运维工具的使用方法

发布时间:2020-05-22 09:58:28 来源:亿速云 阅读:661 作者:Leah 栏目:系统运维

本篇文章主要探讨Saltstack自动化运维工具的使用方法。有一定的参考价值,有需要的朋友可以参考一下,跟随小编一起来看使用方法吧。

      1.1 githup 地址;

          https://github.com/ansible/ansible

          https://github.com/saltstack/salt 

     1.2.执行记录到mysql;

       https://docs.saltstack.com/en/latest/ref/returners/all/ 

    

一.自动化运维工具Saltstack和Ansible 对比;


   1.ansible 介绍


     1.1  无Agent去中心化,采用原生SSH协议进行管理(需要提前打通SSH免密钥登陆)

     1.2 其实ansible也支持agent的方式,即所谓的“pull”的模式,就是通过一个客户端去拉取要执行的任务。

     1.3 开源社区活跃度Github上,ansbile有 42.2k 统计来源地址:https://github.com/ansible/ansible  

     1.4 主要功能

            1.4.1  Ansible完全基于Python开发,方便Ansible二次开发;

            1.4.2   丰富的内置模块,学习门槛较低;

            1.4.3   Playbook 剧本让环境部署简单化。


     1.5  Ansible只是提供一种框架。

      主要包括: 

        1.5.1 连接插件connection plugins:负责和被监控端实现通信;

        1.5.2  host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

        1.5.3  各种模块核心模块、command模块、自定义模块;

        1.5.4  借助于插件完成记录日志邮件等功能;

        1.5.5  playbook:剧本执行多个任务时,让节点一次性运行多个任务。

        ​Saltstack 自动化运维工具的使用方法

      

        1.6 执行原理过程;

              ​Saltstack 自动化运维工具的使用方法        

   


  2. Saltstack 介绍;

     2.1  Agent 化连被控机器需要安装Agent端需要配置master地址,建立信任关系 开放通信端口默认:4506/4505   

     2.2 大规模并发的能力:实现机制的差异,也导致saltstack在这方面是占优的.一次操作的机器过千台,还是用saltstack效率更高一些。

     2.3  开源社区活跃度Github上 Saltstack 10.7k 统计来源地址: https://github.com/saltstack/salt

     2.4  主要功能: 

           2.4.1  主从集中化管理;

           2.4.2  配置简单、功能强大、扩展性强;

           2.4.3  主控端(master)和被控端(minion)基于证书认证,安全可靠;

           2.4.4  支持API及自定义模块,可通过Python轻松扩展;


     2.5  saltstack 内部工作原理图

           ​Saltstack 自动化运维工具的使用方法

   

            2.4.1 Minion 是 SaltStack 需要管理的客户端安装组件,会主动去连接 Master 端,并从 Master 端得到资源状态信息,同步资源管理信息

           2.4.2 Master 作为控制中心运行在主机服务器上,负责 Salt 命令运行和资源状态的管理。

           2.4.3 ZeroMQ 是一款开源的消息队列软件,用于在 Minion 端与 Master 端建立系统通信桥梁。

           2.4.4 Daemon 是运行于每一个成员内的守护进程,承担着发布消息及通信端口监听的功能。


      2.6 执行过程;

            ​Saltstack 自动化运维工具的使用方法



 



  二.Satstack 部署实战; 


1.系统环境列表;


系统版本内核版本   系统python版本saltstack-master 版本saltstack-minion版本
CentOS  7.2.15113.10.0-862.6.3.el7.x86_64    Python 2.7.5salt 2015.5.10 salt-minion 2015.5.10






2.部署规划;

部署建议: 

   1.在生产环境操作业务量较大且资源允许的情况下采用集群部署.杜绝单点故障

   

​Saltstack 自动化运维工具的使用方法


3.简单化部署;


3.1 本文环境部署描述:  
     mysql 一台  saltstack-matser 端一台 saltstack-monion 端5台;
     
3.2 获取软件包;
      root@salt-master ~]# yum -y install epel-release && yum -y install salt-maste  
      
3.3 配置salt-master配置文件;
root@salt-master ~]# grep -v "^#" /etc/salt/master  |grep -v "^$"
interface: 192.168.54.12  #执行管理端的ip地址
publish_port: 4505          ##执行管理端服务监听端口
user: ops                   ##执行管理端用户地址
max_open_files: 100000      ###最大文件打开数 
worker_threads: 16          ##moinon端工作线程数 建议不要大于系统cpu核数
ret_port: 4506              #数据采集上报端口 
pidfile: /var/run/salt-master.pid    ##允许pid
timeout: 5                  ##数据采集超时时间
base:
    - /etc/salt         #saltstack 配置文件编写yaml 存放的根目录
pillar_roots:                #pillar 执行的目录
  base:                 
    - /etc/pillar
syndic_master_port: 4506    ###同步信息端口 
log_file: /var/log/salt/chj-salt-master      ##日志文件路径
log_level: warning 
log_level_logfile: warning  #日志级别
client_acl:
  ops:                      ##授权可执行salt命令用户
    - '*'
    
return: mysql               #执行命令返回结果统计 用于安全审核和命令审核.
master_job_cache: mysql     #数据库授权信息;
mysql.host: '192.168.54.23' #连接地址  支持其他数据库类型见:https://docs.saltstack.com/en/latest/ref/returners/all/
mysql.user: 'salt'        #连接用户
mysql.pass: 'saltstack'   #连接密码
mysql.db: 'salt'          #连接数据库
mysql.port: 3306          #数据库端口


3.4 安装salt-minion 端;

    3.4.1 为了节约安装时间采用ansible 进行批量


​Saltstack 自动化运维工具的使用方法


 3.5 安装salt-monion 客户端;

1.执行远程安装salt-minion 端
[ops@devops-manager-dev tools]$ ansible -i ip.txt all -m shell -a "yum -y install epel-release && yum -y install salt-minion" -b -f 3 

2.分发修改配置文件脚本;
2.1.脚本内容:
#/bin/bash
minid=$(echo $RANDOM |md5sum|cut -c 1-6)
sed -i '1imaster: 192.168.54.12' /etc/salt/minion 
sed -i '2ilog_file: /var/log/salt/chj-minion.log' /etc/salt/minion
sed -i '3iuser: root' /etc/salt/minion         
sed -i "4iid: chj_salt_$minid" /etc/salt/minion
mkdir /var/log/salt/
touch /var/log/salt/chj-minion.log
chown ops:ops /var/log/salt -R

3 开始分发;
ansible -i ip.txt all -m copy -a "src=./salt_minon.sh dest=/tmp/salt_minon.sh" -b -f 3

4.执行修改文件脚本

ansible -i ip.txt all -m shell -a "/bin/bash /tmp/salt_minon.sh" -b -f 3

5.启动salt-minion服务

[ops@salt-master devops]$ ansible -i ip.txt all -m shell -a "systemctl start salt-minion " -b -f 3
Thursday 12 March 2020  21:33:02 +0800 (0:00:00.090)       0:00:00.090 ******** 
192.168.46.21 | CHANGED | rc=0 >>
192.168.46.18 | CHANGED | rc=0 >>
192.168.46.20 | CHANGED | rc=0 >>
192.168.46.224 | CHANGED | rc=0 >>
192.168.46.158 | CHANGED | rc=0 >>

 3.6.salt test.ping 测试;

​Saltstack 自动化运维工具的使用方法


 3.7.ansible 和saltstack 执行耗时对比;


​Saltstack 自动化运维工具的使用方法


​Saltstack 自动化运维工具的使用方法


3.8 验证执行结果返回mysql数据库;

​Saltstack 自动化运维工具的使用方法

 

查看mysql 表中有没有数据返回 (时间戳问题因为测试环境mysql 使用docker 没有修改时区差距8小时)


​Saltstack 自动化运维工具的使用方法

关于Saltstack自动化运维工具的使用方法就分享到这里了,解决问题并不止文章中和大家分析的办法,不过本文分析的方法准确性是不容置疑的。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI