集群部署设计疑问

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

请教各位部署运维问题,如果四台机器,一台中控,三台ObServer做集群,假设这几台服务器先不管是否在同一个地区,还有没必要再加ObProxy机器做集群?或者这个ObProxy集群是否要放入到这三台ObServer下?binlog集群呢?

1 个赞

根据文档库中的信息,以下是对您问题的详细解答:

1. 关于 OBProxy 是否需要单独部署

根据文档片段 3 和文档片段 4 的内容:

  • 在生产环境中,建议单独部署 OBProxy,以避免 OBProxy 和 OceanBase 数据库之间的资源竞争。
  • OBProxy 可以部署在应用服务器上、独立的机器上,或者部署在 OceanBase 数据库机器上。但为了提高性能和稳定性,推荐将 OBProxy 部署在独立的机器上,或者至少与 OceanBase 数据库节点分离。

因此,如果您已经有四台机器(一台中控机 + 三台 OBServer 节点),可以考虑再增加一台机器专门用于部署 OBProxy 集群。如果资源有限,也可以将 OBProxy 部署在这三台 OBServer 节点上,但需要注意资源隔离和性能影响。


2. OBProxy 集群是否要放入这三台 OBServer 下

根据文档片段 3 的内容:

  • OBProxy 是单进程软件,作为访问 OceanBase 数据库的反向代理。
  • 生产环境中建议至少部署两个 OBProxy 实例,以实现高可用性。

因此,您可以选择以下两种方案之一:

  1. 将 OBProxy 部署在独立的机器上:这是推荐的最佳实践,能够避免资源竞争。
  2. 将 OBProxy 部署在现有的三台 OBServer 节点上:如果资源有限,可以将 OBProxy 部署在这三台 OBServer 节点上,但需要确保每台机器有足够的资源来运行 OBProxy,并且配置适当的资源限制(如 CPU 和内存)。

3. 关于 Binlog 集群

根据文档片段 5 的内容:

  • OceanBase 数据库通过 RedoLog 实现集群间的异步数据同步,类似于传统数据库的主从复制模式。
  • 如果您需要设置 Binlog 集群(例如用于数据迁移或备份),可以通过 OMS(OceanBase Migration Service)来实现。

对于 Binlog 集群的部署:

  • 如果您的场景需要 Binlog 功能(如数据订阅或异步复制),可以考虑在现有架构的基础上增加一台机器专门用于部署 Binlog 集群。
  • 如果资源有限,也可以将 Binlog 集群与 OBProxy 或其他组件共用机器,但同样需要注意资源隔离和性能影响。

4. 总结建议

基于您的描述(四台机器:一台中控机 + 三台 OBServer 节点),以下是推荐的部署方案:

  1. OBProxy 部署
    • 如果资源允许,建议增加一台独立机器用于部署 OBProxy 集群。
    • 如果资源有限,可以将 OBProxy 部署在现有的三台 OBServer 节点上,但需要确保资源隔离。
  2. Binlog 集群
    • 如果需要 Binlog 功能,建议增加一台独立机器用于部署 Binlog 集群。
    • 如果资源有限,可以将 Binlog 集群与 OBProxy 共用机器。

5. 参考文档

  • 文档片段 3:标题为“部署生产环境 → 规划 OceanBase 集群部署”。
  • 文档片段 4:描述了如何通过 OCP 创建 OBProxy 集群。
  • 文档片段 5:介绍了 OceanBase 集群间的数据同步机制。

希望以上信息对您有所帮助!如果还有其他疑问,请随时提问。

详情请参考:

  1. 进行 Sysbench 测试
  2. 进行 TPC-C 测试
  3. 部署生产环境
  4. 创建 OBProxy 集群
  5. OceanBase 集群高可用部署方案简介
  6. 部署 OceanBase 集群
  7. 进行 TPC-H 测试
  8. 软硬件要求
  9. 部署前准备
  10. 使用命令行部署 OceanBase 数据库生产环境

OBProxy可以跟OBServer共用。这个要不了多少资源,默认好像就一个2G的java进程
我一般都是这样部署。

2 个赞

如果不追求绝对的高可用,可以

1台:中控OCP+OBproxy
3台:OBServer 3个zone 1-1-1 模式

我理解是,
1、关于binlog

  • 如果业务场景需要使用 binlog(例如跨数据中心的数据同步或增量备份),则需要单独部署 binlog 集群。
  • 在当前四台机器(一台中控 + 三台 OBServer)的情况下,如果需要部署 binlog 集群,建议增加至少一台独立的服务器用于 binlog 集群。

2、关于OBProxy集群

  • 不需要额外增加独立的 OBProxy 机器。
  • 如果每台机器的内存在32G以上且没有严格的性能要求,可以直接将 OBProxy 部署在现有的三台 OBServer 节点上,每台 OBServer 部署一个 OBProxy服务
  • OBProxy服务默认进程占用2G,访问量高的场景可能需要调大至4G以上,规划好资源即可。