Ansible之优化提升执行效率

今天分享一下Ansible在工作环境中有那些可以优化的配置

环境介绍:以前在公司工作处理服务器问题,需要用批量操作都是用shell脚本编写的工具,后来发现Ansible这个自动化工具,安装简单,操作起来很方便,支持多个模块,由python开发基于SSH协议通信的工具。这里有个问题就是如果服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,具体优化的方法如下:

线上管理机器:操作系统Linux,cpu为4核,内存8G,用这个机器管理上千台Linux服务器都没有太大压力

1.修改ansible的并发数

Ansible默认只会创建5个进程并发执行任务,所以一次任务只能同时控制5台机器执行。如果有大量的机器需要控制,例如20台,Ansible执行一个任务时会先在其中5台上执行,执行成功后再执行下一批5台,直到全部机器执行完毕。使用-f选项可以指定进程数,指定的进程数量多一些,不仅会实现全并发,对异步的轮训poll也会有正面影响。

#forks  = 60

2.关闭ansible的SSH密钥检测

ansible默认是以ssh来实现远程推送执行的,是基于ssh秘钥检测,会检测远程主机的公钥,并记录在本地中known_host文件中,下次访问主机时,会核对公钥,如果公钥不同,openssh会发出警告,如果相同,会提示输入密码

SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来设定的,StrictHostKeyChecking检查级别包括:no(不检查)、ask(询问)、yes(每次都检查)、False(关闭检查)。

#vim /etc/ansible/ansible.cfg
host_key_checking = False #关闭StrictHostKeyChecking检查 默认是关闭的

3.openssh链接优化

使用OpenSSH服务时,默认服务器端配置文件UseDNS=YES状态,该选项会导致服务器根据客户端的IP地址进行DNS PTR反向解析,得到客户端的主机名,然后根据获取到的主机名进行DNS正向A记录查询,并验证该IP是否与原始IP一致。关闭DNS解析代码如下:

sed -i ‘/^GSSAPI/s/yes/no/g;/UseDNS/d;/Protocol/aUseDNS no‘ /etc/ssh/sshd_config

4.ssh pipelining加速ansible

pipeline是openssh的一个特性,ssh pipelining 是一个加速Ansible执行速度的简单方法。
在ansible执行每个任务的整个流程中,有一个过程是将临时任务文件put到远程的ansible客户机上,然后通过ssh连接过去远程执行这个任务。
如果开启了pipelining,一个任务的所有动作都在一个ssh会话中完成,也会省去sftp到远端的过程,它会直接将要执行的任务在ssh会话中进行。
ssh pipelining 默认是关闭!!!!之所以默认关闭是为了兼容不同的sudo 配置,主要是 requiretty 选项。如果不使用sudo,建议开启!!!
打开此选项可以减少ansible执行没有传输时ssh在被控机器上执行任务的连接数。
不过,如果使用sudo,必须关闭requiretty选项。修改/etc/ansible/ansible.cfg 文件可以开启pipelining

sed -i ‘/^pipelining/s/False/True/g‘ /etc/ansible/ansible.cf

5.Ansible Facts缓存优化

Ansible-playbook 在执行过程中,默认会执行Gather facts,如果不需要获取客户端的fact数据的话,可以关闭获取fact数据功能,关闭之后可以加快ansible-playbook的执行效率。如需关闭fact功能,在playbook yaml文件中加入如下代码即可:

gather_facts: False

原文地址:https://www.cnblogs.com/summer-time/p/12207812.html

时间: 2024-07-29 22:46:09

Ansible之优化提升执行效率的相关文章

优化python执行效率

开始优化前,写一个高级测试来证明原来代码很慢.你可能需要采用一些最小值数据集来复现它足够慢.通常一两个显示运行时秒的程序就足够处理一些改进的地方了. 有一些基础测试来保证你的优化没有改变原有代码的行为也是很必要的.你也能够在很多次运行测试来优化代码的时候稍微修改这些测试的基准. 那么现在,我们来来看看优化工具把. 简单的计时器 计时器很简单,这是一个最灵活的记录执行时间的方法.你可以把它放到任何地方并且副作用很小.运行你自己的计时器非常简单,并且你可以将其定制,使它以你期望的方式工作.例如,你个

PHP对接口执行效率慢的优化

PHP对接口执行效率慢的优化 造成执行效率低的原因可以由很多方面找原因 从代码层面,代码质量低,执行效率也会有很大影响的. 从硬件方面,服务器配置低,服务器配置是基础,这个跑不动肯定慢. 从数据量方面,查询数据量过多,sql语句过于繁杂,执行缓慢. 服务器 从配置上做提升,对于系统整体的执行效率是相当明显的,这一点没有什么好质疑的,只要有实力,自然就可以多在这方面做提升了. 数据查询 这个查询的优化,涉及sql的优化,或者到数据库的优化,下面有几个简单的优化方案. sql的优化,适当使用链表查询

SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过拆分SQL来优化的博文,最近刚好遇到一个实际案例,比较有代表性,现分享出来, 我们来通过一个案例来分析,为什么拆分语句可以提高SQL执行效率,更重要的是弄清楚,拆分前为什么慢,拆分后为什么快了? 幼稚的话,各位看官莫笑 先看一下相关表的数据量,大表也有5900多万,小表有160多万 (声明:我从来没

JavaScript执行效率与性能提升方案(转)

如何提升JavaScript执行效率与性能在前端开发中位于一个很重要的地方,这节来研究下如何在平时做项目过程中,提升JavaScript性能与运行效率,需要的朋友可以参考下如何提升JavaScript执行效率与性能在前端开发中位于一个很重要的地方,这节来研究下如何在平时做项目过程中,提升JavaScript性能与运行效率. 循环 循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中

使用Android的硬件缩放技术优化执行效率

Unity3D研究院之使用Android的硬件缩放技术优化执行效率 http://www.xuanyusong.com/archives/3205 Android中GLSurfaceView在横竖屏切换时重新创建表面缓冲导致的问题 http://blog.k-res.net/archives/1702.html https://stackoverflow.com/questions/7185644/android-opengl-crazy-aspect-ratio-after-sleep

SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者那样的问题,但是我们不能否认并行,仍然要利用好并行. 但是,实际开发中,某些SQL语句的写法会导致用不到并行,从而影响到SQL的执行效率 所以,本文要表达的是:我们要利用好并行,不要让一些SQL的写法问题“抑制”了并行,让我们享受不了并行带来的快感 关于SQL Server的并行: 所谓的并行,指S

mysql优化(三)–explain分析sql语句执行效率

mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句. Explain语法:explain select … from … [where …] 例如:explain select * from

Linq的执行效率及优化

描述:项目中使用了linq,发现写的顺序不一样最后的结果也不一样,效率也不一样. Linq的执行效率对比 List<int> source = new List<int>(); var rand = new Random(); int i = 5000; while (i > 0) { i--; source.Add(rand.Next(1, 500)); } Stopwatch watch = new Stopwatch(); watch.Restart(); var te

想提升工作效率,就別再做这七件事

试想一位小公司老板每日孜孜不倦地工作,为何不能从为数众多的竞争者脱颖而出? 一位创业家可以不眠不休一天工作24 小时,整整一周不休假. 然而,时间有限,且竞争者却永远可以投入更多钱与心力,让竞争更剧烈.那么,为什么某些小型新创公司可以完成许多大型企业无法完成的事情呢? ●Instagram──只有13 名员工却被Facebook 用几十亿买下的公司. ●Snapchat──只有30 名员工却拒绝科技巨人Facebook.Google 的并购交易. 它们的成功部分来自于幸运──其余则是因为效率 .