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 超时

黑名单的配置参数

  1. 在客户端中使用 root 用户登录集群的 sys 租户。

  2. 执行以下命令以查看 OBProxy 的配置参数。

    1. obclient> SHOW PROXYCONFIG;
  3. 运行 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。