一、自动化运维介绍

1、自动化运维产生背景

传统的IT运维是将数据中心中的网络设备、服务器、数据库、中间件、存储、虚拟化、硬件等资源进行统一监控,当资源出现告警时,运维人员通过工具或者基于经验进行排查,找出问题并加以解决。但是,随着互联网+时代的到来,移动互联网、云计算和大数据技术得到了广泛应用,从而导致企业所管理的IT架构不断扩大,服务器、虚拟化、存储设备的数量越来越多,网络也变得更加复杂,业务流程越来越繁琐,传统的运维管理也越来越力不从心。

运维的四大苦恼:

2、运维自动化

自动化运维,可实现日常设备监控、主动发现问题、自动分析定位、基于标准化流程工具规范化处理、通过自动化运维操作工具处理修复等功能,最终实现监管的自动化运维。

  总结来说就是把人的工作给机器去完成,通过标准化快速分析和定位问题,将问题自动修复。

  • 实现哪些方面自动化

    监控自动化、数据采集自动化、数据分析自动化、日常巡检自动化、设备配置比对自动化、故障定位自动化、故障处理自动化、流程处理自动化、日常备份自动化、系统优化自动化、大批量配置自动化。

3、自动化运维工具

  • Saltstack:https://www.saltstack.com

    基于 rubby 开发,c/s 架构,支持多平台,可管理配置文件、用户、cron 任务、软件包、系统服务等。分为社区版(免费)和企业版(收费),企业版支持图形化配置。
  • pupppet:https://puppet.com

    基于 python 开发,c/s 架构,支持多平台,比 puppet 轻量,在远程执行命令时非常快捷,配置和使用比 puppet 容易,能实现 puppet 几乎所有的功能。
  • Ansible:https://www.ansible.com

    更加简洁的自动化运维工具,不需要在客户端上安装 agent,基于 python 开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令

三种运维工具技术特性比较:

名称 Puppet SaltStack Ansible
开发语言 Ruby python python
客户端
二次开发 不支持(自由度太低) 支持 支持
通信验证
同学加密 标准SSL协议 AES加密 OpenSSH(点对点加密不推荐,机器压力大)
平台支持 AIX,BSD,HP-UX,Linux,Mac,Solaris,Windows BSD,Linux,Mac,Solaris,Windows AIX,BSD,HP-UX,Linux,Mac,Solaris
配置文件格式 Ruby语法格式 YAML YAML
Web UI 提供 提供 提供
命令执行 不支持(配置模块可实现) 支持 支持

二、Saltstack介绍

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

1、Salt原理

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库中,这些模块是python写成的文件,里面会有好多函数,如cmd.run,当我们执 salt '*' cmd.run 'uptime'的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回 结果。

2、关于zeroMQ

master监听4505和4506端 : 4505对应的是ZMQ的PUB system,用来发送消息; 4506对应的是REP system是来接受消息的。

三、Saltstack部署

准备两个节点,一个master节点(192.168.31.42),一个minion节点(192.168.31.43)。

1、安装Saltstack

(1)Salt-master安装

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
yum install salt-master # 扩展功能安装
yum install salt-syndic 分布式代理
yum install salt-cloud 基于openstack来做的,它可以支持多种云的使用。 如:Aliyun、Azure、DigitalOcean、EC2、Google Compute Engine、HP Cloud、OpenStack

(2)Salt-minion安装

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

2、配置文件

均是在配置文件中指定master和用户名。

(1) master节点配置

[root@master salt]# head -2 /etc/salt/master   # 仅在文件前添加了两行
master: 192.168.31.42
user: root

(2)minion节点(192.168.31.43)配置

[root@minion01 salt]# head -3 /etc/salt/minion
master: 192.168.31.42
user: root
id: minion-01

(3)启动Salt

# 启动主节点salt
[root@master salt]# systemctl start salt-master
# 启动奴隶节点
[root@minion01 salt]# systemctl start salt-minion

3、minion管理

# 查看所有minion-key
[root@master selinux]# salt-key -L
Accepted Keys: # 同意加入的
Denied Keys: # 未被加入的
Unaccepted Keys: # 未知的
Rejected Keys: # 被拒绝的
[root@master selinux]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
minion-01 # 已经被监测到的
Rejected Keys: # minion加入架构
[root@master selinux]# salt-key -a minion-01
The following keys are going to be accepted:
Unaccepted Keys:
minion-01
Proceed? [n/Y] y
Key for minion minion-01 accepted.
[root@master selinux]# salt-key -L
Accepted Keys:
minion-01 # 认领成功
Denied Keys:
Unaccepted Keys:
Rejected Keys:

