ansible的优化
Ansible企业实战环境中,如果管理的服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,由于Ansible基于SSH协议通信,SSH连接慢会导致整个基于Ansible执行变得缓慢,也需要对Openssh进行优化,具体优化的方法如下:
1 开启SSH长连接
ansible是通过使用ssh和远程主机进行通信,所以对ssh有这很强的依赖。在OpenSSH 5.6以后支持Multiplexing这个特性,可以通过在ansible配置中设置以支持该特性。
如下是配置参数,设置长连接保持时间为5天;control_path指定socket文件所保存的位置。
ssh_args = -o ControlMaster=auto -o ControlPersist=5d
control_path = /etc/ansible/ssh-socket/%%h-%%p-%%r
通过上面配置后,ansible中控机上执行一次与远程主机的连接之后,这个连接会持久保持设定时间之久。可以通过netstat命令查看到ESTABLISHED状态的连接信息。
注意1:OpenSSH需要5.6以上版本,低版本需要升级才能使用。
Centos7系统上安装的OpenSSH版本是较新的,可以直接支持;对于Centos6的系统,自带的OpenSSH版本较低,可以用下面这个yum源进行升级yum update openssh-clients:
# /etc/yum.repos.d/openssh.repo
[CentALT]
name=CentALT Packages for Enterprise Linux 6
baseurl=http://mirror.neu.edu.cn/CentALT/6/$basearch/
enabled=1
gpgcheck=0
注意2:control_path指定的目录不存在,或执行ansible命令的用户没有写权限的话是会报错的。
2 开启pipelining
默认情况下,ansible的执行流程是把生成好的本地python脚本PUT到远程服务器然后运行。如果开启了pipelining,整个流程少了一个PUT脚本到远程服务器的步骤,直接在SSH的会话中进行,可以提高整个执行效率。
# 在ansible.cfg配置文件中设置pipelining为True
pipelining = True
需要注意的是:如果开启pipelining,需要被控的远程服务器将/etc/sudoers中的”Defaults requiretty”注释掉,否则会出现类似如:you must have a tty to run sudo 的报错。
3 开启accelerate模式
accelerate模式类似于SSH的Multiplexing功能,都是使ansible控制服务器和远程服务器之间保持长连接。accelerate模式是使用python程序在远程服务器上运行一个守护进程,ansible通过这个守护进程监听的端口进行通信。
accelerate模式的开启方法很简单,只要在playbook中配置accelerate: true即可。ansible.cfg配置文件中需要配置一些accelerate参数,如:
[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
注意:使用accelerate模式,需要控制服务器和远程服务器都安装python-keyczar包
4 对facts设置优化
ansible playbook默认第一个task是Gathering Facts收集各主机的facts信息,以方便我们在paybook中直接引用facts里的信息。
如果不需要用到facts信息的话,可以设置gather_facts: false,来省去facts采集这一步以提高playbook效率。
如果既想用facts信息,有希望能提高playbook的效率的话,可以采用facts缓存来实现。
facts缓存支持多种方式:json文件方式,redis方式,memcache方式等。各种方式的配置都是在ansible.cfg中配置。
1)json文件方式
gathering=smart
fact_caching_timeout=86400
fact_caching=jsonfile
fact_caching_connection=/path/to/ansible_fact_cache
这里的86400单位为秒,表示缓存的过期时间。保存facts信息的json文件保存在/path/to/ansible_fact_cache下面,文件名是按照inventory hostname来命名的。
2)redis方式
gathering=smart
fact_caching_timeout=86400
fact_caching=redis
需要注意的是,facts存储不支持远端的redis,需要在ansible的控制服务器上安装redis;同时,还需要安装python的redis模块。
3)memcache方式
gathering=smart
fact_caching_timeout=86400
fact_caching=memcached
与redis方式类似,需要运行memcached服务,同时,安装python的memcached依赖包。
ansible的优化的更多相关文章
- ansible基础-优化
简介 当管理集群达到一定规模时,ansible达到性能瓶颈是难以避免的,此时我们可以通过一定手段提高ansible的执行效率和性能. 笔者虽未管理过超大规模服务器,但也通过查找资料和咨询大神了解了一些 ...
- Ansible之优化提升执行效率
今天分享一下Ansible在工作环境中有那些可以优化的配置 环境介绍:以前在公司工作处理服务器问题,需要用批量操作都是用shell脚本编写的工具,后来发现Ansible这个自动化工具,安装简单,操作起 ...
- ansible安全优化建议
摘自 ansible自动化配置书籍,特此感谢 针对非授权连接和截取通信息等共计行为,我们总结了9条方法: 使用安全加密的通信方式 禁止root用户远程登录并充分利用sudo 移除非必须的软件,只开放需 ...
- ansible基础-理解篇
1. 介绍 要说现在的部署工具,ansible可以说家喻户晓了. ansible是一个开源软件,用于软件供应.配置管理.应用部署.ansible可以通过SSH.remote PowerShell.其他 ...
- ansible(一)
Ansible简介 Ansible:Ansible的核心程序Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等.可以通过fil ...
- Ansible 进阶技巧
原文 http://www.ibm.com/developerworks/cn/linux/1608_lih_ansible/index.html?ca=drs- 简介 Ansible 是一个系 ...
- Ansible 小手册系列 四(详解配置文件)
[root@host-172-20-6-120 ansible]# ansible --version ansible 2.2.0.0 config file = /etc/ansible/ansib ...
- ansible 入门学习(一)
一,ansible 目录结构 (来自于ansible权威指南) 二,ansible.cfg 配置项说明 /etc/ansible/ansible.cfg --> ———————————————— ...
- Linux下使用Ansible处理批量操作
Ansible介绍: ansible是一款为类unix系统开发的自由开源的配置和自动化工具.它用python写成,类似于saltstack和puppet,但是不同点是ansible不需要再节点中安装任 ...
随机推荐
- Nginx初入
商城项目做了一个多月了,想到必须用到负载均衡,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.bat,用于启动和关闭ngin ...
- AngularJS.directive系列:嵌套directive的通讯及scope研究
一.directive中的scope directive无疑是AngularJS中比较复杂难懂的部分,而directive中个scope更是其中最复杂的部分了,尤其是在嵌套directive中互相通讯 ...
- php脚本超时 结束执行代码
函数:stream_context_create ,file_get_content 创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设 ...
- 内存管理 初始化(五)kmem_cache_init 初始化slab分配器(上)
看了下kmem_cache_init,涉及到不同MIGRATE间的buddy system的迁移,kmem_cache的构建,slab分配器头的构建.buddy system的伙伴拆分. 对于SMP系 ...
- 理解firewall
http://blog.csdn.net/dream361/article/details/54022470 //firewall介绍 http://www.jb51.net/article/103 ...
- MTK 锁屏配置
常常我们开 发程序的时候我们不需要系统唤醒系统锁屏功能,用户有时候在看电视或视频的时候不希望系统的锁屏 功能启动,既不想锁频,然而系统却在我们看电视或者视频的时候出来个锁屏的界面进行锁频拉,我们还要想 ...
- C# winform开发嵌套Chrome内核浏览器(WebKit.net)开发(一)
https://www.cnblogs.com/Maxq/p/6566558.html WebKit.net是对WebKit的.Net封装, 使用它.net程序可以非常方便的集成和使用webkit作为 ...
- easyui datagrid 单元格编辑(cell editing)
demo中有row editing 项目中发现个cell editing,但是有bug,修改好了 主要实现功能:单击数据表格单元格,编辑单元格数据 js代码如下: $.extend($.fn.data ...
- hdu5289 2015多校联合第一场1002 Assignment
题意:给出一个数列.问当中存在多少连续子区间,当中子区间的(最大值-最小值)<k 思路:设dp[i]为从区间1到i满足题意条件的解.终于解即为dp[n]. 此外 如果对于arr[i] 往左遍历 ...
- Extjs表单验证小结
//放在onReady的function(){}中 Ext.QuickTips.init(); //为组件提供提示信息功能,form的主要提示信息就是客户端验证的错误信息. Ext.form.Fiel ...