ocp在接管的集群创建租户报错

【 使用环境 】 测试环境
【 OB or 其他组件 】
【 使用版本 】4.2.2.0
【问题描述】


com.oceanbase.ocp.core.exception.UnexpectedException: [OCP UnexpectedException]: status=500 INTERNAL_SERVER_ERROR, errorCode=AGENT_TASK_FAILED, args=39eb358e-1b30-4615-9443-1831d1ca62e1,OcpAgentError: code = 1500, message = Execute shell command failed: failed to execute command: Command{user=root, program=sh, outputType=combined, cmd=export PYTHONPATH=/home/admin/ocp_agent/site-packages:$PYTHONPATH && python /disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py -h192.168.0.139 -P2991 -p=xxx -t mhsb_root -f /disk_d/oceanbase/ob/mhsb_t1/home/etc/default_srs_data_mysql.sql, timeout=20m0s}, exitCode: 127, output: sh: line 1: python: command not found

24

, error: exit status 127

25

at com.oceanbase.ocp.core.i18n.ErrorCodes$Kind$10.exception(ErrorCodes.java:1570)

26

at com.oceanbase.ocp.core.i18n.ErrorCodes.exception(ErrorCodes.java:1425)

27

at com.oceanbase.ocp.core.util.ExceptionUtils.newException(ExceptionUtils.java:169)

28

at com.oceanbase.ocp.core.util.ExceptionUtils.throwException(ExceptionUtils.java:162)

29

at com.oceanbase.ocp.service.task.util.AgentAsyncTaskHelper.checkSuccess(AgentAsyncTaskHelper.java:229)

30

at com.oceanbase.ocp.service.task.util.AgentAsyncTaskHelper.waitForExecuteFinish(AgentAsyncTaskHelper.java:175)

31

at com.oceanbase.ocp.service.task.util.AgentAsyncTaskHelper.importSrsInfo(AgentAsyncTaskHelpe

32

r.java:148)

33

at com.oceanbase.ocp.obops.internal.cluster.ClusterHostOperationServiceImpl.importSrsInfo(ClusterHostOperationServiceImpl.java:482)

34

at com.oceanbase.ocp.obops.internal.tenant.TenantOperationServiceImpl.importSrsInfo(TenantOperationServiceImpl.java:724)

35

at com.oceanbase.ocp.obops.internal.tenant.TenantOperationServiceImpl$$FastClassBySpringCGLIB$$44eef4f8.invoke()

36

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

37

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)

38

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

39

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)

40

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)

41

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

42

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)

43

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)

44

at com.oceanbase.ocp.obops.internal.tenant.TenantOperationServiceImpl$$EnhancerBySpringCGLIB$$ea5a5f9c.importSrsInfo()

45

at com.oceanbase.ocp.obops.internal.tenant.task.ImportTenantSrsInfoTask.run(ImportTenantSrsInfoTask.java:42)

46

at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.execute(JavaSubtaskRunner.java:64)

47

at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.doRun(JavaSubtaskRunner.java:32)

48

at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.run(JavaSubtaskRunner.java:26)

49

at com.oceanbase.ocp.core.task.engine.runner.RunnerFactory.doRun(RunnerFactory.java:76)

50

at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.doRun(SubtaskExecutor.java:203)

51

at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskE

52

xecutor.redirectConsoleOutput(SubtaskExecutor.java:197)

53

at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.lambda$submit$2(SubtaskExecutor.java:134)

54

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

55

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

56

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

57

at java.lang.Thread.run(Thread.java:748)

58

59

60

Set state for subtask: 2000240, operation:EXECUTE, state: FAILED

61
subtask_2000240.log (9.0 KB)

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

根据您提供的错误信息和日志内容,OCP 在接管的集群中创建租户时出现报错。以下是问题分析及解决建议:

问题分析

从日志中可以看出,错误的核心信息为:

sh: line 1: python: command not found
exitCode: 127

这表明在执行命令时,系统未能找到 python 命令。具体命令如下:

export PYTHONPATH=/home/admin/ocp_agent/site-packages:$PYTHONPATH && python /disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py -h192.168.0.139 -P2991 -p=xxx -t mhsb_root -f /disk_d/oceanbase/ob/mhsb_t1/home/etc/default_srs_data_mysql.sql

由此可以推测,问题可能出在以下几点:

  1. Python 环境未正确安装或配置:目标服务器上未安装 Python 或者 PATH 环境变量中未包含 Python 的路径。
  2. 脚本依赖问题import_srs_data.py 脚本可能依赖某些特定版本的 Python 或库,而当前环境不满足这些依赖。

解决方案

1. 检查 Python 环境是否正确安装

登录到目标服务器(IP 地址为 192.168.0.139),检查 Python 是否已安装并可用:

python --version

