【问题标题】:command terminated with non-zero exit code: Error executing in Docker Container: 137 (Mongo Manager)命令以非零退出代码终止:在 Docker 容器中执行错误:137(Mongo 管理器)
【发布时间】:2019-09-15 00:53:22
【问题描述】:

根据本指南:

https://docs.opsmanager.mongodb.com/current/tutorial/install-simple-test-deployment/

我正在尝试在 OpenShift 中运行 MongoDB 和 MongoDB Ops Manager。我已经成功dockerize MongoDB 和 MongoDB Ops Manager 并且 MongoDB 正在成功运行,监听端口 27017 和所有接口:

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

我还设法让 MongoDB Ops Manager 初始化,这意味着以下步骤成功完成(包括连接到我的 mongodb 实例):

Generating new Ops Manager private key...
Starting pre-flight checks
Successfully finished pre-flight checks

Migrate Ops Manager data
   Running migrations...[  OK  ]
Start Ops Manager server
   Instance 0 starting..................[  OK  ]
tput: No value for $TERM and no -T specified
Starting pre-flight checks
Successfully finished pre-flight checks

Start Backup Daemon...[  OK  ]

但是它突然失败了:

tail -f /opt/mongodb/mms/logs/mms0.log
...
2019-04-25T14:30:42.616+0000 [main] INFO  com.xgen.svc.mms.svc.ping.PingRequest$Observable [Observable.java.addObserver:19] - Registering observer: class com.xgen.svc.mms.svc.ping.TotalStorageCacheSvc
2019-04-25T14:30:42.618+0000 [main] INFO  com.xgen.svc.mms.svc.ping.PingRequest$Observable [Observable.java.addObserver:19] - Registering observer: class com.xgen.svc.mms.svc.ping.NDSAutoScalingIngestionSvc
2019-04-25T14:31:00.536+0000 [main] INFO  com.xgen.svc.core.ServerMain [ServerMain.java.setUpProxyServer:620] - Started queryable backup proxy server on port 25999
2019-04-25T14:31:00.537+0000 [ProxyServer-25999] INFO  backup.jobs.queryable.ProxyServer.25999 [ProxyServer.java.run:96] - Waiting for Proxy Server PEM File to be specified in the configuration
2019-04-25T14:31:00.559+0000 [main] INFO  com.xgen.svc.core.ServerMain [ServerMain.java.start:537] - Started mms at build ed64653d5f@on-prem-4.0 in: 51476 (ms)
command terminated with non-zero exit code: Error executing in Docker Container: 137

在启用 DEBUG 级别的情况下进行额外的日志记录:

