OB官方打包OpenSearch的Docker镜像启动不了

宿主机 Centos7.9
Docker版本 Docker version 26.1.4, build 5650f9b
Docker镜像 oceanbase/opensearch:3.3.2
https://hub.docker.com/r/oceanbase/opensearch/tags

参考官方文档 https://www.oceanbase.com/docs/common-ocp-1000000002380836

生成了证书

启动容器失败

容器日志如下

[root@localhost data]# docker logs ocp-opensearch --tail 20
.....................+++++
..........+++++
e is 65537 (0x010001)
Signature ok
subject=C = CA, ST = ONTARIO, L = TORONTO, O = ORG, OU = UNIT, CN = node-10.8.1.112
Getting CA Private Key
2025-05-04 15:48:37,770 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2025-05-04 15:48:37,770 INFO Included extra file "/etc/supervisor/conf.d/opensearch.conf" during parsing
2025-05-04 15:48:37,774 INFO RPC interface 'supervisor' initialized
2025-05-04 15:48:37,774 INFO supervisord started with pid 80
2025-05-04 15:48:38,777 INFO spawned: 'elasticsearch_exporter_00' with pid 83
2025-05-04 15:48:38,779 INFO spawned: 'securityadmin_00' with pid 84
2025-05-04 15:48:38,781 INFO spawned: 'cerebro_00' with pid 85
2025-05-04 15:48:38,783 INFO spawned: 'opensearch_00' with pid 86
2025-05-04 15:48:38,803 INFO exited: opensearch_00 (exit status 127; not expected)
2025-05-04 15:48:39,805 INFO success: elasticsearch_exporter_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-05-04 15:48:39,805 INFO success: securityadmin_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-05-04 15:48:39,805 INFO success: cerebro_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-05-04 15:48:39,807 INFO spawned: 'opensearch_00' with pid 196
2025-05-04 15:48:39,826 INFO exited: opensearch_00 (exit status 127; not expected)

1 个赞

但从信息中看不出啥问题来啊

@论坛小助手

根据您提供的信息和日志内容,OpenSearch 容器启动失败的原因可能是以下几点之一或多个问题的组合:

1. 环境变量配置错误

从日志中可以看到 opensearch_00 进程退出状态为 127,这通常表示命令未找到或环境配置不正确。请检查以下环境变量是否正确设置:

  • OPENSEARCH_USERNAMEOPENSEARCH_PASSWORD 是否已正确填写。
  • OPENSEARCH_NODE_URLS 是否包含正确的节点地址列表(例如:10.8.1.1:9200,10.8.1.2:9200)。
  • HOST_IP 是否正确设置了宿主机 IP 地址。

解决方法:
确保所有必填环境变量都已正确设置。例如:

docker run -d --net host \
-v /data/root-ca-key.pem:/opt/opensearch/config/root-ca-key.pem \
-v /data/root-ca.pem:/opt/opensearch/config/root-ca.pem \
--env OPENSEARCH_USERNAME=utoer \
--env OPENSEARCH_PASSWORD=utoer \
--env OPENSEARCH_NODE_URLS="10.8.1.112:9200" \
--env HOST_IP=10.8.1.112 \
--env OPENSEARCH_JVM_HEAP=4g \
--name ocp-opensearch oceanbase/opensearch:3.3.2

2. 证书路径挂载问题

从日志中可以看出,根证书已经生成并挂载到容器内,但可能存在路径或权限问题。请确认以下几点:

  • 确保 ${pem-path} 路径下的 root-ca-key.pemroot-ca.pem 文件存在。
  • 检查宿主机上的文件权限是否正确。容器内的 admin 用户需要对挂载目录有读写权限。

解决方法:
如果挂载失败,可以尝试进入容器后手动调整权限:

docker exec -it ocp-opensearch bash
chown admin:admin /opt/opensearch/config/root-ca-key.pem
chown admin:admin /opt/opensearch/config/root-ca.pem

然后重启容器。


3. JVM 堆内存设置不合理

日志中提到 OPENSEARCH_JVM_HEAP=4g,但实际节点内存可能不足或分配不合理。建议将 JVM 堆内存设置为节点内存的一半(最大不超过 32GB)。

解决方法:
根据宿主机的实际内存大小调整 OPENSEARCH_JVM_HEAP 的值。例如,如果宿主机有 16GB 内存,则设置为 8g

--env OPENSEARCH_JVM_HEAP=8g

4. Docker 版本兼容性问题

您使用的 Docker 版本为 26.1.4,而 OpenSearch 镜像可能与较新的 Docker 版本存在兼容性问题。建议尝试降级 Docker 版本至稳定版本(如 20.10.x)。

解决方法:
卸载当前 Docker 版本并安装稳定版本:

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io
sudo systemctl start docker

5. OpenSearch 日志分析

根据官方文档,日志存储在 /home/admin/logs 目录下。您可以进入容器查看详细日志以进一步排查问题:

docker exec -it ocp-opensearch bash
cd /home/admin/logs
cat opensearch.log

综合建议

  1. 检查并修正环境变量配置。
  2. 确认证书路径和权限设置正确。
  3. 根据宿主机内存调整 JVM 堆内存大小。
  4. 如果问题仍未解决,尝试降级 Docker 版本。
  5. 查看 OpenSearch 日志以获取更多错误信息。

如果以上方法仍无法解决问题,请提供更详细的日志内容或联系 OceanBase 技术支持团队以获取进一步帮助。

具体信息可参考以下文档:

  1. 4000 ~ 4499
  2. 部署 OceanBase 数据库容器环境
  3. 4500 ~ 4999
  4. 9000 ~ 9499
  5. 7000 ~ 7999
  6. 0001 ~ 3999