AWS ECS部署MongoDB副本集时报主节点mongodb-primary.ecs.endpoint不可用如何解决
报错信息
Node mongodb-primary.ecs.endpoint did not become available
排查步骤
- 安全组配置校验:确认主节点服务的安全组入站规则开放了27017端口的TCP访问权限,且允许从节点、仲裁节点所在任务的IP段或关联安全组访问。你可以登录到从节点任务的shell中,执行
telnet mongodb-primary.ecs.endpoint 27017验证端口连通性,如果无法连通即为安全组配置问题。 - 副本集参数校验:检查三个节点的环境变量配置,所有节点必须配置完全一致的
MONGODB_REPLICA_SET_KEY和MONGODB_REPLICA_SET_NAME参数;主节点必须配置MONGODB_REPLICA_SET_MODE=primary,从节点和仲裁节点必须正确填写MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary.ecs.endpoint,且分别配置对应的模式参数MONGODB_REPLICA_SET_MODE=secondary和MONGODB_REPLICA_SET_MODE=arbiter。 - DNS解析校验:在从节点/仲裁节点的任务shell中执行
nslookup mongodb-primary.ecs.endpoint,确认该端点可以正确解析到主节点任务的私有IP,如果解析失败则为ECS服务发现配置问题。 - 主节点状态校验:登录主节点的MongoDB shell,执行
rs.status()命令,确认主节点副本集已完成初始化,自身状态为PRIMARY,没有未处理的初始化报错。 - 超时参数校验:Bitnami镜像默认的初始化重试超时时间较短,如果主节点初始化速度慢,会导致从节点、仲裁节点等待超时,可以检查是否配置了足够长的
MONGODB_INITIALIZATION_RETRY_TIMEOUT参数。
修复方案
- 修正安全组规则:为主节点服务关联的安全组添加入站规则,允许从节点、仲裁节点关联的安全组访问27017端口,协议选择TCP。
- 统一副本集参数:修正三个节点的环境变量,确保副本集密钥、名称完全一致,从节点和仲裁节点的主节点地址参数填写正确。
- 调整初始化超时时间:给从节点和仲裁节点的任务添加环境变量
MONGODB_INITIALIZATION_RETRY_TIMEOUT=300,将超时时间调整为5分钟,避免初始化阶段因等待时间不足报错。 - 修复DNS解析问题:如果是服务发现端点解析失败,可以检查ECS服务发现的命名空间配置,确保三个节点都在同一个命名空间下,也可以临时将主节点的私有IP填入
MONGODB_INITIAL_PRIMARY_HOST参数验证功能正常。
内容的提问来源于stack exchange,提问作者Abdullah Khawer
相关产品推荐
相关产品推荐

