ocp接管集群任务失败

【 使用环境 】测试环境
【 OB or 其他组件 】ocp
【 使用版本 】
【问题描述】我使用白屏部署ocp成功之后,进入ocp页面,发现有任务中心报错
【附件及日志】


subtask_53.log (1.3 KB)
subtask_36.log (21.2 KB)
subtask_8.log (23.3 KB)

同时还有个小问题就是添加主机这里全是灰色的,我是不是需要点击重启ocp

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

2 个赞

根据您提供的信息和日志,OCP 接管集群任务失败的问题可能与以下几个方面有关。以下是详细的分析和解决建议:


1. OCP Agent 未正确安装或启动

从日志中可以看到以下关键信息:

WARN 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,e5a60d061442fa0b] c.o.o.c.agent.HostAgentServiceImpl       : OCP agent not found: hostId=1

这表明在目标主机上未能找到 OCP Agent,可能是由于以下原因:

  • OCP Agent RPM 包未正确安装:日志中提到 rpm2cpio: 未找到命令,说明目标主机缺少必要的工具(如 rpm2cpiocpio)。
  • OCP Agent 服务未启动:即使 RPM 包已安装,但服务未正常启动。

解决方法

  1. 确保目标主机已安装 rpm2cpiocpio 工具:
    yum install -y rpm-build cpio
    
  2. 手动重新安装 OCP Agent RPM 包:
    rpm -ivh ocp-agent-ce-4.3.5-20250303105901.el7.x86_64.rpm
    
  3. 检查 OCP Agent 服务状态并启动服务:
    systemctl status ocp-agent
    systemctl start ocp-agent
    

2. SSH 连接问题

日志中多次出现 SSH 命令执行的记录,例如:

SSH executeCommand begin: echo 1 on 172.16.120.10
SSH executeCommand end: echo 1 on 172.16.120.10, result: SshResult(host=172.16.120.10, username=dell, command=echo 1, out=1, err=, extOut=null, exitStatus=0)

虽然部分命令成功执行,但如果存在 SSH 密钥配置错误或权限问题,可能导致后续任务失败。

解决方法

  1. 确保 OCP 能通过 SSH 正常访问目标主机:
    • 使用相同的用户(如 dell)测试 SSH 连接:
      ssh dell@172.16.120.10
      
    • 如果需要密码登录,请检查是否已配置免密登录。
  2. 验证 SSH 密钥是否正确:
    • 确保 OCP 使用的私钥文件与目标主机上的公钥匹配。
    • 检查目标主机的 ~/.ssh/authorized_keys 文件是否包含正确的公钥。

3. OBServer 节点预检查失败

根据文档片段 1 的描述,接管集群时可能会遇到 error code:11042 错误,提示 OBServer 节点检查不通过。您可以使用以下接口查看具体原因:

curl -X POST --user admin:xxx \
-H "Content-Type:application/json" \
-d '{"rootSysPassword":"xxxxx",                   #必填,root@sys密码。
"address":"xxxxx",                                 #必填,集群连接地址。
"port":2888,                                           #必填,集群连接端口。
"connectionMode": "proxy"                  #选填,连接模式,可选值 direct | proxy,缺省为direct。
"clusterName": "xxx",                            #选填,当连接模式为 proxy 时必填。
"obClusterId": xxx                                 #选填,当连接模式为 proxy 且被接管集群为备集群时必填。
}' \
"http://example.com:8080/api/v2/ob/clusters/takeOverPreCheck"

解决方法

  1. 根据接口返回的具体错误信息进行排查。
  2. 如果是 OBServer 节点收到非预期的 cluster_id,请检查是否有其他 OceanBase 集群的 Server 错误连接到当前集群。

4. 添加主机页面灰色不可用

关于您提到的“添加主机页面全是灰色”的问题,可能的原因包括:

  • OCP 无法向目标机器发送远程命令:根据文档片段 4 的描述,如果 OCP 无法通过 SSH 或其他方式访问目标机器,则对应机器的运维功能不可用。
  • 主机未正确注册到 OCP:确保目标主机已正确添加到 OCP,并且 OCP Agent 已正常运行。

解决方法

  1. 检查目标主机是否已正确添加到 OCP:
    • 在 OCP 页面的“主机列表”中确认目标主机的状态。
  2. 如果主机状态异常,请重新添加主机:
    • 确保主机满足 OCP 的最低要求(如操作系统版本、网络连通性等)。
    • 手动触发主机添加任务。