如果返回类似 Python 2.xPython 3.x,说明 Python 已安装;否则需要安装 Python。

对于 CentOS/RHEL 系统,可以通过以下命令安装 Python:

yum install -y python

对于 Ubuntu/Debian 系统,可以通过以下命令安装 Python:

apt update && apt install -y python

2. 验证 PATH 环境变量

确保 Python 的可执行文件路径已添加到系统的 PATH 环境变量中。可以通过以下命令验证:

echo $PATH

如果未包含 Python 的安装路径(例如 /usr/bin/usr/local/bin),可以通过以下方式临时添加:

export PATH=$PATH:/usr/bin

或者将其永久添加到 .bashrc 文件中:

echo 'export PATH=$PATH:/usr/bin' >> ~/.bashrc
source ~/.bashrc

3. 检查 import_srs_data.py 脚本依赖

确保 import_srs_data.py 脚本所需的 Python 库已正确安装。可以通过以下命令检查脚本运行情况:

python /disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py -h192.168.0.139 -P2991 -p=xxx -t mhsb_root -f /disk_d/oceanbase/ob/mhsb_t1/home/etc/default_srs_data_mysql.sql

如果脚本报错,可能是缺少某些依赖库。可以通过以下命令安装缺失的库:

pip install <missing_library>

4. 验证 OCP-Agent 配置

OCP-Agent 在执行任务时会调用相关脚本。请确保 OCP-Agent 的配置文件中正确指定了 Python 的路径。可以通过以下命令检查 OCP-Agent 的配置:

cat /home/admin/ocp_agent/config.yaml

确认其中的 PYTHONPATH 配置是否正确。

5. 重新尝试创建租户

完成上述步骤后,重新尝试在 OCP 中创建租户。如果问题仍然存在,请参考以下文档中的预检查接口进一步排查:


总结

根据文档库中的信息,问题的根本原因在于目标服务器上未正确安装或配置 Python 环境。按照上述步骤逐一排查并修复后,应能成功创建租户。如果仍有问题,请提供更详细的日志信息以便进一步分析。

检索到的文档如下:

  1. 租户参数模板管理
  2. OCP V3.3.0
  3. OceanBase 集群常见问题
  4. 创建租户
  5. OceanBase 租户常见问题
  6. 跨 OCP 集群创建主备租户
  7. OCP V3.3.5
  8. 创建服务
  9. ocp_collect_metric_failure_rate_high OCP-Server 采集监控失败率过高
  10. 管理 Unit 规格
1 个赞

报错提示是没有python命令,可以安装下py再试试。

3 个赞

如楼上老师所说,安装下python2.7试下

2025-03-26 16:58:42.420 ERROR 2379057 --- [pool-manual-subtask-executor16,00a38908b5b248da,3e1bd1beb8a0] c.o.o.s.task.util.AgentAsyncTaskHelper   : failed to execute async task, task token: 39eb358e-1b30-4615-9443-1831d1ca62e1, err: OcpAgentError: code = 1500, message = Execute shell command failed: failed to execute command: Command{user=root, program=sh, outputType=combined, cmd=export PYTHONPATH=/home/admin/ocp_agent/site-packages:$PYTHONPATH && python /disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py -h192.168.0.139 -P2991 -p=xxx -t mhsb_root -f /disk_d/oceanbase/ob/mhsb_t1/home/etc/default_srs_data_mysql.sql, timeout=20m0s}, exitCode: 127, output: sh: line 1: python: command not found
, error: exit status 127
4 个赞

image
安装了Python
但是还是报错

2 个赞

这是python3,不是python2

3 个赞

根据您提供的最新信息和图片内容,问题仍然与 python: command not found 相关。尽管您已经安装了 Python,但问题可能出在以下几个方面:


问题分析

  1. Python 路径未正确配置

    • 即使 Python 已安装,但如果其路径未添加到系统的 PATH 环境变量中,系统仍然无法找到 python 命令。
  2. 脚本调用的 Python 版本不匹配

    • OCP-Agent 可能依赖特定版本的 Python(如 Python 3.x),而当前环境中默认的 python 指向的是 Python 2.x 或其他版本。
  3. OCP-Agent 配置中的 PYTHONPATH 错误

    • OCP-Agent 的配置文件中可能指定了错误的 PYTHONPATH,导致脚本无法正确加载所需的库。
  4. 权限问题

    • 如果脚本运行时使用的是 root 用户,可能存在权限不足或环境变量未正确加载的问题。

解决方案

1. 确认 Python 安装路径

登录目标服务器(IP 地址为 192.168.0.139),检查 Python 的安装路径:

which python

如果返回为空,说明 python 命令未正确配置到 PATH 中。可以通过以下命令手动指定 Python 路径:

export PATH=$PATH:/usr/bin/python

2. 检查默认 Python 版本

确认当前默认的 Python 版本是否符合 OCP-Agent 的要求:

