bitnami/mongodb-sharded在AWS EKS扩展shard失败解决

本文介绍了在AWS EKS上使用bitnami/mongodb-sharded扩展shard遇到的问题及解决过程。问题出现在新增shard pod始终重启,原因包括缺失mongodbRootPassword参数和shard版本不一致。解决方案是升级时提供mongodbRootPassword参数并确保image.tag与现有shard版本匹配。
摘要由CSDN通过智能技术生成

项目场景:

mongodb sharded集群存储一批runtime log. 随着数据量增多,需要增加shard以扩容集群容量。后续文中截图涉及多次验证,因此replicaSetKey不同还请读者体谅。


问题描述

新增shard对应的pod始终在restart。


原因分析:

与Running POD的日志差异

问题POD停在了"Found MongoDB server listening at xxx:27017"请添加图片描述

正常POD日志请添加图片描述

经过对比发现,存量shard POD是"Deploying MongoDB Sharded from scratch", 新增加的shard POD是"Deploying MongoDB Sharded with persisted data".


“Found MongoDB Server …”

先说结论:

helm upgrage时缺少参数 mongodbRootPassword,添加之后就可以进入下一步了

存量数据从何而来

  1. 通过kubectl exec 登录目标pod查看,db文件夹确实有内容;
  2. 后来在测试环境验证发现第一次启动时会初始化数据库;
  3. 由于查看日志时POD已重启,mongodb-sharded中shard子chart是通过statefulset部署,因此重用了PVC;这就是存量数据的由来;

缘何block在"Found MongoDB server xx"

我们知道chart背后是一个docker image,启动过程是由配置参数和启动脚本共同影响的。因此需要排查启动脚本。

获得docker image

docker pull bitnami/mongodb-sharded

查看docker file

docker inspect bitnami/mongodb-sharded

/bin/sh -c #(nop) CMD ["/opt/bitnami/scripts/mongodb-sharded/run.sh"]
/bin/sh -c #(nop) ENTRYPOINT ["/opt/bitnami/scripts/mongodb-sharded/entrypoint.sh"]

于是从entrypoint.sh开始, 最终找到了关键的.sh文件

mongodb_sharded_mongod_initialize

在/opt/bitnami/scripts/libmongodb-sharded.sh

###############
# Initialize MongoDB (mongod) service with sharded configuration
# Globals:
#   MONGODB_*
# Arguments:
#   None
# Returns:
#   None
#########################
mongodb_sharded_mongod_initialize() {
   
    info "Initializing MongoDB Sharded..."
    rm -f "$MONGODB_PID_FILE"

    mongodb_copy_mounted_config
    mongodb_set_net_conf
    mongodb_set_log_conf
    mongodb_set_storage_conf
    mongodb_sharded_set_sharding_conf "$MONGODB_CONF_FILE"

    if is_dir_empty "$MONGODB_DATA_DIR/db"; then
        info "Deploying MongoDB Sharded from scratch..."

        ensure_dir_exists "$MONGODB_DATA_DIR/db"
        am_i_root && chown -R "$MONGODB_DAEMON_USER" "$MONGODB_DATA_DIR/db"

        mongodb_set_replicasetmode_conf

        if [[ "$MONGODB_SHARDING_MODE" =~ ^(configsvr|shardsvr)$ ]] && [[ "$MONGODB_REPLICA_SET_MODE" = "primary" ]]; then
            mongodb_sharded_initiate_svr_primary
        fi

        mongodb_start_bg
        mongodb_create_users
        mongodb_create_keyfile "$MONGODB_REPLICA_SET_KEY"
        mongodb_set_keyfile_conf
        mongodb_set_auth_conf
        mongodb_set_listen_all_conf
        mongodb_sharded_configure_replica_set
        mongodb_stop
    else
        mongodb_create_keyfile "$MONGODB_REPLICA_SET_KEY"
        mongodb_set_keyfile_conf
        mongodb_set_auth_conf
        info "Deploying MongoDB Sharded with persisted data..."
        if [[ "$MONGODB_REPLICA_SET_MODE" = "dynamic" ]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值