集群高效运维工具之ansible

2 篇文章 0 订阅
2 篇文章 0 订阅

集群高效运维工具之ansible

背景

如今在金融互联网行业中,随着用户量的不断扩增,后台服务系统也逐步以服务器集群(Server Cluster)的形式出现,对客户端来讲它们是一体的,而在运维人员眼中则需要分而治之.当集群中的服务器数量越来越多的时候,如何快速、高效的管理好成百上千台的服务器集群成为了很多运维工程师的奋斗目标,设计实现合理的自动化运维系统将使大服务器集群的管理事半功倍。

面临的问题

在实际环境中作为运维人员管理大规模服务集群器常常有以下痛点:
1、重复操作频繁,增加了人工成本和后续维护成本;
2、机器太多时,容易落下某些机器且未操作,进而产生后续影响;
3、人工频繁操作时可能有操作步骤不完整的情况,造成该机器和其他机器状态不一致;
4、服务器数量太多难以做到批量分组管理。
面对这些大规模集群运维中的问题,以下主要介绍当前主流的自动化运维工具-Ansible

Ansible简介

Ansible自2012年发布以来,很快在全球流行,成为目前流传度最为广范的开源自动化运维工具,它作为一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,基于python语言,由Paramiko和PyYAML,Jinja2三个关键模块构建。集合了众多运维工具的优点。其本身并没有批量部署的能力.真正具有批量部署的是ansible所运行的丰富模块,ansible只是提供一种技术框架。
在这里插入图片描述
上图为ansible的基本架构,从上图可以了解到其由以下重要部分组成:
1、核心模块(Core Modules):ansible自带模块
2、扩展模块(Custom Modules):当现有模块不满足需求,可自定义开发扩展模块
3、插件(Plugins):完成模块功能的补充
4、剧本(Playbooks):为ansible的任务配置文件,playbook由多个任务,多个模块组成一个完整的流程控制集合
5、连接插件(Connectior Plugins):ansible是基于连接插件连接到各个主机上,默认使用ssh,它还支持其他的连接方法,所以需要有连接插件
6、主机群(Host Inventory):定义ansible管理的主机,可在ansible.cfg配置文件中指定hosts

Ansible工作原理:

1、加载配置文件,默认/etc/ansible/ansible.cfg;
2、查找对应的主机配置文件(Host Inventory),找到要执行的主机或者组;
3、加载自己对应的模块文件,如 command;
4、通过ansible将模块或命令生成对应的临时py脚本文件,并将该文件传输至远程服务器的对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
5、给文件 +x 执行权限;
6、执行并返回结果;
7、删除临时py文件,sleep 0退出;

Ansible基于script模块批量远程执行脚本实例:

1、修改ansible.cfg中inventory配置用于自定义指定读取hosts文件
在这里插入图片描述

2、配置host清单文件 分组+ip地址+用户+端口(默认22)+用户密码(可做免密)+自定义变量(可选)
在这里插入图片描述

3、简单测试利用script模块实现批量远程执行脚本,如下成功返回并查看到结果。
在这里插入图片描述
3.1、Ansible执行的时候根据结果会显示为绿色(成功执行),黄色(成功伴随状态改变)和红色(执行失败)等颜色,颜色的显示与changed的状态相关联,并可以在ansible.cfg中进行定制颜色的设定。
3.2、常用参数说明:
-m:要执行的模块,默认为command,常用模块shell,copy,script,file,service,yum等
-a:模块的参数
-i:指定hosts文件路径,默认为ansible.cf配置中inventory的路径
-u:ssh连接的用户名,默认用root,可在hosts文件中自行指定

基于Ansible-playbook实现SSH免密登录(互信)

在日常运维工作中我们常常需要做主机之间的互信,如果服务器很多的情况下就会做大量的重复性工作,消耗大量人力成本。现利用ansible-playbook实现批量SSH主机之间的免密操作
准备工作:
1、控制主机上执行ssh-keygen命令,生成/.ssh/id_rsa.pub文件和/.ssh/id_rsa文件
2、已需要做免密hosts主机清单如上述例子中:/etc/ansible/hosts_ai
互信yaml文件编写说明:
No-secret.yaml:为SSH免密的的yaml文件(拷贝公钥和私钥至每个主机名单中,使其集群中密钥对保持一致)
在这里插入图片描述
执行 ansible-playbook No-secret.yaml 完成主机之间的免密

当然除了通过按照需求编写自定义的playbook外,ansible官网也提供了相应拉取官方playbook的方法,可直接通过ansible-galaxy 直接去https://galaxy.ansible.com/拉取官方已经定义好各个组件的yaml配置。

总结

本文主要讲解了自动化运维工具-ansible在工作中带来的便利性,但除了ansible之外还常有的自动化运维工具还包括Puppet、SaltStack等,每一个工具都有着自己的优势例如:
puppet具有:
1、幂等:相对于其他自动化运维工具, 在Puppet中, 我们可以在同一台计算机上安全地多次运行同一组配置。这意味着, 在任何机器上部署配置后,都会以特定间隔不断验证那些配置。
2、图形报告: Puppet的企业版支持图形报告, 可视化基础结构,使你实时查看基础架构的状况,便于进行通信并快速响应修改。
3、文献资料:Puppet提供了大量完善的Wiki页面, 其中包含详细的帮助文档有助于快速熟悉学习。
SaltStack具有:
1、实时交互:所有minions 接收命令都是同时的,所消耗的时间几乎是相同的并且salt获取信息的方式是通过实时查询
2、高性能:master和minions是由基于ZeroMQ 或者raw TCP在salt-master和salt-minion之间建立的一个持久性的数据管道来实现的。相比于其他工具有更高效的传输机制
3、便于扩展: Salt 基于类库MessagePack 实现高性能的序列化处理,同时还使用了 Python Tornado 的异步网络库,这一切都使得 Salt 在多线程和并发方面表现优秀。
在这里插入图片描述
以上图片对比了Ansible、puppet、SaltStack的基本特点。同学们可以根据自己使用的不同场景选择适合的自动化运维工具。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值