You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clickhouse集群:无secret时无法向分布式表写入的问询

ClickHouse集群无secret跨节点通信配置问题

集群与表配置

3节点ClickHouse集群配置

<secret>clickhousecluster</secret>
     <shard>
         <replica>
             <host>CHN1</host>
             <port>9000</port>
         </replica>                
     </shard>
     <shard>
         <replica>
             <host>CHN2</host>
             <port>9000</port>
         </replica>                
     </shard>
     <shard>
         <replica>
             <host>CHN3</host>
             <port>9000</port>
         </replica>                
     </shard>

分布式表创建语句

CREATE TABLE db1.hosts_distr(
    `timestamp` DateTime CODEC(Delta(4), ZSTD(1)),
    `host` LowCardinality(String),`message` String    
)
ENGINE = Distributed('cluster1', 'db1', 'hosts', rand());

问题现象

配置<secret>时集群写入正常,移除secret后,所有写入仅在本地节点生效,错误日志显示:

<Error> Access(user directories): from: 192.168.63.111, user: default: Authentication failed: Code: 192. DB::Exception: There is no user `default` in local directory. (UNKNOWN_USER)

已尝试使用default用户,也通过XML文件和SQL在所有节点创建了具备必要权限的同密码用户,但只有配置secret时才能正常工作,询问是否可以不使用secret,仅通过所有节点上存在的同密码用户实现集群通信。


解决方案

可以不依赖<secret>,通过统一的用户账号密码实现集群跨节点通信,需确保以下配置步骤全部完成:

  • 创建统一权限的集群通信用户:
    建议不要使用default用户(易与默认配置冲突),在所有节点创建相同用户名、密码的专用用户,比如cluster_user:
    用SQL创建:

    CREATE USER cluster_user IDENTIFIED WITH plaintext_password BY 'your_strong_password';
    GRANT ALL ON db1.* TO cluster_user;
    

    或通过users.xml配置(每个节点都要添加):

    <users>
        <cluster_user>
            <password>your_strong_password</password>
            <networks>
                <ip>192.168.63.0/24</ip> <!-- 仅允许集群所在网段访问,提升安全性 -->
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </cluster_user>
    </users>
    
  • 修改集群配置文件,指定跨节点通信的用户密码:
    移除原<secret>配置,在每个<replica>节点下添加<user>和<password>字段,示例:

    <shard>
        <replica>
            <host>CHN1</host>
            <port>9000</port>
            <user>cluster_user</user>
            <password>your_strong_password</password>
        </replica>                
    </shard>
    <shard>
        <replica>
            <host>CHN2</host>
            <port>9000</port>
            <user>cluster_user</user>
            <password>your_strong_password</password>
        </replica>                
    </shard>
    <shard>
        <replica>
            <host>CHN3</host>
            <port>9000</port>
            <user>cluster_user</user>
            <password>your_strong_password</password>
        </replica>                
    </shard>
    
  • 验证跨节点连通性:
    在任意节点使用该专用用户连接其他节点,确认认证正常:

    clickhouse-client --host CHN2 --user cluster_user --password your_strong_password --query "SELECT version()"
    
  • 重启所有节点的ClickHouse服务:
    配置修改后需重启服务生效:

    sudo systemctl restart clickhouse-server
    

内容的提问来源于stack exchange,提问作者Majid Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:39:56