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
相关产品推荐
相关产品推荐