python --version

如果默认版本为 Python 2.x,而 OCP-Agent 需要 Python 3.x,请确保系统中已安装 Python 3,并将其设置为默认版本:

update-alternatives --install /usr/bin/python python /usr/bin/python3 1
update-alternatives --config python

3. 验证 OCP-Agent 的 PYTHONPATH 配置

检查 OCP-Agent 的配置文件,确保 PYTHONPATH 指向正确的路径:

cat /home/admin/ocp_agent/config.yaml

确认其中的 PYTHONPATH 是否包含 /home/admin/ocp_agent/site-packages。如果没有,请手动添加:

PYTHONPATH: /home/admin/ocp_agent/site-packages:$PYTHONPATH

4. 手动测试脚本运行

尝试手动运行 import_srs_data.py 脚本,验证其是否正常工作:

python /disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py -h192.168.0.139 -P2991 -p=xxx -t mhsb_root -f /disk_d/oceanbase/ob/mhsb_t1/home/etc/default_srs_data_mysql.sql

如果脚本报错,可能是缺少某些依赖库。可以通过以下命令安装缺失的库:

pip install <missing_library>

5. 检查 Shell 环境变量

确保脚本运行时的 Shell 环境变量已正确加载。可以通过以下命令验证:

source ~/.bashrc

6. 重新启动 OCP-Agent

完成上述步骤后,重启 OCP-Agent 以应用更改:

systemctl restart ocp-agent

总结

根据文档库中的信息,问题的根本原因可能在于 Python 环境配置不正确或 OCP-Agent 的配置文件中 PYTHONPATH 设置错误。按照上述步骤逐一排查并修复后,应能解决 python: command not found 的问题。如果仍有问题,请提供更详细的日志信息以便进一步分析。

如果您需要进一步帮助,请随时联系 OceanBase 的人工答疑团队。

详情请参考:

  1. OceanBase 集群常见问题
  2. mysqlclient 连接 OceanBase 数据库示例程序
  3. PyMySQL 连接 OceanBase 数据库示例程序
  4. 创建 Python 示例应用程序
  5. 体验 Operational OLAP
  6. ob_error
  7. 0001 ~ 3999
  8. 系统要求

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

2 个赞

2025-03-26 17:45:52.856 ERROR 2379057 — [pool-manual-subtask-executor16,00a38908b5b248da,5d3a151e2b39] c.o.o.s.task.util.AgentAsyncTaskHelper : failed to execute async task, task token: 047f7aee-0422-47f5-b4b1-4c2446b35fca, err: OcpAgentError: code = 1500, message = Execute shell command failed: failed to execute command: Command{user=root, program=sh, outputType=combined, cmd=export PYTHONPATH=/home/admin/ocp_agent/site-packages:$PYTHONPATH && python /disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py -h192.168.0.139 -P2991 -p=xxx -t mhsb_root -f /disk_d/oceanbase/ob/mhsb_t1/home/etc/default_srs_data_mysql.sql, timeout=20m0s}, exitCode: 1, output: Traceback (most recent call last):

28

File “/disk_d/oceanbase/ob/mhsb_t1/home/bin/import_srs_data.py”, line 6, in

29

import mysql.connector

30

File “/home/admin/ocp_agent/site-packages/mysql/connector/init.py”, line 52, in

31

from .connection import MySQLConnection

32

File “/home/admin/ocp_agent/site-packages/mysql/connector/connection.py”, line 40, in

33

from .constants import (

34

File “/home/admin/ocp_agent/site-packages/mysql/connector/constants.py”, line 32, in

35

import ssl

36

File “/usr/local/lib/python2.7/ssl.py”, line 98, in

37

import _ssl # if we can’t import it, let the error propagate

38

ImportError: No module named _ssl

39

, error: exit status 1

40安装了python2.7还是报错

1 个赞

麻烦发下OCP版本和 创建租户报错这个集群的OB版本

4 个赞

4.2.2.0,


已经安装了python2.7.13但是还是报错

1 个赞

学习

1 个赞

墩墩墩。

确认下是否这个版本 4.2.2.0-100010012024022719,这个版本是下掉的版本,不维护了,OCP没做适配,不建议使用,建议使用最新LTS版本

show variables like '%version_comment%';

目前已经走到这一步了,我这边要根据系统的版本来选择,ocp提交任务创建租户那可能是不行了,我手动用命令试试吧

这个版本是有严重缺陷的,是官网下掉的版本,不建议使用的

字面意思上是找不到命令

建议使用那个版本呢

OLTP类型建议使用4.2.5(LTS版本),最新是4.2.5.2hf1
OLAP类型建议使用4.3.5(LTS版本),最新是4.3.5.1

2 个赞


OLTP类型建议使用4.2.5(LTS版本)就是这个嘛

是的