【系统部署知识汇总】第15章——自动化运维--saltstack

网友投稿 882 2022-11-26

【系统部署知识汇总】第15章——自动化运维--saltstack

【系统部署知识汇总】第15章——自动化运维--saltstack

自动化运维–saltstack

01 自动化运维介绍02Saltstack介绍03Saltstack部署04

⾃动化运维介绍 01

背景 传统的IT运维是将数据中⼼中的⽹络设备、服务器、数据库、中间件、存储、虚拟化、硬件等资源进⾏统⼀监控,当资源出现告警时,运维⼈员通过⼯具或者基于经验进⾏排查,找出问题并加以解决。但是,随着互联⽹+时代的到来,移动互联⽹、云计算和⼤数据技术得到了⼴泛应⽤,从⽽导致企业所管理的IT架构不断扩⼤,服务器、虚拟化、存储设备的数量越来越多,⽹络也变得更加复杂,业务流程越来越繁琐,传统的运维管理也越来越⼒不从⼼IT环境异构:系统软硬件种类繁多,导致运维⼈员运维监控压⼒⼤,⽇常⼯作量繁重。故障发⽣后,运维⼯程师花费⼤量精⼒排查问题,⽆法快速和准确的定位问题,治标不治本。 由于设备数量巨⼤,⽇常巡检占⽤⼤量时间,导致⼯作效率低下,事倍功半。工作机制混乱,⾯对庞⼤的IT系统,缺乏有效、⾃动化的运维流程,缺乏有效的绩效考核依据。缺少⾃动运维机制:IT部⻔⼈员过少,导致运维压⼒⼤;由于误操作,导致⽆法挽回的灾难;⼤⽽全的系统,对运维⼈员技术能⼒要求越来越⾼。系统内数据⾮常重要,如果遗漏备份,系统瘫痪/误操作等出现时会导致⽆法估量的后果。

运维自动化

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

⾃动化

监控⾃动化数据采集⾃动化数据分析⾃动化⽇常巡检⾃动化设备配置⽐对⾃动化故障定位⾃动化 故障处理⾃动化流程处理⾃动化日常备份⾃动化系统优化⾃动化 ⼤批量配置⾃动化

Saltstack介绍

saltstack

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

03 Saltstack部署

salt-master 安装

• yum install • yum install salt-master• yum install salt-syndic 分布式代理• yum install

Salt-minion 安装

• yum install • yum install

修改配置⽂件

[root@master ~]# cat /etc/salt/master |head -5master: 192.168.10.42user: root[root@minion01 ~]# head -10 /etc/salt/minion

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执⾏模块函数,并返回结果。

关于zeroMQ

master监听4505和4506端⼝:

4505对应的是ZMQ的PUB system,⽤来发送消息;4506对应的是REP system是来接受消息的。

minion管理

minion加⼊架构

[root@master srv]# salt-key -L

查看minion状态

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

文件分发 salt-cp

#salt-cp 分发⽂件到minion上,不⽀持⽬录分发,通常在master运⾏#考本单个⽂件[root@master salt]# salt-cp minion-01 /root/salt-repo-latest-2.el7.noarch.rpm /tmpminion-01: ---------- /tmp/salt-repo-latest-2.el7.noarch.rpm: True #拷⻉单个⽂件到minion的⽬标⽬录下并改名[root@master salt]# salt-cp minion-01 /root/anaconda-ks.cfg /tmp/abcminion-01: ---------- /tmp/abc: Trueminion本地执⾏命令:salt-call#salt-call minion本地执⾏命令,⾃⼰执⾏可执⾏模块,不是通过master下发job[root@minion01 tmp]# salt-call test.ping

批量操作

#执⾏单个salt命令salt “*” test.ping*代表所有主机test.ping 命令#执⾏⼀个linux命令salt “*” cmd.run “whoami”cmd.run 告诉客户端执⾏什么命令#执⾏⼀个脚本salt “*” cmd.script “salt://脚本名” #/srv/salt 脚本路径 默认

查看salt minion在执⾏什么操作

[root@master ~]# salt-run jobs.active20181029231137078329: ---------- Arguments: - yum -y update Function: cmd.run Returned: Running: |_ ---------- minion-01: 2651 StartTime: 2018, Oct 29 23:11:37.078329 Target: minion-01 Target-type: glob User: root

