Aerospike单节点集群部署失败:DISALLOW MIGRATIONS报错排查
问题分析与解决方案
问题核心
从日志可见,你的单节点Aerospike集群误识别为多节点集群(日志中SUCCESSION条目列出了6个节点ID),导致触发重平衡流程并禁止数据迁移,最终引发AEROSPIKE_ERR_CLUSTER(11)插入错误。
原因
Aerospike启动时会读取存储的集群元数据(SMD文件),如果之前该节点曾加入过多节点集群,残留的元数据会让它误以为仍处于多节点环境,进而启动重平衡逻辑。
解决步骤
1. 清理残留集群元数据
- 停止Aerospike服务:
service aerospike stop - 删除SMD(State Management Data)目录下的所有文件(默认路径,若自定义了存储路径请替换):
rm -rf /var/lib/aerospike/smd/* - 若使用SSD存储引擎,同时清理对应命名空间的数据文件(新集群无数据可直接删除,有数据请先备份):
# 示例:删除test命名空间的SSD数据文件 rm -rf /grid/1/aerospike/test.dat
2. 确认单节点配置
编辑Aerospike配置文件(默认路径/etc/aerospike/aerospike.conf):
- 检查
service块,确保cluster-name为唯一值(避免与旧集群重名); - 配置
heartbeat为单节点模式:network { service { address any port 3000 } heartbeat { mode solo port 3002 interval 150 timeout 10 } }注:
mode solo会强制节点以单节点运行,不参与任何集群发现。
3. 重启服务并验证
- 启动Aerospike服务:
service aerospike start - 查看日志,确认
SUCCESSION条目仅包含当前节点ID,且无DISALLOW MIGRATIONS的异常提示; - 用
aql测试插入操作:
若返回INSERT INTO test.demo (PK, name) VALUES ('1', 'test_data');OK, 1 record affected.则问题解决。
内容的提问来源于stack exchange,提问作者Deepti
相关产品推荐
相关产品推荐

