更新

更新

我正在设置我的第一个 Pacemaker 集群,它有四个节点,我试图让它在特定的节点组上运行特定的资源。通常,我处理的资源需要恰好有一个在资源组中的某个地方运行。

我的集群中有不同的角色,例如:

  • 索引(节点 1 至 4)
  • 提交(节点 1 和 2)
  • 存档(节点 3 和 4,理想情况下优先选择节点 3)
  • 消耗(节点 3 和 4,理想情况下优先选择节点 4)

我定义的资源涉及三个浮动 IP(这些是提交角色)和两个 systemd 服务。(浮动 IP 是最重要的部分;其余卡住的软件自行进行集群。)

我正在尝试跟随https://www.unixarena.com/2015/12/rhel-7-pacemaker-cluster-resource-group-management.html/,但我不确定我对资源组所能做的事情的期望是否符合现实。

目前,pcs资源如下所示:

# pcs resource
 Resource Group: submission
     reception_ip_general   (ocf::heartbeat:IPaddr2):   Started node1
     reception_ip_networking    (ocf::heartbeat:IPaddr2):   Started node1
     reception_ip_esx   (ocf::heartbeat:IPaddr2):   Started node1
 Resource Group: archive
     archive-writer-avro    (systemd:archiver@avro):    Started node3
     archive-writer-syslog  (systemd:archiver@syslog):  Started node3

目前还没有设置任何种类的约束,只是幸运的是资源已经落到了它们所在的位置(例如,我看到其中一个浮动 IP 位于 node4 上)

为了澄清我想要实现的目标:

  • reception_ip_general 应该在 node1 xor node2 上运行
  • reception_ip_networking 应该在 node1 xor node2 上运行
  • reception_ip_esx 应在 node1 xor node2 上运行
  • archive-writer-avro 应该在 node3 xor node4 上运行
  • archive-writer-syslog 应该在 node3 xor node4 上运行

我认为我需要的是:

  • 允许我定义一组节点“提交”
  • 允许我将资源投入“提交”组
  • 指定位置约束,使得节点 1 和节点 2 应该是托管“提交”组中事物的节点。

或者我应该考虑:

  • 定义节点属性,使得每个节点都设置属性,例如 node1 可能具有属性 submission_role=1、index_role=1
  • 指定位置约束,使得资源粘附到具有其匹配属性的节点。

我确信这一定相当简单,但到目前为止,我遇到的所有文档似乎都没有对此进行建模,而且我几乎确信资源组正在引导我走上歧途。

谢谢你的帮助,卡梅伦

更新

pcs 节点属性

我一直在研究节点属性,目前已获得以下信息:

# pcs node attribute
Node Attributes:
 node1: indexing_role=1 submission_role=1
 node2: indexing_role=1 submission_role=1
 node3: archive_role=1 consumption_role=1 indexing_role=1
 node4: archive_role=1 consumption_role=1 indexing_role=1

约束如下:

# pcs constraint location reception_ip_general rule score-attribute=submission_role defined submission_role

输出:

# pcs constraint
Location Constraints:
  Resource: archive-writer-avro
    Constraint: location-archive-writer-avro
      Rule: score-attribute=archive_role
        Expression: defined archive_role
  Resource: archive-writer-syslog
    Constraint: location-archive-writer-syslog
      Rule: score-attribute=archive_role
        Expression: defined archive_role
  Resource: reception_ip_esx
    Constraint: location-reception_ip_esx
      Rule: score-attribute=submission_role
        Expression: defined submission_role
  Resource: reception_ip_general
    Constraint: location-reception_ip_general
      Rule: score-attribute=submission_role
        Expression: defined submission_role
  Resource: reception_ip_networking
    Constraint: location-reception_ip_networking
      Rule: score-attribute=submission_role
        Expression: defined submission_role
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:

节点属性获胜!

调整节点属性,以便我可以模拟节点 3/4 角色之间的偏好

# pcs node attribute 
Node Attributes:
 node1: indexing_role=1 submission_role=1
 node2: indexing_role=1 submission_role=1
 node3: archive_role=2 consumption_role=1 indexing_role=1
 node4: archive_role=1 consumption_role=2 indexing_role=1


# pcs status
Cluster name: mycluster
Stack: unknown
Current DC: node1 (version unknown) - partition with quorum
Last updated: Wed Aug 15 12:19:45 2018
Last change: Wed Aug 15 12:18:20 2018 by root via crm_attribute on node1

4 nodes configured
5 resources configured

Online: [ node1 node2 node3 node4 ]

Full list of resources:

 reception_ip_general   (ocf::heartbeat:IPaddr2):   Started node1
 reception_ip_networking    (ocf::heartbeat:IPaddr2):   Started node2
 reception_ip_esx   (ocf::heartbeat:IPaddr2):   Started node1
 archive-writer-avro    (systemd:archiver@avro):    Started node3
 archive-writer-syslog  (systemd:archiver@syslog):  Started node3

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

将node3置于待机状态,然后移动到node4

# pcs node standby node3

# pcs resource
 reception_ip_general   (ocf::heartbeat:IPaddr2):   Started node1
 reception_ip_networking    (ocf::heartbeat:IPaddr2):   Started node2
 reception_ip_esx   (ocf::heartbeat:IPaddr2):   Started node1
 archive-writer-avro    (systemd:archiver@avro):    Started node4
 archive-writer-syslog  (systemd:archiver@syslog):  Started node4

将 node3 退出待机状态,然后它返回到 node3

# pcs resource
 reception_ip_general   (ocf::heartbeat:IPaddr2):   Started node1
 reception_ip_networking    (ocf::heartbeat:IPaddr2):   Started node2
 reception_ip_esx   (ocf::heartbeat:IPaddr2):   Started node1
 archive-writer-avro    (systemd:archiver@avro):    Started node3
 archive-writer-syslog  (systemd:archiver@syslog):  Started node3

太棒了,让我们试试提交层,它有相同的分数。当我们“pcs standby node1”时,我看到事情转移到节点2。当我“pcs unstandby node1”时,它停留在节点2上,当我“pcs standby node2”时,事情转移到节点1。

如果我备用节点 1 和节点 2,那么事物将移动到节点 3 和节点 4,然后当我取消备用它们时,将移动回节点 1/2。

答案1

好的,我自己解决了这个问题。

实现此目的的方法是使用节点属性:

  1. 为集群中的每个角色创建节点属性。命令如下:

    pcs node attribute node1 submission_role=1 index_role=1

  2. 属性的值将用于得分。命令例如:

    pcs node attribute node3 archive_role=2 consumption_role=1 index_role=1

    pcs node attribute node4 archive_role=1 consumption_role=2 index_role=1

  3. 创建适用于已定义属性的主机的位置约束,并使用该属性的值作为分数。命令如下:

    pcs constraint location archive-writer-avro rule score-attribute=archive_role defined archive_role

  4. 使用诸如pcs node standby node1pcs node unstandby node1和 之类的命令进行测试watch pcs resource

  5. 调整节点属性来改变权重(您应该能够使用负值来表示避免而不是优先)。

请注意,我使用的值可能不是最好的;也许 100 比 1 更好。

无论如何,感谢大家思考我的问题。

干杯,卡梅伦

相关内容