暂无图片
暂无图片
12
暂无图片
暂无图片
暂无图片

OceanBase代理高可用

OceanBase 2022-10-20
423

OceanBase 数据库代理 ODP(OceanBase Database Proxy,又称 OBProxy)是 OceanBase 专用的代理服务。ODP 自身就有高可用设计。

ODP 部署模式

合并部署

  • 以 OCP 方式启动

    • 可以访问多个集群。

    • 若 OCP 挂掉后,已访问过的集群可以正常访问,未访问过的集群不可访问。

  • 以 RSList 方式启动(只可以访问单集群,IP 为 127.0.0.1)

    • 固定访问某个集群,不依赖 OCP。本机有问题后,SLB 探测并切流,无需 ODP 额外动作。

    • 可处理部分机器故障场景。

独立部署

  • 以 OCP 方式启动

    • 可以访问多个集群。

    • 若 OCP 挂掉后,已访问过的集群可以正常访问,未访问过的集群不可访问。

  • 以 RSList 方式启动

    • 固定访问某个集群,不依赖 OCP。RS List 如果有问题,可能导致集群不可访问。

ODP 容灾能力

发现故障

  • 定时任务,刷新 OBServer、Zone、主备集群状态。

    • 方案限制:依赖 OBServer 的状态更新。可能存在 OBServer 出问题(如:磁盘 hang 住),但是没有 inactive 或者 stop server,这个时候状态不会变化。
  • Server 连接保持 与 KeepAlive 探活机制,探测 OBProxy 与 后端 OBServer 的连接状况,如果空闲连接异常断开,OBProxy 可以及时发现,剔除并新建。

  • Client KeepAlive 探活机制,探测 OBProxy 与 Client 的连接状况,同时可以避免 SLB 等负载均衡的空闲超时。

处理故障

处理进行中的请求

异步中止机制,当检测到机器故障后,及时中止,避免长时间等待,业务连接池被打爆

处理新请求

  • 黑名单机制,避免新请求发送到故障机器。

    • OBServer 多次访问失败会加入黑名单。在加入黑名单一段时间后,会发起探测请求,探测该机器是否可访问。

    方案限制:如果客户端先超时断开连接,不会加入黑名单。

    • OBServer 状态变更为非 active,也会加入黑名单。

    方案限制:RTO 依赖 【发现故障-定时任务】 的周期(目前是 20s,可配置) 和 OBServer 的探测时间

  • 异步刷新 table location cache 机制,检测副本是否切换,如果机器故障后发生了副本切换,可以及时路由到新的副本上

    方案限制:依赖 OBServer 告诉 ODP 路由有问题,如果 OBServer 有问题,一直没返回,table location cache 不会刷新

  • 两中心主备库场景,有主备库切换机制,如果主集群发生了切换,可以快速切换到新的主集群

    方案限制:RTO 依赖 【发现故障-定时任务】 的周期(目前是 20s,可配置) 和 OBServer 的切换时间

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论