2019-04-27T13:46:35.035+0000 [job-consumer-214366356] DEBUG org.mongodb.driver.protocol.command [SLF4JLogger.java.debug:56] - Sending command {findandmodify : BsonString{value='data.jobsProcessor'}} to database mmsdbjobs on connection [connectionId{localValue:13, serverValue:31}] to server mongo-db:27017
2019-04-27T13:46:35.036+0000 [job-consumer-214366356] DEBUG org.mongodb.driver.protocol.command [SLF4JLogger.java.debug:56] - Command execution completed
2019-04-27T13:46:35.476+0000 [mms_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory [SimpleJobFactory.java.newJob:51] - Producing instance of Job 'DEFAULT.dbRollupSchedulerJob', class=com.xgen.svc.core.svc.cron.SimpleJob
2019-04-27T13:46:35.477+0000 [mms_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread [QuartzSchedulerThread.java.run:291] - batch acquisition of 1 triggers
2019-04-27T13:46:35.477+0000 [mms_Worker-31] DEBUG org.quartz.core.JobRunShell [JobRunShell.java.run:201] - Calling execute on job DEFAULT.dbRollupSchedulerJob
2019-04-27T13:46:35.478+0000 [mms_Worker-31] DEBUG org.mongodb.driver.protocol.command [SLF4JLogger.java.debug:56] - Sending command {count : BsonString{value='config.customers'}} todatabase mmsdbconfig on connection [connectionId{localValue:13, serverValue:31}] to server mongo-db:27017
2019-04-27T13:46:35.480+0000 [mms_Worker-31] DEBUG org.mongodb.driver.protocol.command [SLF4JLogger.java.debug:56] - Command execution completed
2019-04-27T13:46:35.481+0000 [mms_Worker-31] DEBUG com.xgen.svc.core.svc.cron.CronJob [CronJob.java.canProceed:47] - Not proceeding with CronJob dbRollupScheduler. No Projects.
command terminated with non-zero exit code: Error executing in Docker Container: 137

但对于导致 docker 容器终止的原因并没有太大帮助。

任何想法可能导致这种情况?

请注意,在我的本地 ubuntu 机器(具有 8 GB RAM 的机器)上使用普通 docker 时它可以正常工作。

编辑:

根据以下建议,我还尝试在 Mongo Manager 的部署配置中设置以下资源:

  kind: DeploymentConfig
  metadata:
    name: ${NAME}
  spec:
    replicas: 1
    selector:
      app: ${NAME}
    strategy:
      type: Recreate  
          ...
        containers:
        - name: ${NAME}
          image: ${IMAGE}
          ports:
           - containerPort: 8080
          resources:
            limits:
              cpu: 8
              memory: 15Gi
            requests:
              cpu: 8
              memory: 15Gi

但结果还是一样。

还有 Dockerfile

FROM centos:latest
RUN yum update -y && \
    yum install -y openssl iproute nano net-tools    

COPY run.sh /
RUN chmod 750 /run.sh

ENTRYPOINT ["/run.sh"]

run.sh 是:

#!/bin/bash
export TERM="xterm"

curl -k https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.0.10.50461.20190403T1841Z-1.x86_64.rpm -o tmp/mongodb-mms-4.0.10.50461.20190403T1841Z-1.x86_64.rpm

cd /tmp \
    && rpm -ivh mongodb-mms-4.0.10.50461.20190403T1841Z-1.x86_64.rpm \
    && rm mongodb-mms-4.0.10.50461.20190403T1841Z-1.x86_64.rpm

cp /opt/configmap/conf-mms/conf-mms.properties /opt/mongodb/mms/conf/
cp /opt/configmap/mms/mms.conf /opt/mongodb/mms/conf/
cp /opt/configmap/logback/logback.xml /opt/mongodb/mms/conf/
chown -R mongodb-mms:mongodb-mms /opt/mongodb/mms/
/bin/bash /opt/mongodb/mms/bin/mongodb-mms start

/opt/configmap 中的文件是从 configmap 挂载的。

【问题讨论】:

  • 我大约 99% 确定 137 是“内存不足”错误。尝试增加 pod 内存限制。
  • 我也尝试过增加,但结果相同,请参阅更新后的帖子。
  • 嗯,除了 OOM,它还可以表示 SIGKILL,因此 OpenShift 可能会杀死它。该项目的事件日志中有任何内容吗? Ops Manager 是一个长期运行的进程吗?
  • 事件日志中没有其他内容,与我的其他应用程序相比,启动(本地)需要一些时间,但没有什么不寻常的。我试图反编译 com.xgen.svc.core.ServerMain 但正是该类无法反编译,所以我在这里一无所知。
  • 愿意分享您的 Dockerfile 吗?

标签: mongodb docker openshift


【解决方案1】:

我认为您最好先关注文档到Install MongoDB Enterprise Kubernetes Operator,然后再关注Install MongoDB via Kubernetes

这是在 OpenShift 中安装的更现代和首选的方法。这应该可以解决您问题中概述的大部分复杂性。

【讨论】:

  • Ops Manager 并不是真正为容器化而设计的。您将为整个组织的 MongoDB 部署安装一个 OM,所以我觉得它可能应该在 OpenShift 之外,并且只有节点本身在 pod 内
  • 我最初的问题是关于如何在 OpenShift 中安装/容器化 Mongo Ops Manager,而不是如何安装 kubernets Operator 并利用它假设一个功能齐全的 Ops Manager。所以你上面的评论应该是我相信的答案。
【解决方案2】:

由于没有关于如何在 OpenShift 中成功 dockerize 和部署 Mongo Ops Manager 的建议/答案,所以目前为止,plain 非容器安装似乎是唯一的解决方案,例如:

https://docs.opsmanager.mongodb.com/current/tutorial/install-simple-test-deployment/

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 2020-04-07
    • 2018-07-21
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 2015-04-30
    • 2021-04-13
    相关资源
    最近更新 更多