总结

根据您的问题和日志分析,建议按照以下步骤逐步排查:

  1. 确保目标主机已正确安装并启动 OCP Agent。
  2. 检查 SSH 连接是否正常,验证密钥配置。
  3. 使用预检查接口定位 OBServer 节点的具体问题。
  4. 确认主机已正确添加到 OCP,并解决主机页面灰色不可用的问题。

如果以上方法仍无法解决问题,请提供以下信息以便进一步排查:

  • OCP 的具体版本号。
  • 完整的任务日志(包括失败任务的上下文信息)。
  • 目标主机的操作系统版本及网络配置。

希望以上解答对您有所帮助!

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

  1. OceanBase 集群常见问题
  2. 管理任务
  3. OCP V4.3.0
  4. host_unavailable 主机心跳检测失败
  5. 遇到问题如何向技术支持同学提问
  6. 上传软件包
  7. 8000 ~ 8999
  8. ob_cannot_connected OB 服务器无法连接
  9. OCP 多集群模式开关
  10. 升级 OceanBase 集群
1 个赞

见招拆招 安装一下那个cpio

3 个赞

明白您意思,我已经装上了,但是又卡在这里了,显示执行失败,


然后我在机器上手动执行了一下显示成功,是否我就可以直接跳过这个了呢?

1 个赞

我看后台这个进程没启动,这个是一个常驻的进程吗? 还是像我这样执行一下就可以了 跳过不会影响后序的操作呢? 求大神

1 个赞

根据您提供的信息和日志,问题的核心在于 OCP 在接管集群时尝试启动 ocp_agent 服务失败,而您在目标主机上手动执行了启动命令并成功启动了 ocp_agent。以下是针对您的问题的详细分析和解答:


1. 关于 ocp_agent 是否为常驻进程

ocp_agent 是 OceanBase Cloud Platform (OCP) 的一个关键组件,用于在目标主机上与 OCP 进行通信和任务执行。它确实是一个常驻进程,需要持续运行以确保 OCP 能够正常管理目标主机和集群。

从您提供的日志中可以看到:

{"successful": true, "message":"ok","error":""}

这表明您手动启动 ocp_agent 成功,并且进程已正常运行:

133365 1 12:01 ? 00:00:00 /home/admin/ocp_agent/bin/ocp_agentd -c /home/admin/ocp_agent/conf/agentd.yaml
133379 133365 12:01 ? 00:00:01 /home/admin/ocp_agent/bin/ocp_monagent

因此,ocp_agent 必须保持运行状态,否则后续任务可能会因无法与 OCP 通信而失败。


2. 手动启动后是否可以直接跳过该步骤

虽然您手动启动了 ocp_agent 并验证其运行正常,但直接跳过 OCP 的任务可能会导致以下问题:

  • 任务状态不一致:OCP 的任务中心会记录每个子任务的状态。如果某个任务未完成或被跳过,可能会导致后续任务依赖失败。
  • 自动化流程中断:OCP 的接管流程是高度自动化的,跳过某些步骤可能会影响整体流程的完整性。

建议操作

  1. 重新触发任务

    • 在 OCP 页面上找到失败的任务(如 Install ocp agent),点击“重试”按钮重新执行。
    • 如果任务仍然失败,请检查以下内容:
      • 确保 ocp_agent 已正确安装并配置。
      • 验证目标主机的网络连通性和 SSH 配置。
  2. 验证任务依赖

    • 确认 ocp_agent 的启动命令是否已被 OCP 正确识别。
    • 检查 OCP 日志,确认是否有其他依赖任务受到影响。

3. 可能的原因及解决方法

根据日志中的错误信息:

{"successful":false,"message":null,"error":"Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout;"}

这表明 OCP 在等待 ocp_agent 启动时超时。以下是可能的原因及解决方法:

原因 1:启动时间过长

ocp_agent 的启动时间可能超过了 OCP 的默认超时时间(通常为几分钟)。

解决方法

  • 增加 OCP 的超时时间配置(如果支持)。
  • 确保目标主机性能足够高,避免启动过程过慢。

原因 2:网络延迟或连接问题

OCP 和目标主机之间的网络延迟可能导致超时。

