打破砂锅问到底,OBProxy配合业务系统以及OBServer如何搭配才能达到真正的高可用

初级版:


高级版:

OBServer支持高可用,只要多数副本可用就能正常工作
那如果ODP挂了呢? 虽然ODP本身也支持集群化部署,那业务系统要如何连接集群中的ODP是最佳策略呢,总不能直连其中一台2883吧?也就是说要最终保证整个数据高可用的情况下,业务系统应该如何连接数据库,能达到容忍任意一台OBServer和ODP挂掉的时候业务无感?

注意:我的假设是支持任意一台ODP关机停止服务的情况下数据访问无感。

ODP外部可以包装一层LB来负责ODP的负载均衡

@论坛小助手

为了实现您所描述的高可用场景,确保在任意一台 OBProxy (ODP) 或 OBServer 挂掉的情况下,业务系统仍然能够无感知地继续访问数据,您可以采用以下策略:

1. OBProxy 集群化部署

集群化部署 OBProxy

  • 高可用性:通过将 OBProxy 部署为集群,可以确保即使其中一台 OBProxy 失效,其他 OBProxy 仍能继续提供服务。
  • 负载均衡:可以使用负载均衡器(如 Nginx、HAProxy 等)来分配客户端请求到不同的 OBProxy 实例,从而实现请求的分散和高可用性。

2. 客户端连接策略

客户端连接策略

  • 连接池:在业务系统的客户端使用连接池(如 HikariCP、C3P0 等),连接池可以自动管理连接的创建、回收和重试。
  • 动态 DNS:使用动态 DNS 服务,将域名解析到多个 OBProxy 地址,当某台 OBProxy 失效时,DNS 可以自动切换到其他可用的 OBProxy。
  • 智能客户端:开发智能客户端,能够在检测到连接失败时自动重试连接其他 OBProxy 实例。

3. OBServer 高可用性

OBServer 高可用性

  • 多副本机制:OBServer 本身支持多副本机制,只要多数副本可用,系统就可以正常工作。通过配置适当的副本数和分布策略,可以确保数据的高可用性和一致性。
  • 自动故障转移:OBServer 在检测到故障时,可以自动进行故障转移,将请求重定向到其他可用的 OBServer 实例。

4. 负载均衡器配置

负载均衡器配置

  • 健康检查:配置负载均衡器进行定期健康检查,确保只将请求转发到健康的 OBProxy 实例。
  • 会话保持:如果业务场景需要会话保持,可以在负载均衡器上配置会话保持策略,确保同一客户端的请求被转发到同一 OBProxy 实例。

5. 监控和报警

监控和报警

  • 实时监控:使用监控工具(如 Prometheus、Grafana 等)实时监控 OBProxy 和 OBServer 的状态,及时发现和处理故障。
  • 报警通知:配置报警通知,当 OBProxy 或 OBServer 出现异常时,及时通知运维人员进行处理。

总结

通过以上策略,您可以实现一个高度可用的 OceanBase 数据库访问架构,确保在任意一台 OBProxy 或 OBServer 失效的情况下,业务系统仍然能够无感知地继续访问数据。具体配置和实现细节可以根据您的实际业务需求和技术栈进行调整。

如果您需要更详细的配置示例或具体的实现步骤,可以参考以下文档:

希望这些信息对您有所帮助!如有进一步的问题,欢迎随时提问。

具体信息可参考以下文档:

  1. HELP
  2. ha_low_thread_score
  3. 向量检索实践教程概述
  4. ha_mid_thread_score
  5. 系统视图总览
  6. 遇到问题如何向技术支持同学提问
  7. ha_high_thread_score
  8. 基于 OceanBase 构建智能问答机器人
  9. ALTER USER