22.5. 使用资源限制配置高可用性集群
以下流程使用 ha_cluster
系统角色创建高可用性集群,其包含资源位置约束、资源 colocation 约束、资源顺序限制和资源票据限制。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core
。注意您不需要在集群成员节点上安装
ansible-core
。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles
软件包。 - 作为集群成员运行 的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
警告
ha_cluster
系统角色替换指定节点上任何现有的群集配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如 为 ha_cluster 系统角色指定一个清单 中所述
创建一个 playbook 文件,如
new-cluster.yml
。注意在为生产环境创建 playbook 文件时,建议您用 vault 加密密码,如 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置了一个集群,其中包含资源位置限制、资源 colocation 约束、资源顺序限制和资源票据限制。
- hosts: node1 node2 vars: ha_cluster_cluster_name: my-new-cluster ha_cluster_hacluster_password: password # In order to use constraints, we need resources the constraints will apply # to. ha_cluster_resource_primitives: - id: xvm-fencing agent: 'stonith:fence_xvm' instance_attrs: - attrs: - name: pcmk_host_list value: node1 node2 - id: dummy-1 agent: 'ocf:pacemaker:Dummy' - id: dummy-2 agent: 'ocf:pacemaker:Dummy' - id: dummy-3 agent: 'ocf:pacemaker:Dummy' - id: dummy-4 agent: 'ocf:pacemaker:Dummy' - id: dummy-5 agent: 'ocf:pacemaker:Dummy' - id: dummy-6 agent: 'ocf:pacemaker:Dummy' # location constraints ha_cluster_constraints_location: # resource ID and node name - resource: id: dummy-1 node: node1 options: - name: score value: 20 # resource pattern and node name - resource: pattern: dummy-\d+ node: node1 options: - name: score value: 10 # resource ID and rule - resource: id: dummy-2 rule: '#uname eq node2 and date in_range 2022-01-01 to 2022-02-28' # resource pattern and rule - resource: pattern: dummy-\d+ rule: node-type eq weekend and date-spec weekdays=6-7 # colocation constraints ha_cluster_constraints_colocation: # simple constraint - resource_leader: id: dummy-3 resource_follower: id: dummy-4 options: - name: score value: -5 # set constraint - resource_sets: - resource_ids: - dummy-1 - dummy-2 - resource_ids: - dummy-5 - dummy-6 options: - name: sequential value: "false" options: - name: score value: 20 # order constraints ha_cluster_constraints_order: # simple constraint - resource_first: id: dummy-1 resource_then: id: dummy-6 options: - name: symmetrical value: "false" # set constraint - resource_sets: - resource_ids: - dummy-1 - dummy-2 options: - name: require-all value: "false" - name: sequential value: "false" - resource_ids: - dummy-3 - resource_ids: - dummy-4 - dummy-5 options: - name: sequential value: "false" # ticket constraints ha_cluster_constraints_ticket: # simple constraint - resource: id: dummy-1 ticket: ticket1 options: - name: loss-policy value: stop # set constraint - resource_sets: - resource_ids: - dummy-3 - dummy-4 - dummy-5 ticket: ticket2 options: - name: loss-policy value: fence roles: - linux-system-roles.ha_cluster
- 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
# ansible-playbook -i inventory new-cluster.yml