金鱼哥RHCA回忆录:DO447构建高级作业工作流--使用事实缓存提高性能

简介: 第十二章 构建高级作业工作流--使用事实缓存提高性能
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


📜10.1.1 事实缓存

Ansible事实是Ansible在托管主机上自动发现的变量。事实包含特定于主机的信息,可以像剧本、条件中使用的常规变量一样使用。循环,或依赖于从托管主机收集的值的任何其他语句。

通常情况下,每个剧本都会在第一个任务之前自动运行setup模块,以便从每个与剧本的主机模式匹配的托管主机中收集事实。这确保了剧本拥有当前的事实,但也会产生一些负面后果。

运行setup模块来为每个剧本收集事实会产生明显的性能后果,特别是在托管主机的大量清单上。如果你在剧本中没有使用任何事实,你可以加快执行的一种方法是关闭自动事实搜集。你可以通过设置gather_facts: no来做到这点。请注意,如果你在剧中使用事实,你可能无法做到这一点。

剧本还可以通过使用魔法变量hostvars引用另一个主机的事实。例如,在托管主机服务器上运行的任务可以通过引用变量hostvars ['serverb'] ['ansible_facts'] ['default_ipv4'] ['address ']来访问事实ansible_facts['default_ipv4'] ['address ']的值。然而,这只有在这部剧或同一剧本中更早的一部剧已经从服务器上搜集到事实时才有效。

您可以使用事实缓存来解决这两个问题。一个剧本可以为目录中的所有主机收集事实,并缓存这些事实,以便后续剧本可以在不收集事实或手动运行setup模块的情况下使用它们。


📑在Ansible Tower中启用事实缓存

Red Hat Ansible Tower 3.2及以后版本包括了对事实缓存的集成支持和事实缓存的数据库。您需要在全局级别上管理事实缓存的超时。事实缓存控制由作业模板决定。

Ansible Tower中有一个全局设置,用于控制每个主机的事实何时过期。在web界面左侧导航栏中选择“Settings”,显示“config Tower”窗格,然后单击“JOBS”。设置Per-Host Ansible Fact Cache Timeout可以控制收集到的Ansible事实在缓存中的有效时间。这是以秒为单位的。

默认值设置为0,意味着存储在缓存中的信息始终有效。但是,如果不定期检查事实以更新缓存,则可能会由于托管主机上的更改而导致事实过时。
在这里插入图片描述

为了优化事实缓存,设置gather_facts: no在剧本中禁用自动事实收集。您还需要为任何使用包含这些剧本的剧本的Ansible Tower作业模板启用Use Fact Cache。然后,剧本依赖于事实缓存中的信息来使用事实。

您还需要定期运行一个play来填充事实缓存,以保持缓存的事实是最新的。在Ansible Tower中做这件事的一个好方法是建立一个剧本,收集事实作为一个计划的工作(在本课程的其他地方讨论)。那份工作可以使用常规的剧本,核实事实,或者你可以建立一个最小的剧本来收集事实,例如下面的例子:

- name: Refresh fact cache
  hosts: all
  gather_facts: yes

因为没有任务或角色部分,所以这个剧本唯一要做的事情就是收集事实。


📑注意:

您不需要同时为所有主机收集事实。为更小的主机集收集事实以分散负载可能是有意义的。重要的是要确保在所有主机过期或失效之前查明它们的事实。

下面的过程展示了如何在Ansible Tower接口中启用事实缓存:

  1. 在左侧导航栏单击“模板”。
  2. 选择适当的作业模板并单击其名称以编辑设置。
  3. 在页面的OPTIONS部分,选择Use Fact Cache旁边的复选框。

在这里插入图片描述

  1. 单击“保存”,保存修改后的作业模板配置。

现在,无论何时运行基于启用了Use Fact Cache选项的模板的新作业,作业都将使用事实缓存。如果Ansible Playbook也将gather_facts变量设置为yes,则作业将采集事实,检索它们,并将它们存储在事实缓存中。


📑注意:

当一个作业启动时,Ansible Tower将每个托管主机的所有ansible_facts从运行作业注入到memcache中。完成这项工作后,Ansible Tower从memcache中检索特定主机的所有记录,然后在事实缓存数据库中保存更新时间晚于缓存副本的每个事实。


📜10.1.2 课本练习

[student@workstation ~]$ lab project-facts start

📑1. 以admin帐号和redhat密码登录Ansible Tower web。


📑2. 更改My webservers DEV项目,使其自动触发SCM更新。

在这里插入图片描述


📑3. 使用DEV webservers setup作业模板启动一个作业。

(这个模板是通过setup命令设置的。)

这项工作将会失败。查看作业的输出屏幕,并尝试确定失败的原因。
在这里插入图片描述


📑4. 更新代码。

[student@workstation ~]$ cd ~/git-repos
[student@workstation git-repos]$ cd my_webservers_DEV
[student@workstation my_webservers_DEV]$ git pull
[student@workstation my_webservers_DEV]$ vim apache-setup.yml 
---
- hosts: all
  name: Install the web server and start it
  become: yes
  gather_facts: yes

[student@workstation my_webservers_DEV]$ git add --all
[student@workstation my_webservers_DEV]$ git commit -m "Enabling facts gathering"
[student@workstation my_webservers_DEV]$ git push