解决方法

  • 测试 OCP 和目标主机之间的网络延迟:
    ping <目标主机IP>
    
  • 如果延迟较高,请优化网络配置。

原因 3:权限问题

目标主机上的 ocp_agent 可能因权限不足而无法正常启动。

解决方法

  • 确保启动命令使用正确的用户(如 adminroot)。
  • 检查 ocp_agent 的配置文件路径和权限:
    ls -l /home/admin/ocp_agent/conf/agentd.yaml
    

4. 总结

  • ocp_agent 是一个常驻进程,必须保持运行状态。
  • 手动启动后不能直接跳过任务,建议重新触发任务以确保流程完整。
  • 如果问题仍然存在,请提供以下信息以便进一步排查:
    • OCP 的具体版本号。
    • 完整的任务日志(包括失败任务的上下文信息)。
    • 目标主机的操作系统版本及网络配置。

希望以上解答对您有所帮助!如果仍有疑问,请随时联系技术支持或提供更多细节。

检索到的文档如下:

  1. Top 通用工具
  2. Optimizer Hint

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

1 个赞

是的,ocp_agentd进程是必须启动的,你手动启动成功了,这里应该可以跳过,麻烦下载这个任务日志看下为什么会超时

1 个赞

哥,我这个不是启动ocp_agentd进程,我是显示ocp_agentctl进程启动不了,我手动启动也没有后台显示,日志见附件,有三次部署,前两次一些包没装好,我已经装好了,
subtask_8 (1).log (99.0 KB)
哥您看看12:00左右的一段的日志即可

1 个赞

麻烦
1.发下OCP版本

2.看你手动执行命令是成功的,手动执行成功耗时大概多久?

sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start'
1 个赞

ocp的版本是4.3.5
我直接输入这个它立马就返回成功,然后后台没有这个进程

ocp_agentctl启动后就有ocp_agentd进程,你手动是启动成功的,需要看下为什么自动启动失败了?

麻烦取下如下日志

/home/admin/ocp_agent/log下的
agentctl.log
mgragent.log
ocp_mgragent.error.log
agentd.err.log
agentd.log

1 个赞

log.zip (552.7 KB)
麻烦哥你看一下

1 个赞

哥 我看着后台启动了 然后跳过了那一步,但是下一步就显示我没有启动这个进程

subtask_8.log

2025-04-09 12:01:05.203  INFO 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,07caf8caa6b11133] com.oceanbase.ocp.common.ssh.SshUtils    : SSH executeCommand begin: sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start' on 172.16.120.9

2025-04-09 12:01:15.294  INFO 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,07caf8caa6b11133] com.oceanbase.ocp.common.ssh.SshUtils    : SSH executeCommand end: sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start' on 172.16.120.9, result: SshResult(host=172.16.120.9, username=dell, command=sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start', out=, err={"successful":false,"message":null,"error":"Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; "}, extOut=null, exitStatus=255)

2025-04-09 12:01:15.297  INFO 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,07caf8caa6b11133] c.o.o.e.internal.template.SshTemplate    : SSH execute end: sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start' on 172.16.120.9,result:SshResult(host=172.16.120.9, username=dell, command=sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start', out=, err={"successful":false,"message":null,"error":"Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; "}, extOut=null, exitStatus=255)

2025-04-09 12:01:15.300  INFO 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,07caf8caa6b11133] c.o.ocp.executor.executor.SshExecutor    : execute ssh command failed, command:sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start', return code:255, output:, err:{"successful":false,"message":null,"error":"Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; "}

2025-04-09 12:01:15.302 ERROR 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,07caf8caa6b11133] c.o.ocp.executor.executor.SshExecutor    : failed to execute ssh command, errMsg:[SshClient]: failed to execute ssh command: sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start', exit code: 255, cause:null

2025-04-09 12:01:15.305 ERROR 37937 --- [manual-subtask-executor14,b6fe713bf3fcc2eb,07caf8caa6b11133] c.o.o.c.t.e.c.w.subtask.SubtaskExecutor  : [SshClient]: failed to execute ssh command: sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start', exit code: 255

