为啥最近的主机名负载平衡配置在 ClickHouse 中不起作用?

Posted

技术标签:

【中文标题】为啥最近的主机名负载平衡配置在 ClickHouse 中不起作用?【英文标题】:Why does nearest_hostname loadbalancing configuration not work in ClickHouse?为什么最近的主机名负载平衡配置在 ClickHouse 中不起作用? 【发布时间】:2020-03-15 20:20:21 【问题描述】:

我在配置文件中写了这样的东西

<yandex>
  <remote_servers>
    <clickhouse>
      <shard>
        <weight>1</weight>
        <internal_replication>true</internal_replication>
        <replica>
          <host>s00-r00.clickhouse.xxx.net</host>
          <port>9000</port>
        </replica>
        <replica>
          <host>s00-r01.clickhouse.xxx.net</host>
          <port>9000</port>
        </replica>
      </shard>
      <shard>
        <weight>1</weight>
        <internal_replication>true</internal_replication>
        <replica>
          <host>s01-r00.clickhouse.xxx.net</host>
          <port>9000</port>
        </replica>
        <replica>
          <host>s01-r01.clickhouse.xxx.net</host>
          <port>9000</port>
        </replica>
      </shard>
    </clickhouse>
  </remote_servers>
</yandex>

而我的 load_balancing 配置是 nearest_hostname

我在集群 clickhouse 上创建了一个表,并在其上创建了一个分布式表。

我在s00-r00机器上提交了对这个分布式表的全局查询,预计本地查询应该在s00-r00和s01-r00机器上执行。

但是通过监控几个查询测试,除了 s00-r00 机器之外,我能够看到它在不同时间在 s01-r00 和 s01-r01 中执行。

如果我的理解是正确的,我的配置中的主机名应该符合nearest_hostname的document description。 为什么它不起作用?

或者这个nearest_hostname配置标识的主机名不是&lt;remote_servers&gt;&lt;clickhouse&gt;&lt;shard&gt;&lt;replica&gt;配置的主机名,而是别的什么?

【问题讨论】:

【参考方案1】:

需要在 s01-r01 执行少量请求 (

另一个原因:在某个时间点,远副本的错误数量可能会低于近副本。

https://clickhouse.tech/docs/en/operations/settings/settings/#load_balancing-nearest_hostname

计算每个副本的错误数。每 5 分钟,错误数除以 2。因此,使用指数平滑计算最近时间的错误数。如果有一个副本的错误数量最少(即最近在其他副本上发生了错误),则将查询发送给它。如果有多个副本具有相同的最小错误数,则将查询发送到主机名与配置文件中服务器的主机名最相似的副本(对于相同位置的不同字符数,最多两个主机名的最小长度)。

我使用最近的主机名,它按预期工作,只是距离公式本身很棘手,并将距离计算为许多不同的字母。

s00-r00 -> s01-r00(距离 1)

s00-r00 -> s01-r01(距离 2)

dcx01 --> dcx12(距离2)

dcx01 --> dcy01(距离 1)

【讨论】:

谢谢!我想我需要做更多的测试。 你能帮我解决另一个问题吗? ***.com/questions/60698597/…它让我无法发布服务 嗨!您能说出负载平衡时error 的确切含义吗? error 是否指查询抛出的异常?还是别的什么?

以上是关于为啥最近的主机名负载平衡配置在 ClickHouse 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

负载均衡详解 - 玩转Kong网关

端口聚合配置

端口聚合配置

如何在 CDK 应用程序中获取 RDS 实例主机名?

pfsense Web服务器负载平衡配置示例

电脑的linux系统主机名字为啥会变来变去