mglantz.eda-ha
mglantz.eda-ha
这个角色为事件驱动的 Ansible (EDA) 服务器提供高可用性。 您需要设置两个或更多独立的 EDA 服务器,并在它们前面放置一个负载均衡器。 负载均衡器需要在 EDA 服务器之间进行主动-被动平衡,这意味着只有在 A 服务器失败时,B 服务器才会接收流量,依此类推。
在 EDA 服务器上运行的规则书会触发作为作业模板暴露的剧本。在创建执行操作的剧本时,您包括此角色,如示例所示,并根据提供的 eda_activation 布尔值依赖剧本中的任务。如果此布尔值为真,则表示相关的 EDA 服务器处于活动状态;如果不为真,则表示它是被动的,不应运行任何任务。因此,只有在 EDA 服务器“激活”时,才会采取行动,也就是说,负载均衡到的那台。
在主动和被动之间的故障转移速度取决于负载均衡器检测到的故障,通常约为一秒。因为 EDA 服务器 A 和 B 以及相应的 AAP 控制器之间唯一的区别是,只有当从活动的 EDA 服务器触发时,任务才会被执行。在 EDA 服务器端没有其他配置不同。
一旦您阅读了以下文档并查看角色的 tasks/main.yml,下面的图片将会有所理解。
使用以下命令安装角色:
ansible-galaxy role install mglantz.eda-ha
要在剧本中使用此角色,请创建一个 requirements.yml 文件,并将其放在角色目录中。 requirements.yml 文件需要声明:
---
- name: mglantz.eda-ha
示例可参见此处:https://github.com/mglantz/event-driven-ansible-demo/
要求
安装有 EDA 控制器的 Red Hat Ansible Automation Platform 2.4 的两个或多个实例,或者可能使用 https://github.com/ansible/eda-server(上游的 eda-server 尚未经过测试)。
负载均衡器,配置为对安装的 EDA 服务器进行主动-被动负载均衡。
在每个 EDA 服务器上创建文件:/var/lib/ansible-automation-platform/eda/ui/static/media/detect.json,内容如下:
{
"install_id": "unique_id_that_you_make_up_fqdn_perhaps"
}
当角色确定哪个 EDA 服务器是活动的,哪个是被动的时,它通过匹配直接联系 EDA 服务器时找到的 install_id 和通过负载均衡器时找到的 install_id 来实现。
- 调整以采取行动的剧本,如下方的“示例剧本”部分所示,利用此角色。
角色变量
# EDA 服务器前的负载均衡器的域名
load_balancer_fqdn: <string|负载均衡器的 fqdn>
# eda 服务器的域名,建议在 job_template 中设置
eda_fqdn: <string|eda 服务器的 fqdn>
# 如果我们要验证 https 证书。如果设置为 true,所有 EDA 服务器都需要有有效的证书
# 也包括通过负载均衡器的连接
validate_eda_tls_cert: <bool|true/false>
依赖项
Ansible 2.9 或 2.14。
示例剧本
使用角色的示例。 在由 EDA 事件触发的执行操作剧本中,进行如下调整:
---
# 以下剧本需要在您的剧本顶部
# 在 job_template 级别设置 eda_fqdn 变量是合理的。
- name: 检测哪个 EDA 服务器是活动的并相应设置 eda_activation
hosts: localhost
roles:
- { role: mglantz.eda-ha, load_balancer_fqdn: "loadbalancer.sudo.net", eda_fqdn: "eda.sudo.net" }
- name: 站点正常运行
hosts: all
vars:
# 以下变量需要添加到执行实际操作的剧本中
eda_activation: "{{ hostvars['localhost']['eda_activation'] }}"
gather_facts: false
tasks:
- debug:
msg: "一切正常"
# 添加以下when语句到您想控制的任务
when: eda_activation
# 或者类似的方式进行块插入
- block:
- name: 做其他事情
ansible.builtin.debug:
msg: "假想的其他事情"
- name: 也做这个
ansible.builtin.debug:
msg: "这个事情也是(假想)"
when: eda_activation
许可证
GPL 3.0
作者信息
- Magnus Glantz, sudo at redhat.com, 2023
- Roberto Nunez, rnunez at redhat.com, 2023
Role which adds HA capability to an EDA server setup
ansible-galaxy install mglantz.eda-ha