如何通过Docker Compose运行多Worker节点的Trino集群?
解决Docker Compose部署Trino多Worker节点不识别问题
你遇到的核心问题是所有Worker节点使用了相同的node.id配置——Trino通过node.id唯一标识集群中的节点,重复的ID会被Trino判定为同一个节点,所以即便Docker里有4个容器,Trino只显示一个。
下面是具体解决步骤:
1. 让每个Worker节点的node.id唯一
修改你的Docker Compose配置,给Worker服务添加环境变量,用容器的主机名(每个容器的主机名默认是服务名-序号,比如trino-worker-1、trino-worker-2)作为唯一的node.id:
trino-worker: image: trinodb/trino:392 deploy: replicas: 4 volumes: - ./worker/etc:/etc/trino environment: - NODE_ID=${HOSTNAME}
2. 修改Worker的配置文件
打开Worker节点的node.properties配置文件(路径对应你挂载的./worker/etc/node.properties),将node.id的值改为读取环境变量:
node.environment=production node.id=${NODE_ID} node.data-dir=/var/trino/data
3. 重启集群
执行命令重启Docker Compose服务,让配置生效:
docker-compose down docker-compose up -d
4. 验证结果
连接Trino Coordinator执行查询:
SELECT * FROM system.runtime.nodes;
此时应该能看到4个状态为active的Worker节点,每个节点的node_id对应容器的主机名,不会重复。
内容的提问来源于stack exchange,提问作者Cherry
相关产品推荐
相关产品推荐

