OBProxy 使用黑名单机制自适应处理 OBServer 错峰合并、升级、leader 切换、宕机、启动和停止等过程中的 OBServer 访问控制。
OBProxy 有宕机黑名单和活不可用黑名单两种类型,可通过设置参数对黑名单进行管理。
通过黑名单可主要实现如下场景的访问控制:
错峰合并时正在合并的 Zone 没有流量。
集群升级时不能访问正在升级的 OBServer 或 Zone。
OBServer 宕机后,不再访问该 OBServer。
Partition 迁移后,不再访问迁移前的 OBServer。
访问的 OBServer 不存在租户资源时重试。
OBServer 活不可用(内存超限、超时、OBServer 初始化和退出)时重试。
宕机黑名单
一旦检测到某台 OBServer 宕机或者因手工执行 stop server
命令使得该 OBServer 节点暂停对外提供服务时,则把这台 OBServer 加入宕机黑名单。这使得该应用不再访问该 OBServer,直到再次检测发现节点状态恢复正常时才会从黑名单中放出。
当 OBServer 节点状态是以下两种状态之一时,该 Server 被加入宕机黑名单:
所在 OBServer 的
start_service_time
项值为 0所在 OBServer 的
status
项值为 inactive
活不可用黑名单
活不可用黑名单与宕机黑名单的区别在于,OBServer 的状态是暂时的或不确定的,所以每隔一段时间会进行重试,如果重试发现该 OBServer 恢复正常了,则将该 OBServer 放出黑名单。
当 OBServer 节点状态处于以下状态之一时,该 Server 被加入活不可用黑名单:
所在 Zone 正在升级
所在的 Server 正在升级
Server 状态为资源限制、连接数限制、内存超限、正在初始化或正在退出时都会返回指定错误码
Server Response 超时或是 Client Connect 超时
黑名单的配置参数
在客户端中使用 root 用户登录集群的 sys 租户。
执行以下命令以查看 OBProxy 的配置参数。
obclient> SHOW PROXYCONFIG;
运行
ALTER proxyconfig SET key=value
命令更新 OBProxy 的指定配置参数,配置项更新后会立即生效。与黑名单相关的配置参数描述如下表所示。
配置项
描述
enable_congestion
是否启用黑名单机制。默认开启,在黑名单机制运行出问题时,可以暂时关闭这个选项让 OBProxy 能够正常工作。
congestion_failure_threshold
设置当 Server 在 N 秒内出错几次则将该 Server 加入黑名单。该参数值小于 0 时,则所有在黑名单中的 Server 都会被放出黑名单。
congestion_fail_window
设置错误统计周期的时间(秒)。默认值 120 秒,如果在这个错误统计周期中错误次数超过了 congestion_failure_threshold 的值,则将该 Server 加入黑名单。该参数值也可以动态调整,一旦修改了该参数,当前错误统计计数会被清零,将重新按新的 fail window 从头开始统计错误次数。
congestion_retry_interval
设置被加入活着不可用黑名单的 Server 的重试周期,默认值 20 秒。
min_keep_congestion_interval
设置被加入黑名单的 Server,多长时间后才允许被放出黑名单。
min_congested_connect_timeout
设置客户端连接超时的值,当连接超时时则将 Server 加入活不可用黑名单,默认值为100 ms。