📑5. 使用已编辑的作业模板启动作业。

在Ansible Tower的web Ul中,编辑DEV webservers setup作业模板来启用USE FACT CACHE选项。

因为修改后的剧本包含了gather_facts: yes,它将收集Ansible事实。因为作业模板有USE FACT CACHE集,收集到的事实将存储在事实缓存中以备将来使用
在这里插入图片描述
在这里插入图片描述


📑6. 改回原代码。

[student@workstation my_webservers_DEV]$ vim apache-setup.yml
---
- hosts: all
  name: Install the web server and start it
  become: yes
  gather_facts: no

[student@workstation my_webservers_DEV]$ git add --all
[student@workstation my_webservers_DEV]$ git commit -m "Disabling facts gathering"
[student@workstation my_webservers_DEV]$ git push

📑7. 使用DEV webservers setup作业模板启动另一个作业。

回到Ansible Tower的web UI。

作为Developers团队的一员,使用DEV webservers setup作业模板启动一个作业。

即使事实收集被关闭,作业仍然成功,因为剧本中变量使用的事实可以使用事实缓存。这项工作也应该运行得更快,因为它不需要查清事实。
在这里插入图片描述
在这里插入图片描述


📑8. 验证Ansible事实已经存储在Ansible Tower事实缓存中。

在这里插入图片描述


💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第十二章 构建高级作业工作流--使用事实缓存提高性能 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
17天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
23天前
|
缓存 监控 测试技术
如何利用浏览器的缓存来优化网站性能?
【10月更文挑战第23天】通过以上多种方法合理利用浏览器缓存,可以显著提高网站的性能,减少网络请求,加快资源加载速度,提升用户的访问体验。同时,要根据网站的具体情况和资源的特点,不断优化和调整缓存策略,以适应不断变化的业务需求和用户访问模式。
67 7
|
26天前
|
存储 缓存 前端开发
利用 Webpack 5 的持久化缓存来提高构建效率
【10月更文挑战第23天】利用 Webpack 5 的持久化缓存是提高构建效率的有效手段。通过合理的配置和管理,我们可以充分发挥缓存的优势,为项目的构建和开发带来更大的便利和效率提升。你可以根据项目的实际情况,结合以上步骤和方法,进一步优化和完善利用持久化缓存的策略,以达到最佳的构建效果。同时,不断探索和实践新的方法和技术,以适应不断变化的前端开发环境和需求。
|
1月前
|
缓存 JavaScript 前端开发
Vue 3的事件监听缓存如何优化性能?
【10月更文挑战第5天】随着前端应用复杂度的增加,性能优化变得至关重要。Vue 3 通过引入事件监听缓存等新特性提升了应用性能。本文通过具体示例介绍这一特性,解释其工作原理及如何利用它优化性能。与 Vue 2 相比,Vue 3 可在首次渲染时注册事件监听器并在后续渲染时重用,避免重复注册导致的资源浪费和潜在内存泄漏问题。通过使用 `watchEffect` 或 `watch` 监听状态变化并更新监听器,进一步提升应用性能。事件监听缓存有助于减少浏览器负担,特别在大型应用中效果显著,使应用更加流畅和响应迅速。
82 1
|
2月前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
163 9
|
2月前
|
缓存 监控 负载均衡
在使用CDN时,如何配置缓存规则以优化性能
在使用CDN时,如何配置缓存规则以优化性能
|
2月前
|
缓存 运维 NoSQL
二级缓存架构极致提升系统性能
本文详细阐述了如何通过二级缓存架构设计提升高并发下的系统性能。
127 12
|
1月前
|
存储 缓存 NoSQL
构建高性能Web应用:缓存的重要性及其实现
构建高性能Web应用:缓存的重要性及其实现
|
2月前
|
缓存 NoSQL Java
揭秘性能提升的超级武器:掌握Hibernate二级缓存策略!
【9月更文挑战第3天】在软件开发中,性能优化至关重要。使用Hibernate进行数据持久化的应用可通过二级缓存提升数据访问速度。一级缓存随Session生命周期变化,而二级缓存是SessionFactory级别的全局缓存,能显著减少数据库访问次数,提高性能。要启用二级缓存,需在映射文件或实体类上添加相应配置。然而,并非所有场景都适合使用二级缓存,需根据业务需求和数据变更频率决定。此外,还可与EhCache、Redis等第三方缓存集成,进一步增强缓存效果。合理运用二级缓存策略,有助于大幅提升应用性能。
89 5
|
3月前
|
Java 开发者 JavaScript
Struts 2 开发者的秘籍:隐藏的表单标签库功能,能否成为你下个项目的大杀器?
【8月更文挑战第31天】Struts 2表单标签库是提升Web页面交互体验的神器。它提供丰富的标签,如`<s:textfield>`和`<s:select>`,简化表单元素创建与管理,支持数据验证和动态选项展示。结合示例代码,如创建文本输入框并与Action类属性绑定,显著提升开发效率和用户体验。通过自定义按钮样式等功能,Struts 2表单标签库让开发者更专注于业务逻辑实现。
47 0
下一篇
无影云桌面