在应用 pcs 进行管理的 pacemaker 集群中,每个节点都会启动一个 pcsd 守护进程,监听 2224/tcp 端口。随后,我们可以从任一节点中,通过 pcs 命令管理整个集群。
误解
按照套路,通常这是一种 client/server 架构, pcs 命令行工具向相应节点的 pcsd 发送请求, pcsd 在相应节点完成动作。
然而实际与此有所出入。
实际套路
实际上,真正对 pacemaker 执行操作的,是 pcs 这个命令行工具。pcsd 负责接收来自其他节点的请求,随之调用本地的 pcs 工具,最后由本地的 pcs 执行操作。
本地命令示例
以 `pcs cluster start` 命令为例。在 Node A 中执行 `pcs cluster start`, Node A 本地的 cluster 相关服务将被启动。
在此操作中,不需要经过 pcsd. 即, pcs ---> execute. 具体过程如下。
1. Node A 的 pcs 脚本被调用。
### pcs/pcs
10 from pcs import app
11
12 app.main(sys.argv[1:])
2. Node A 的 pcs 调起 app.py.
### pcs/app.py
14 from pcs import (
15 acl,
16 cluster,
17 config,
18 constraint,
19 node,
20 pcsd,
21 prop,
22 qdevice,
23 quorum,
24 resource,
25 settings,
26 status,
27 stonith,
28 usage,
29 utils,
30 alert,
31 )
### 找到 cluster 子命令对应的入口,cluster.cluster_cmd.
176 cmd_map = {
177 "resource": resource.resource_cmd,
178 "cluster": cluster.cluster_cmd,
179 "stonith": stonith.stonith_cmd,
180 "property": prop.property_cmd,
181 "constraint": constraint.constraint