com.oceanbase.ocp.executor.exception.SshCommandFailedException: [SshClient]: failed to execute ssh command: sudo bash -c ''"'"'/home/admin/ocp_agent'"'"'/bin/ocp_agentctl start', exit code: 255
	at com.oceanbase.ocp.executor.executor.SshExecutor.execute(SshExecutor.java:429)
	at com.oceanbase.ocp.executor.executor.SshExecutor.startOcpAgent(SshExecutor.java:294)
	at com.oceanbase.ocp.service.compute.AgentInstallationTaskService.startOcpAgent(AgentInstallationTaskService.java:243)
	at com.oceanbase.ocp.service.compute.AgentInstallationTaskService$$FastClassBySpringCGLIB$$f7a6037f.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386)
	at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703)
	at com.oceanbase.ocp.service.compute.AgentInstallationTaskService$$EnhancerBySpringCGLIB$$b8de8a27.startOcpAgent(<generated>)
	at com.oceanbase.ocp.service.task.business.host.InstallOcpAgentTask.run(InstallOcpAgentTask.java:68)
	at com.oceanbase.ocp.core.task.runtime.Subtask.retry(Subtask.java:49)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.retry(JavaSubtaskRunner.java:76)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.doRun(JavaSubtaskRunner.java:35)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.run(JavaSubtaskRunner.java:26)
	at com.oceanbase.ocp.core.task.engine.runner.RunnerFactory.doRun(RunnerFactory.java:76)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.doRun(SubtaskExecutor.java:207)
	at com.oce
anbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.redirectConsoleOutput(SubtaskExecutor.java:201)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.lambda$submit$2(SubtaskExecutor.java:137)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)


Set state for subtask: 8, operation:RETRY, state: FAILED

agentctl.log

2025-04-09T12:01:02.50308+08:00 INFO [190874,] caller=agent/admin.go:355:AgentStatus: check agentd status got: {State:running Ready:false Version: Pid:190891 RootDir:/home/admin/ocp_agent Socket:/home/admin/ocp_agent/run/ocp_agentd.190891.sock Services:map[ocp_mgragent:{Status:{State:stopped Version: Pid:190983 StartAt:1744171254720013916 Extra:map[]} Socket:/home/admin/ocp_agent/run/ocp_mgragent.190983.sock EndAt:1744171255831545281} ocp_monagent:{Status:{State:running Version:4.3.5-SNAPSHOT Pid:190909 StartAt:1744171252507988109 Extra:map[port:62889]} Socket:/home/admin/ocp_agent/run/ocp_monagent.190909.sock EndAt:-6795364578871345152}] Dangling:[]}
2025-04-09T12:01:02.5031+08:00 ERROR [190874,] caller=agent/admin.go:245:startAgent: wait for agent ready timeout
2025-04-09T12:01:02.50311+08:00 INFO [190874,] caller=agent/admin.go:637:progressEnd: startAgent end
2025-04-09T12:01:02.50312+08:00 WARN [190874,] caller=agent/admin.go:639:progressEnd: updateProgress: missing storedStatus fields: task_token=
2025-04-09T12:01:02.50313+08:00 ERROR [190874,] caller=agent/admin.go:199:StartAgent: start agent failed: Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; 
2025-04-09T12:01:02.50316+08:00 INFO [190874,] caller=agent/admin.go:178:Unlock: process 190874 release admin lock
2025-04-09T12:01:02.50322+08:00 INFO [190874,] caller=agentctl/main.go:264:func2: agentctl error fields: response="{\"successful\":false,\"message\":null,\"error\":\"Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; \"}"
……

