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

Mac环境下Docker部署Aerospike 2节点集群失败求助

解决Mac环境下Docker部署Aerospike 2节点集群组建失败问题

问题诊断

核心问题是Aerospike的fabric端口(3001)默认仅监听127.0.0.1,导致Docker容器间无法通过该端口完成集群握手。日志中的skipping forming cluster - cannot form new cluster from pending join requests (empty)正是因为节点间无法建立fabric连接,集群握手失败。

解决方案

方式一:启动容器时直接指定命令行参数

无需修改配置文件,直接通过docker run命令覆盖默认配置,确保所有关键端口监听容器内网地址:

启动节点1

docker run -d --name aerospike-node1 --network aerospike-network \
aerospike/aerospike-server \
asd --config-file /etc/aerospike/aerospike.conf \
--service-address 0.0.0.0 \
--fabric-address 0.0.0.0 \
--heartbeat-address 0.0.0.0 \
--heartbeat-mode mesh \
--heartbeat-port 3002 \
--heartbeat-seed-address aerospike-node2 3002

启动节点2

docker run -d --name aerospike-node2 --network aerospike-network \
aerospike/aerospike-server \
asd --config-file /etc/aerospike/aerospike.conf \
--service-address 0.0.0.0 \
--fabric-address 0.0.0.0 \
--heartbeat-address 0.0.0.0 \
--heartbeat-mode mesh \
--heartbeat-port 3002 \
--heartbeat-seed-address aerospike-node1 3002

参数说明:

  • --service-address 0.0.0.0:让服务端口(3000)监听所有地址,允许跨节点访问
  • --fabric-address 0.0.0.0:让fabric端口(3001)监听所有地址,解决跨节点集群通信问题
  • --heartbeat-mode mesh:使用Mesh模式组建集群(Aerospike社区版默认集群模式)
  • --heartbeat-seed-address:指定集群种子节点,两个节点互相指向对方的心跳端口(3002)

方式二:自定义配置文件挂载

如果需要持久化配置,修改aerospike.conf的network块,确保所有网络监听any(即0.0.0.0),并配置Mesh心跳:

修改后的配置文件核心片段

network {
    service {
        address any
        port 3000
    }

    fabric {
        address any
        port 3001
    }

    heartbeat {
        mode mesh
        address any
        port 3002
        # 添加两个节点作为种子
        seed-address aerospike-node1 3002
        seed-address aerospike-node2 3002
        interval 150
        timeout 10
    }
}

启动容器(挂载自定义配置)

节点1:

docker run -d --name aerospike-node1 --network aerospike-network \
-v /本地路径/aerospike.conf:/etc/aerospike/aerospike.conf \
aerospike/aerospike-server

节点2:

docker run -d --name aerospike-node2 --network aerospike-network \
-v /本地路径/aerospike.conf:/etc/aerospike/aerospike.conf \
aerospike/aerospike-server

集群验证

进入任意节点容器,执行以下命令查看集群节点:

docker exec -it aerospike-node1 asinfo -v 'services'

成功组建集群后,输出会包含两个节点的内网IP和服务端口,示例:

172.18.0.2:3000,172.18.0.3:3000

内容的提问来源于stack exchange,提问作者Rohit Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:04:53