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,下面的图片将会有所理解。 如果无法显示,请查看 GitHub 上的架构概览

使用以下命令安装角色:

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
许可证
gpl-3.0
下载
482
拥有者
Principal Specialist Solution Architect at Red Hat