OCP高可用多节点部署

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OCP
【 使用版本 】社区版4.4.2
【问题描述】清晰明确描述问题
请问下多节点部署OCP ,比如部署了两个节点,上层使用负载均衡,那metadb 和 monitordb 是不是也会存两份,还是一份,如果是一份,请问原理是啥,我理解两个ocp 之间也没有通信,是不是两个ocp 节点都会通过ocp_agent 去拉监控数据然后往monitordb 里写,那这样不就是两份数据了吗,metadb 同理,请帮忙解惑谢谢

1 个赞
                 [ 负载均衡 / VIP ]
                /                 \
        OCP-Server-1 (master)   OCP-Server-2 (standby)
                \                 /
                 \               /
              共用 ↓           ↓ 共用
          ┌──────────────────────────┐
          │   MetaDB + MonitorDB     │   ← 只有一份
          │   (单个 OB 集群)         │
          └──────────────────────────┘
                   ↑
          (Agent 直接写监控,1 份)
        /       |        \
 OCP-Agent  OCP-Agent   OCP-Agent   (每台被纳管机器一个)
    |           |           |
 OBServer    OBServer    OBServer
  • MonitorDB 是不是两份? 不是,一份。因为采集方是每台机器上的 OCP-Agent,与 OCP-Server 节点数无关;Agent 只写一次。
  • MetaDB 是不是两份? 不是,一份。两个 OCP-Server 连同一个物理库,且选主机制保证只有 master 跑改状态的任务,不会有重复写。

–“两个 OCP 之间没有通信” —— 这个理解也不准确

两个 OCP-Server 之间是有协调的,只不过不是直接 RPC 互打,而是借 MetaDB 做"会合点":

  • 主备选主(master election):多副本 OCP-Server 通过 MetaDB 里的一张锁表 / 租约表来竞争选主。同一时刻只有一个 master。
  • 任务调度只在 master 上跑:定时巡检、备份调度、扩缩容、告警生成等"会改状态/会重复执行出问题"的活儿,只由 master 节点跑。非 master 节点(standby)主要对外提供读 API 和控制台访问,接到写操作时要么转发给 master、要么直接落到共享 MetaDB(反正库是同一个)。
1 个赞

OCP就相当于普通的应用,应用部署几个节点,跟数据库没啥关系