四、minion管理

1、如何使用salt查看手册

(1)查看模块列表module

[root@master selinux]# salt 'minion-01' sys.list_modules
minion-01:
- acl
- aliases
- alternatives
...
- xfs
- zenoss

(2)查看指定module的function用法

[root@master selinux]# salt 'minion-01'  sys.list_functions cmd
minion-01:
- cmd.exec_code
- cmd.exec_code_all
- cmd.has_exec
- cmd.powershell
- cmd.powershell_all
- cmd.retcode
- cmd.run
- cmd.run_all
- cmd.run_bg
- cmd.run_chroot
- cmd.run_stderr
- cmd.run_stdout
- cmd.script
- cmd.script_retcode
- cmd.shell
- cmd.shell_info
- cmd.shells
- cmd.tty
- cmd.which
- cmd.which_bin
[root@master ~]# salt 'minion-01' sys.list_functions user
minion-01:
- user.add
- user.chfullname
- user.chgid
- user.chgroups
- user.chhome
- user.chhomephone
- user.chloginclass
- user.chother
- user.chroomnumber
- user.chshell
- user.chuid
- user.chworkphone
- user.delete
- user.get_loginclass
- user.getent
- user.info
- user.list_groups
- user.list_users
- user.primary_group
- user.rename

(3)查看指定模块的详细用法

[root@master selinux]# salt 'minion-01' sys.doc cmd
[root@master ~]# salt 'minion-01' sys.doc user # 查看模块下的具体某个方法
[root@MiWiFi-R4C-srv ~]# salt 'minion-01' sys.doc user.add
user.add:
Add a user to the minion
CLI Example:
salt '*' user.add name <uid> <gid> <groups> <home> <shell>

(4)添加用户示例

# vipw命令编辑用户密码文件
[root@minoin01 ~]# vipw # 查看确认没有xxx用户
vipw: /etc/passwd is unchanged # 用salt的user模块创建用户
[root@master ~]# salt "minion-01" user.add xxx
minion-01:
True # 查看minion上用户是否创建
[root@minion01 ~]# cat /etc/passwd | tail -n 1
xxx:x:1000:1000::/home/xxx:/bin/bash

2、salt-key密钥管理(通常在master端执行)

salt-key [options]
salt-key -L ##查看所有minion-key
salt-key -a <key-name> ##接受某个minion-key
salt-key -d <key-name> ##删除某个minion-key
salt-key -A ##接受所有的minion-key
salt-key -D ##删除所有的minion-key

3、查看minion状态

#查看minion的状态
[root@master selinux]# salt-run manage.status
down:
up:
- minion-01 #查看minion在线状态
[root@master selinux]# salt-run manage.up
- minion-01 #查看minion离线状态
[root@master selinux]# salt-run manage.down

4、文件分发 salt-cp

salt-cp 分发文件到minion上,不支持目录分发,通常在master运行。

# 拷贝单个件
[root@master salt]# salt-cp minion-01 /root/salt-repo-latest-2.el7.noarch.rpm /tmp
minion-01:
----------
/tmp/salt-repo-latest-2.el7.noarch.rpm:
True # 拷贝单个文件到minion的目标目录下并改名
[root@master salt]# salt-cp minion-01 /root/anaconda-ks.cfg /tmp/abc
minion-01:
----------
/tmp/abc:
True

5、minion本地执行命令:salt-call

salt-call minion本地执行命令,自己执行可执行模块,不是通过master下发job。

[root@minion01 tmp]# salt-call test.ping
local:
True

6、salt命令分类和总结

批量操作(*)

# 模块命令
salt "minion_name" 模块.函数 参数
salt "*" test.ping # *代表所有主机 test.ping 命令 # linux系统命令(cmd.run)
salt "*" cmd.run "hostname" # cmd.run 告诉客户端执行什么命令 # 执行脚本(cmd.script)
salt "*" cmd.script “salt://脚本名” # /srv/salt 脚本路径 默认

脚本执行示例:

[root@master salt]# pwd
/srv/salt
[root@master salt]# vim test.sh
[root@master salt]# chmod 755 test.sh
[root@master salt]# vim test.sh
[root@master salt]# ./test.sh
master 2018-12-28
this is a test for salt
[root@master salt]# salt "*" cmd.script 'salt://test.sh'
minion-01:
----------
pid:
12322
retcode:
0
stderr:
stdout:
master 2018-12-28
this is a test for salt

7、查看salt minion的执行状态

(1)查看minion正在执行的操作

