联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
8.3.1 Quark Gateway的负载均衡
更新时间:9/5/2023, 6:18:53 AM

在处理用户业务的并发接入时,连接的处理任务分配管理服务可能随着并发量的加大而逐步达到性能瓶颈,而任务的均衡分配处理可以协助任务分配管理服务更好地分配调度待执行任务,均衡分配业务处理,充分调动分布式数据库并发处理能力,从而实现并发业务处理响应。

不同于传统解决方案,在 ArgoDB 中,您只需简单修改配置文件,即可在 Quark Gateway 的 Session 层面,将客户端的连接分担给多个可用的 Quark Server ,从而平衡业务流量以应对高并发场景。

argodb load balabce
图 4.1.1:ArgoDB 负载均衡

使用 Quark Gateway 实现负载均衡时,至少需部署 2 个及以上的 Quark Server。

配置规则
  1. 通过 Transwarp Manager 部署 Quark Gateway,部署流程可参考安装服务,如已部署可跳过本步骤。

    install quark gateway
    图 4.1.2:安装 Quark Gateway
  2. 通过 SSH 登录至 Quark Gateway 服务所属机器。

  3. 执行下述格式的命令,进入 Quark Gateway 的配置文件路径。

    # 根据环境替换服务 ID,例如 cd/etc/quarkgateway1/conf/
    cd /etc/quarkgateway{服务 ID}/conf/
    复制
  4. 通过 vimvi 命令修改配置文件(servers.data),示例如下,可将环境中的 3 个 Quark Server 组成负载均衡组,从而共同分摊业务流量。

    servers.data
    NAME IS001
    URI host1:10000
    TAG primary
    NAME IS002
    URI host2:10000
    TAG primary
    NAME IS003
    URI host3:10000
    TAG primary
    复制

    参数说明

    • NAME:取值唯一的名称。

    • URI:Quark Server 的连接信息,包含主机名和端口号。

    • TAG:标签,Quark Gateway 将依据标签进行路由,本案例中,我们将 Quark Server 设置相同的标签,即可将它们组成了一个群组,实现负载均衡。

更多场景

除通过 Quark Gateway 实现负载均衡外,您还可以实现查询高可用、按 SQL 规则路由等功能,具体场景及配置示例如下。

按 SQL 规则路由

基于特定规则将不同的业务(例如查询/跑批),分发的到不同的 Quark Server,在本案例中,假设我们拥有两个 Quark Server,分别部署在 idc1 和 idc2 节点上,我们希望对 demodata 库中 customer 表执行 SQL 查询时路由至 idc2 对应的 Quark Server 上执行;其他查询业务路由至 idc1 的 Quark Server 上执行。

为实现此需求,我们需要修改 Quark Gateway 中的下述配置文件(如没有可新建):

  • servers.data

    将 idc1 对应的 Quark Server 标签定义为 cluster,将 idc2 对应的 Quark Server 标签定义为 local-only

    NAME IS001
    URI idc1:10000
    TAG cluster
    NAME IS002
    URI idc2:10000
    TAG local-only
    复制
  • tagged-table.data

    为 demodata.customer 表设置 TOKEN-TAG 的值为 local

    local:
    demodata.customer
    复制
  • route-rule.data

    将表名符合 TOKEN-TAG 为 local 定义的 SQL 语句,即对 demodata.customer 执行的 SQL 请求路由至 idc2 对应的 Quark Server 上执行,其它表的 SQL 语句则路由至 idc1。

    NAME local-mode
    CONDITIONS
    SQL.CONTAIN-ANY-FULLTABLENAME TOKEN-TAG|local
    TO local-only [ANY]
    NAME DEFAULT
    TO cluster [ANY]
    复制
查询高可用

为保障业务的高可用性,当某个 Quark Server 因网络/电力等因素发生服务异常,需要 Quark Gateway 能自动将请求切换到另一个可用的 Quark Server上。

本案例中,假设我们拥有两个 Quark Server,分别部署在 idc1 和 idc2 节点上,我们希望优先使用 idc1 节点上的 Quark Server 提供查询服务,当它发生故障时,将查询业务路由至 idc2 节点上的 Quark Server 执行,保障业务高可用。

为实现此需求,我们需要修改 Quark Gateway 中的下述配置文件(如没有可新建):

  • servers.data

    将 idc1 对应的 Quark Server 标签定义为 primary,将 idc2 对应的 Quark Server 标签定义为 secondary

    NAME IS001
    URI idc1:10000
    TAG primary
    NAME IS002
    URI idc2:10000
    TAG secondary
    复制

    如果开启 kerberos 认证,您还需要在 URI 下方增加一行该格式的配置,用于设置认证信息:PRINCIPAL hive/host@TDH

  • route-rule.data

    将所有的请求导向名称为 query-ha 的集群。

    NAME DEFAULT
    TO query-ha [ANY]
    复制
  • route-cluster.data

    设置集群名字为 query-ha,并设置切换 Quark Server 的策略为“server-fail”。即表示当 idc1 对应的 Quark Server 发生异常故障后,连接请求被路由至 idc2 。

    NAME query-ha
    TRY primary [ANY,SERVER-FAIL]
    TRY secondary [ANY]
    复制

    如需实现超时转发的效果,即假设 idc1 对应的 Quark Server 上任务执行发生超时,由 Quark Gateway 将请求切换到 idc2。您可以将上述配置中的 TRY primary [ANY,SERVER-FAIL] 替换为 TRY primary [ANY,1000ms],超时时间可以根据业务需求指定,此处设置为 1000 毫秒。