OBProxy 代理服务是无状态的服务,1 个 OBProxy 默认的最大客户端连接数是 8192,通过配置项 client_max_connections 控制,但除了应急情况之外不建议调大,否则可能导致 OBProxy 内存不足的问题。面临 OceanBase 集群上的业务迅速扩张、连接数迅猛增长的情况,终态解决方案应是水平扩展 OBProxy 代理服务,而实现水平扩展的重要技术手段就是负载均衡。目前 OceanBase 数据库的输出方式主要有两种:阿里云(专有云)和独立输出,随着输出方式的不同,选择的负载均衡方案也不同,OceanBase 数据库中可能使用以下三种负载均衡技术:
阿里云(专有云)SLB
当 OceanBase 数据库随阿里云(专有云)平台整体输出时,应用部署在 VPC 的 ECS 中,而 OBServer 机器位于经典网络中,OBProxy 安装在部分 OBServer 机器上,将安装有 OBProxy 代理服务的 OBServer 机器作为后端服务器组添加到 SLB 实例,由 SLB 提供 VIP 及端口给应用来访问。具体拓扑图如下所示:
SLB 可提供四层和七层的负载均衡服务,具有后端服务器的健康检查功能,⾃动屏蔽异常状态的服务器,待该服务器恢复正常后⾃动解除屏蔽。同时⽀持⽩名单访问控制,通过添加负载均衡监听的访问⽩名单,仅允许特定 IP 访问负载均衡服务。
F5
除了搭载阿里云(专有云)平台整体输出以外,OceanBase 数据库也支持独立部署,提供适配机型给用户选择,安装部署 OceanBase 数据库在用户的机房中。如果用户有 F5 负载均衡设备,可用作 OBProxy 代理服务的负载均衡。部署架构图与阿里云(专有云)SLB 类似,只需将 SLB 替换成 F5 即可。F5 建议配置成路由模式,针对 OceanBase 云平台(OCP)和 OceanBase 开发者中心(ODC) Virtual Server 配置成 Standard 类型,针对 OBProxy 代理服务 Virtual Server 配置成 Performance Layer 4 类型。
DNS Mode
在 OceanBase 数据库独立部署时,如用户没有 F5 负载均衡设备,可以考虑使用 DNS Mode 来做负载均衡,但 DNS Mode 这种负载均衡方式不会考虑容错,一旦后端服务器发生故障也无法感知和自动屏蔽,存在一定的业务风险。另外,DNS Mode 负载均衡方式还存在调度负载算法单一和不支持白名单等问题。