# 第一个master终端,执行系统命令
[root@master salt]# salt '*' cmd.run 'yum -y update'
# 第二个master终端,查看salt minion执行情况
[root@master ~]# salt-run jobs.active
20181228112409202939:
----------
Arguments:
- yum -y update
Function:
cmd.run
Returned:
Running:
|_
----------
minion-01:
12329
StartTime:
2018, Dec 28 11:24:09.202939
Target:
*
Target-type:
glob
User:
root

(2)执行、查看、杀死进程和清空缓存

# 第一个master终端执行
[root@master salt]# salt '*' cmd.run 'pip install scrapy' # 第二个master终端
# 查看正在运行的任务,找到jid
[root@master ~]# salt 'minion-01' saltutil.running
minion-01:
|_
----------
arg:
- pip install scrapy
fun:
cmd.run
jid:
20181228113349565844
pid:
44973
ret:
tgt:
*
tgt_type:
glob
user:
root # 根据jid杀掉任务
[root@master ~]# salt 'minion-01' saltutil.kill_job 20181228113349565844
minion-01:
Signal 9 sent to job 20181228113349565844 at pid 44973 # 清除minion缓存
[root@master ~]# salt '*' saltutil.clear_cache
minion-01:
True

自动化运维与Saltstack的更多相关文章

  1. 1、自动化运维之SaltStack实践

    自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...

  2. 自动化运维之Saltstack

    第三十八课 自动化运维之Saltstack 目录 一.自动化运维介绍 二. saltstack安装 三. 启动saltstack服务 四. saltstack配置认证 五. saltstack远程执行 ...

  3. saltstack自动化运维系列⑩SaltStack二次开发初探

    saltstack自动化运维系列⑩SaltStack二次开发初探 1.当salt运行在公网或者网络环境较差的条件下,需要配置timeout时间vim /etc/salt/master timeout: ...

  4. saltstack自动化运维系列⑧SaltStack实践配置管理安装nginx-1.10.3

    saltstack自动化运维系列⑧SaltStack实践配置管理安装nginx-1.10.3 安装nginx-1.10.3.tar.gz # mkdir -p /srv/salt/prod/pkg / ...

  5. saltstack自动化运维系列⑦SaltStack实践配置管理安装zabbix

    saltstack自动化运维系列⑥SaltStack实践配置管理安装zabbix 1.添加管理zabbix的sls文件# vim /srv/salt/base/init/zabbix_agent.sl ...

  6. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived 安装配置Keepalived 1.编写功能模块 #创建keepalived目录# mkdir -p ...

  7. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy 下载haproxy1.6.2.tar.gz下载地址:http://www.haproxy.org/download/1. ...

  8. 自动化运维工具 SaltStack 搭建

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-devops-saltstack-in-cloud/index.html#N10072 ...

  9. 自动化运维工具SaltStack详细部署【转】

    ==========================================================================================一.基础介绍==== ...

随机推荐

  1. Linux上安装Hadoop集群(CentOS7+hadoop-2.8.3)

    https://blog.csdn.net/pucao_cug/article/details/71698903 1下载hadoop 2安装3个虚拟机并实现ssh免密码登录 2.1安装3个机器 2.2 ...

  2. SDUT OJ 数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  3. go的三个常用命令go run go build go install

    go的三个常用命令 go run go build go install 命令源码文件:含有 main函数 的文件 库源码文件:不包含 main函数 的文件, 主要用于编译成静态文件.a供其他包调用 ...

  4. 3-19bug随即

    #方案录入 ### 国外网络访问,录入添加图片,上传后图片显示不出. ``` * 后台有返回数据,前端显示巨慢,待检查 * ``` ### 产品信息,富文本信息加载不出

  5. SQl 根据某列去重 partition by

    主键为ID select * from [infotops] where Id in (select max(id) from [infotops] group by InfoId) -------- ...

  6. flask 发送QQ邮箱

    from flask import Flask from flask_script import Manager, Shell from flask_mail import Mail, Message ...

  7. P4578 [FJOI2018]所罗门王的宝藏

    传送门 考虑一个位置答案传递性,如果某个位置的红宝石转动确定了,那么会引起连锁反应: 如图,绿色的转动确定了,那么那两个蓝色的转动也确定了 自己手玩一下,发现如果有解那么随便找一个开始然后一路玩下去最 ...

  8. java 上传文件到 ftp 服务器

    1.  java 上传文件到 ftp 服务器 package com.taotao.common.utils; import java.io.File; import java.io.FileInpu ...

  9. Java 不可变对象

    不可变对象(immutable objects):一旦对象被创建,它们的状态就不能被改变(包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变),每次对他 ...

  10. 1.nginx安装和配置

    1.安装 1.1安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel wget 1. ...