Quark Gateway 基于用户与时间段的动态路由配置

  其他常见问题
内容纲要

背景

在实际业务中,有时需要根据 用户身份 和 时间段 将 SQL 请求路由到不同的 Quark Server,以实现资源隔离、负载均衡或成本优化。

例如:metric_sys 用户在凌晨 0-8点 使用 Quark1/Quark3 节点,白天 8-24点 切换到 Quark4 节点。

本文通过 Quark Gateway 的 TIME SCHEDULESESSION.REMOTE-USERS-ALLOW 规则组合,实现上述需求。

实现原理

  • TIME SCHEDULE:为每个 Quark Server 设置可用时间段,仅在该时间段内新建立的 Session 才会被路由到该 Server。
  • TAG 分组:将具有相同时间策略的 Server 归为同一 TAG,便于路由规则统一引用。
  • 用户匹配规则:通过 SESSION.REMOTE-USERS-ALLOW 指定只有 metric_sys 用户的路由请求才走该规则,其他用户可走默认规则。

配置文件详解

1. servers.data

定义后端 Quark Server 的地址、TAG 及可用时间段。

NAME quark1
URI 172.18.131.171:10000
TAG tag-timediff
TIME SCHEDULE
ONLINE 00:00:00 08:00:00

NAME quark3
URI 172.18.131.171:10001
TAG tag-timediff
TIME SCHEDULE
ONLINE 00:00:00 08:00:00

NAME quark4
URI 172.18.131.173:10000
TAG tag-timediff
TIME SCHEDULE
ONLINE 08:00:00 24:00:00

说明:

  • 三个 Server 使用相同的 TAG tag-timediff,表示它们属于同一组,但通过 TIME SCHEDULE 错开可用时间。
  • quark1 和 quark3 仅在 00:00:00 ~ 08:00:00 可用,quark4 在 08:00:00 ~ 24:00:00 可用。
  • 配置隔夜时间(如 23:00~次日 06:00)需要使用两段 ONLINE 语句,此处无需。

2. route-cluster.data

定义集群的故障转移策略。当首选 Server 不可用时,自动尝试同 TAG 的其他 Server。

NAME tag-timed-cluster
TRY tag-timediff [ANY,SERVER-FAIL]
TRY tag-timediff [ANY]

说明:

  • 集群名称为 tag-timed-cluster
  • 第一个 TRY 表示优先使用 tag-timediff 标签下的 Server,并开启宕机转发(SERVER-FAIL)。
  • 第二个 TRY 作为备用,当第一个 Server 宕机时,尝试同 TAG 的其他 Server。
  • 由于三个 Server 的可用时间段不同,在某个时刻只有符合时间段的 Server 才会被选中,无法连接时自动尝试另一个。

3. route-rule.data

定义路由规则:仅 metric_sys 用户的请求转发到上述集群。

NAME metric_sys
CONDITIONS
SESSION.REMOTE-USERS-ALLOW "metric_sys"
TO tag-timed-cluster [ANY]

说明:

  • 规则名 metric_sys。
  • 条件:仅允许用户名为 metric_sys 的连接匹配此规则。
  • 目标:转发到 tag-timed-cluster 集群(即由 servers.dataroute-cluster.data 定义的 Server 组)。
  • 其他用户(未匹配此规则)将走默认规则(需在 route-rule.data 中另外定义 NAME DEFAULT 规则,否则可能报错)。

行为验证

时间 用户 可用 Server 路由结果
00:00~08:00 metric_sys quark1, quark3 随机或轮询到 quark1 或 quark3
08:00~24:00 metric_sys quark4 路由到 quark4
任意时间 其他用户 默认规则(需自行配置) 按默认规则路由

注意:

  • TIME SCHEDULE 仅对新建立的 Session 生效,已存在的 Session 不会因时间变化而切换 Server。
  • 若在 08:00 前建立的 Session 持续到 08:00 后,仍会在原 Server 上执行,不会自动迁移。

注意事项

  1. 默认规则:必须为其他用户配置 NAME DEFAULT 规则,否则未匹配 metric_sys 规则的请求会失败。
  2. 时间格式:ONLINE 后的时间必须为 HH:MM:SS 格式,且结束时间不能小于开始时间(跨天需分段)。
  3. 用户认证:SESSION.REMOTE-USERS-ALLOW 仅在 hive.server2.authentication 为 LDAP 时生效,请确认认证方式。
  4. 重启生效:修改配置文件后,需重启 Quark Gateway 服务才能生效。
  5. 高可用:若某个 Server 宕机,Gateway 会自动尝试同 TAG 的其他可用 Server(基于 route-cluster.dataSERVER-FAIL 配置)。

总结

通过组合 TIME SCHEDULETAGSESSION.REMOTE-USERS-ALLOW,Quark Gateway 能够灵活实现基于用户和时间段的路由策略。此方案无需修改应用代码,仅通过配置文件即可完成,适用于资源隔离、按需调度等场景。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。