025-04-09T16:01:53.79879+08:00 INFO [199078,] caller=agent/admin.go:355:AgentStatus: check agentd status got: {State:running Ready:false Version: Pid:199094 RootDir:/home/admin/ocp_agent Socket:/home/admin/ocp_agent/run/ocp_agentd.199094.sock Services:map[ocp_mgragent:{Status:{State:stopped Version: Pid:199191 StartAt:1744185705948125207 Extra:map[]} Socket:/home/admin/ocp_agent/run/ocp_mgragent.199191.sock EndAt:1744185707035412576} ocp_monagent:{Status:{State:running Version:4.3.5-SNAPSHOT Pid:199112 StartAt:1744185703802815393 Extra:map[port:62889]} Socket:/home/admin/ocp_agent/run/ocp_monagent.199112.sock EndAt:-6795364578871345152}] Dangling:[]}
2025-04-09T16:01:53.79881+08:00 ERROR [199078,] caller=agent/admin.go:245:startAgent: wait for agent ready timeout
2025-04-09T16:01:53.79882+08:00 INFO [199078,] caller=agent/admin.go:637:progressEnd: startAgent end
2025-04-09T16:01:53.79883+08:00 WARN [199078,] caller=agent/admin.go:639:progressEnd: updateProgress: missing storedStatus fields:, task_token=
2025-04-09T16:01:53.79885+08:00 ERROR [199078,] caller=agent/admin.go:199:StartAgent: start agent failed: Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; 
2025-04-09T16:01:53.79889+08:00 INFO [199078,] caller=agent/admin.go:178:Unlock: process 199078 release admin lock
2025-04-09T16:01:53.79894+08:00 INFO [199078,] caller=agentctl/main.go:264:func2: agentctl error fields:, response="{\"successful\":false,\"message\":null,\"error\":\"Module=agent, kind=DEADLINE_EXCEEDED, code=wait_for_ready_timeout; \"}"

mgragent.log

2025-04-09T12:00:54.77203+08:00 INFO [190983,0a236ac6096ea51a] caller=config/config_version.go:107:checkConfigVersionBackups: config stay count:30, config version count:1, no need to rotate.
2025-04-09T12:00:55.8073+08:00 INFO [190983,] caller=shell/exec.go:124:execute: execute shell command start, command=Command{user=root, program=sh, outputType=std, cmd=lscpu | grep "On-line CPU(s) list:", timeout=10s} fields:, duration="29.388µs"
2025-04-09T12:00:55.80748+08:00 INFO [190983,] caller=shell/exec.go:128:execute: c.user=root, currentUser=root
2025-04-09T12:00:55.82809+08:00 INFO [190983,] caller=shell/exec.go:163:execute: execute shell command failed, command=Command{user=root, program=sh, outputType=std, cmd=lscpu | grep "On-line CPU(s) list:", timeout=10s}, exitCode=1, error=: exit status 1 fields:, duration=20.812433ms
2025-04-09T12:00:55.82812+08:00 ERROR [190983,] caller=system/system.go:358:GetHostInfo: failed to execute command to get online CPU list: failed to execute command: Command{user=root, program=sh, outputType=std, cmd=lscpu | grep "On-line CPU(s) list:", timeout=10s}, exitCode: 1, output: , error: : exit status 1
2025-04-09T16:01:43.80507+08:00 WARN [199111,] caller=config/yaml.go:99:validateNode: configs may not be replaced: [ocp.agent.http.ip ocp.agent.manager.http.port]
……

2025-04-09T16:01:45.99354+08:00 INFO [199191,e6c4282b786a8765] caller=config/config_version.go:107:checkConfigVersionBackups: config stay count:30, config version count:2, no need to rotate.
2025-04-09T16:01:47.01252+08:00 INFO [199191,] caller=shell/exec.go:124:execute: execute shell command start, command=Command{user=root, program=sh, outputType=std, cmd=lscpu | grep "On-line CPU(s) list:", timeout=10s} fields: duration="22.188µs"
2025-04-09T16:01:47.01269+08:00 INFO [199191,] caller=shell/exec.go:128:execute: c.user=root, currentUser=root
2025-04-09T16:01:47.03201+08:00 INFO [199191,] caller=shell/exec.go:163:execute: execute shell command failed, command=Command{user=root, program=sh, outputType=std, cmd=lscpu | grep "On-line CPU(s) list:", timeout=10s}, exitCode=1, error=: exit status 1 fields: duration=19.511732ms
2025-04-09T16:01:47.03204+08:00 ERROR [199191,] caller=system/system.go:358:GetHostInfo: failed to execute command to get online CPU list: failed to execute command: Command{user=root, program=sh, outputType=std, cmd=lscpu | grep "On-line CPU(s) list:", timeout=10s}, exitCode: 1, output: , error: : exit status 1

172.16.120.9的操作系统和版本麻烦发下
root用户下执行5次下面的命令发下

time lscpu | grep "On-line CPU(s) list:" 

你OCP接管的集群是通过什么部署的?是什么版本?

show variables like '%version_comment%'

在这里看下接管主机的ocp agent进程的状态


操作系统版本为ubuntu18.04LTS


主机的状态是这样的,是灰色的

我联系这块的老师进一步分析下,有进展尽快回复你