查看正在运⾏的任务,找到jid

[root@master ~]# salt 'minion-01' saltutil.runningminion-01: |_ ---------- arg: - yum -y update fun: cmd.run jid: 20181029231137078329 pid: 2651 ret: tgt: minion-01 tgt_type: glob user: root

根据jid杀掉任务

[root@master ~]# salt 'minion-01' saltutil.kill_job 20181029231137078329minion-01: Signal 9 sent to job 20181029231137078329 at pid 2651#清除minion缓存[root@master ~]# salt '*' saltutil.clear_cache

04 使⽤saltstack部署环境

业务部署

1)部署业务2)升级业务3)配置⽂件升级业务4)服务管理

更加详细说明

saltstack 传统的IT运维是将数据中⼼中的⽹络设备、服务器、数据库、中间件、存储、虚拟化、硬件等资源进⾏统⼀监控,当资源出现告警时,运维⼈员通过⼯具或者基于经验进⾏排查,找出问题并加以解决。但是,随着互联⽹+时代的到来,移动互联⽹、云计算和⼤数据技术得到了⼴泛应⽤,从⽽导致企业所管理的IT架构不断扩⼤,服务器、虚拟化、存储设备的数量越来越多,⽹络也变得更加复杂,业务流程越来越繁琐,传统的运维管理也越来越⼒不从⼼IT环境异构:系统软硬件种类繁多,导致运维⼈员运维监控压⼒⼤,⽇常⼯作量繁重。故障发⽣后,运维⼯程师花费⼤量精⼒排查问题,⽆法快速和准确的定位问题,治标不治本。由于设备数量巨⼤,⽇常巡检占⽤⼤量时间,导致⼯作效率低下,事倍功半。⼯作机制混乱,⾯对庞⼤的IT系统,缺乏有效、⾃动化的运维流程,缺乏有效的绩效考核依据。缺少⾃动运维机制:IT部⻔⼈员过少,导致运维压⼒⼤;由于误操作,导致⽆法挽回的灾难;⼤⽽全的系统,对运维⼈员技术能⼒要求越来越⾼。系统内数据⾮常重要,如果遗漏备份,系统瘫痪/误操作等出现时会导致⽆法估量的后果。⾃动化运维,可实现⽇常设备监控、主动发现问题、⾃动分析定位、基于标准化流程⼯具规范化处理、通过⾃动化运维操作⼯具处理修复等功能,最终实现监管治⾃动化运维。监控⾃动化 zabbix数据采集⾃动化 elk数据分析⾃动化⽇常巡检⾃动化设备配置⽐对⾃动化故障定位⾃动化 blueking故障处理⾃动化流程处理⾃动化⽇常备份⾃动化系统优化⾃动化 kickstart cobbler⼤批量配置⾃动化分布式管理⼯具puppet ansible为什么不⽤shell 1.交互式 进程模式 多进程 机器受不了 2.开发周期⻓ 没有第三⽅SaltStack管理⼯具允许管理员对多个操作系统创建⼀个⼀致的管理系统Saltstack最主要的两个功能是:配置管理与远程执⾏Saltstack不只是⼀个配置管理⼯具,还是⼀个云计算与数据中⼼架构编排的利器分布式⼯具管理节点被管理节点管理节点【发命令】——>被管理节点 【去执⾏ 返回结果】⼏款软件 使⽤的协议 ssh ssh 加密 ⼀对⼀ 所以⽐较慢 点对点⾃定义协议 zeromq 管理和被管理建⽴⻓连接 pub—>sub 模式发布消息 发布者—> 订阅者发布消息 传输消息 加密 字典⽅式发布salt ⼯作原理SaltStack 采⽤ C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信minion上线后先与master端联系,把⾃⼰的pub key发过去,这时master端通过saltkey -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执⾏模块函数,并返回结果。master监听4505和4506端⼝,4505对应的是ZMQ的PUB system,⽤来发送消息,4506对应的是REP system是来接受消息的。slat master minion 主⼈ 奴⾪奴⾪去找主⼈ minion 找 master ⾃⼰也可以管理⾃⼰1) 安装包2)配置⽂件3)调整平台4)应⽤5)部署⼀个环境使⽤salt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#install master salt-masterminion salt-minionyum install ◦ sudo yum install salt-master #master◦ sudo yum install salt-minion #minionyum install salt-sshyum install salt-syndic 分布式代理yum install salt-cloud 也是基于openstack来做的,它可以⽀持多种云的使⽤。⽐如:Aliyun、Azure、DigitalOcean、EC2、Google Compute Engine、HP Cloud、OpenStack、等等#安装后查看每台主机的主机名cat /etc/hosts 主机名和ip对应==========================#0.配置⽂件/etc/salt/master #主/etc/salt/minion #节点##节点配置yaml语⾔master: IP #注意冒号空格不能少id: 主机名 #注意冒号空格不能少==========================#1.启动关闭防⽕墙 selinux使⽤端⼝ 4505 4506第⼀次启动salt-master -l debug salt-minion -l debug 正常service salt-master startservice salt-minion start[root@master salt]# salt-key Accepted Keys:Denied Keys:Unaccepted Keys:minion-01Rejected Keys:[root@master salt]# salt-key -a minion-01The following keys are going to be accepted:Unaccepted Keys:minion-01Proceed? [n/Y] YKey for minion minion-01 accepted.[root@master salt]# salt-key -LAccepted Keys:minion-01Denied Keys:Unaccepted Keys:Rejected Keys:==========================#2.master认⼩弟salt-key -L 列出来认⼤哥的salt-key -A 所有⼩弟都认salt-key -a 单个认salt-key -D 剔除所有⼩弟salt-key -d 删除某个==========================使⽤salt#如何使⽤salt 看⼿册查看模块列表modulesalt 'minion-01' sys.list_modules查看指定module的function⽤法salt 'minion-01' sys.list_functions cmd查看指定模块的详细⽤法salt 'minion-01' sys.doc cmd#查看minion#查看minion的状态[root@master salt]# salt-run manage.statusdown:up: - minion-01#查看minion在线状态[root@master salt]# salt-run manage.up- minion-01#查看minion不在线状态[root@master salt]# salt-run manage.down#salt-cp 分发⽂件到minion上,不⽀持⽬录分发,通常在master运⾏#考本单个⽂件[root@master salt]# salt-cp minion-01 /root/salt-repolatest-2.el7.noarch.rpm /tmpminion-01: ---------- /tmp/salt-repo-latest-2.el7.noarch.rpm: True#拷⻉单个⽂件到minion的⽬标⽬录下并改名[root@master salt]# salt-cp minion-01 /root/anaconda-ks.cfg /tmp/abcminion-01: ---------- /tmp/abc: True#salt-call minion本地执⾏命令,⾃⼰执⾏可执⾏模块,不是通过master下发job[root@minion01 tmp]# salt-call test.pinglocal: True#查看salt minion在执⾏什么操作[root@master ~]# salt-run jobs.active20181029231137078329: ---------- Arguments: - yum -y update Function: cmd.run Returned: Running: |_ ---------- minion-01: 2651 StartTime: 2018, Oct 29 23:11:37.078329 Target: minion-01 Target-type: glob User: root#查看正在运⾏的任务,找到jjd[root@master ~]# salt 'minion-01' saltutil.runningminion-01: |_ ---------- arg: - yum -y update fun: cmd.run jid: 20181029231137078329 pid: 2651 ret: tgt: minion-01 tgt_type: glob user: root#根据jid杀掉任务[root@master ~]# salt 'minion-01' saltutil.kill_job 20181029231137078329minion-01: Signal 9 sent to job 20181029231137078329 at pid 2651#清除minion缓存[root@master ~]# salt '*' saltutil.clear_cacheminion-01: True#执⾏单个salt命令salt “*” test.ping*代表所有主机test.ping 命令#执⾏⼀个linux命令salt “*” cmd.run “whoami”cmd.run 告诉客户端执⾏什么命令#执⾏⼀个脚本salt “*” cmd.script “salt://脚本名” #/srv/salt 脚本路径 默认salt “*” grains.items 查看minion的硬件信息模块命令salt "minion_name" 模块.函数 参数系统命令 cmd.run salt "*" cmd.run 'hostname'#执⾏⼀个脚本salt “*” cmd.script “salt://脚本名” #/srv/salt 脚本路径 默认

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【系统部署知识汇总】第13章—— 构建高可用集群
下一篇:【ES6+ReactJs】第1章: ES6新特性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~