• Ansible执⾏速度优化


    个人名片:
    因为云计算成为了监控工程师👨🏻‍💻
    个人博客🏆:念舒_C.ying
    CSDN主页✏️:念舒_C.ying

    优化⼀: 开启SSH长连接

    Ansible模式是使⽤SSH和远程主机进⾏通信, 所以Ansible对SSH的依赖性⾮常强, 在OpenSSH 5.6版本以后SSH就⽀持了Multiplexing, 关于这个特性我们可以参考 Multiplexing⼿册. 所以如果Ansible中控机的SSH -V版本⾼于5.6时, 我们可以直接在ansible.cfg⽂件中设置SSH⻓连接, 设置参数如下:

    ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d
    
    • 1

    ConrolPersist=5d, 这个参数是设置整个⻓连接保持时间为5天.
    开启此参数后, 通过SSH连接过的设备都会在当前ansible/cp/⽬录下⽣成⼀个socket⽂件. 也可以通过netstat命令查看, 会发现有⼀个ESTABLISHED状态的连接⼀直与远程设备进⾏着TCP连接

    netstat -anptu
    
    • 1
    优化二: 开启Pipelining

    pipelining也是OpenSSH的⼀个特性, 在Ansible的整个执⾏流程中, 把⽣成好的本地python脚本PUT到远程服务器. 如果开启了pipelining, 这个过程将在SSH会话中进⾏, 这样可以⼤⼤提⾼整个执⾏效率. 当然开启pipelining, 需要被控机/etc/sudoers⽂件编辑当前Ansible SSH⽤户的配置为requiretty.否则在执⾏Ansible的时候会提示报错

    bavdu@ansible:~$ sudo vim /etc/ansible/ansible.cfg
    pipelining = True
    
    • 1
    • 2

    这样开启了pipelining之后, ansible执⾏的整个流程就少了⼀个PUT脚本去远程服务端的流程

    优化三: 开启accelerate模式

    Ansible还有⼀个accelerate模式, 这和前⾯的Multiplexing有点类似, 因为都依赖Ansible中控机跟远程机器有⼀个⻓连接. 但是accelerate是使⽤python程序在远程机器上运⾏⼀个守护进程, 然后Ansible会通过这个守护进程监听的端⼝进⾏通信. 开启accelerate模式很简单, 只要在playbook中配置accelerate: true即可.
    但是需要注意的是: 如果开启accelerate模式, 则需要在Ansible中控机与远程机器都安装pythonkeyczar软件包. 下⾯是在ansible.cfg⽂件中定义⼀些accelerate参数, 当然也可以在写playbook的时候再定义

    [accelerate]
    accelerate_port = 5099
    accelerate_timeout = 30
    accelerate_connect_timeout = 5.0
    
    • 1
    • 2
    • 3
    • 4
    优化四: 设置facts缓存

    如果细⼼的话, 就会发现执⾏playbook的时候, 默认第⼀个task都是GATHERING FACTS, 这个过程就是Ansible在收集每台主机的facts信息. ⽅便我们在playbook中直接饮⽤facts⾥的信息. 当然如果你的playbook中不需要facts信息, 可以在playbook中设置gather_facts: False来提⾼playbook效率.
    但是如果我们既想在每次执⾏playbook的时候都能收集facts, ⼜想加速这个收集过程, 那么就需要配置facts缓存了. ⽬前Ansible⽀持使⽤json⽂件存储facts信息. 如下设置示例:/etc/ansible/ansible.cfg

    gathering = smart
    fact_caching_timeout = 86400
    fact_caching = jsonfile
    fact_caching_connection = /dev/shm/ansible_fact_cache
    
    • 1
    • 2
    • 3
    • 4

    期待下次的分享,别忘了三连支持博主呀~
    我是 念舒_C.ying ,期待你的关注~💪💪💪

  • 相关阅读:
    【金融项目】尚融宝项目(十三)
    Linux常用命令
    CSS选择器介绍
    2024年华为OD机试真题-电脑病毒感染-Python-OD统一考试(C卷)
    案例:参数填写默认值【注解+JDK动态代理】
    停止Tomcat服务的方式
    leetcode数学思想
    马斯克雷军竞速「机器人」背后,一场机器革命正在发生 | 幂集创新
    jquery常用方法积累
    KBPC1510W-ASEMI马达专用整流桥KBPC1510W
  • 原文地址:https://blog.csdn.net/qq_52716296/article/details/126845090