通过OBD部署OCP/OBCE完成后,ocp平台显示仍在初始化集群和节点,install ocp agent 失败

【 使用环境 】 测试环境
【 OB or 其他组件 】OCP/OBCE
【 使用版本 】使用4.2.1—BP10LTS all in one 一键安装
系统其他参数:
Centos7.6,部署用户名ob,拥有sudo免密权限,已经在root组内
【问题描述】
【复现路径】
第一步:使用4.2.1 BP10 LTS all in one先安装obd。通过白屏安装全新集群并附带安装ocp。
一路配置完后,验证配置通过,部署成功,如图片。
第二步:登录OCP平台,查看集群状态为接管中,里面错误卡在install ocp agent。主机状态也显示正在创建中。重试错误任务后,ocp-server.log报错堆栈显示丢失租户参数相关。
第三步:通过obai询问,卡在intall ocp agent可以尝试查看/tmp下的agent rpm包,自己查看确实属于root:root,自己更改为ob:ob 且赋权777,未能解决该问题

由于第二步,自己理解部署ocp前提是ob集群正常,由于找不到租户可能为ob集群部署存在问题。
【附件及日志】




看一下ocp的镜像中有没有ocp-agent安装包,代接管的主机集群是否已存在obagent会导致端口冲突,可以先停掉obagent

1.ocp平台的软件包管理里显示含有ocp-agent-ce-4.3.2.xxx.rpm(43.72Mb)
2.三个节点的/tmp下均有ocp-agentxxx.rpm,但是大小均为4kb
3.有一个节点历史部署过单节点集群,存在obagent相关进程,已经kill掉,重试任务依然报错

本人已铲掉以上部署的集群。以剃刀原则逐步部署。
1.首先通过obd仅部署三节点ob集群,以及obproxy
该步骤顺利,且集群可用。
2.再次通过obd,借由以上集群部署
该操作创建了一个ocp集群,并向第一步集群中添加几个租户,该步骤顺利完成,ocp平台可正常访问,但由于没有托管集群,部分监控按钮相关接口报错
3.按照教程修改集群配置style为cluster,添加idc信息并重启第一步的集群。
在ocp平台执行托管集群操作,执行到相同地方报错,日志一样。

看起来是租户名称不正确,这里第3步你参考的教程麻烦发下,下面截图的报错信息 能发下完成的日志吗?建议发下文本附件

1 个赞

参考的链接 使用 OCP 接管 OBD 部署的集群-V1.4.0-OceanBase 安装部署工具文档-分布式数据库使用文档
需要注意的是,我通过该教程,仅仅更改风格为cluster,并且新增idc信息。确保check4ocp 命令通过后,其他配置均无修改,因为是全新安装,都保持了默认无需修改。(部署ob的用户已经为admin,权限充足,所以也未走新增admin用户的流程)
日志如下,请忽略最底下的报错,那是ocp平台点击不存在集群的监控按钮触发
ocp-server.txt (3.2 MB)
如果还需要更多信息,可以再说,我会第一时间给你,非常感谢!

麻烦确认下这个包ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm 是在哪里下载的?


2024-12-31 18:31:19.861  INFO 34018 --- [manual-subtask-executor15,533c711d5df1d20e,ce88fad72568c125] c.o.o.e.internal.template.SshTemplate    : SSH execute end: sudo sha1sum '/tmp/'/'ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm' | awk '{ print $1 }' on 10.79.169.38,result:SshResult(host=10.79.169.38, username=admin, command=sudo sha1sum '/tmp/'/'ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm' | awk '{ print $1 }', out=b5a478c4f4da0e1c1fc43739757f6ef2010119d9, err=, extOut=null, exitStatus=0)
2024-12-31 18:31:19.865 ERROR 34018 --- [manual-subtask-executor15,533c711d5df1d20e,ce88fad72568c125] c.o.o.c.t.e.c.w.subtask.SubtaskExecutor  : result not match after try 3 times

java.lang.RuntimeException: result not match after try 3 times
	at com.oceanbase.ocp.common.lang.pattern.Retry.lambda$executeUntilWithLimit$0(Retry.java:62)
	at com.oceanbase.ocp.common.lang.pattern.Retry.executeUntilWithLimit(Retry.java:93)
	at com.oceanbase.ocp.common.lang.pattern.Retry.executeUntilWithLimit(Retry.java:61)
	at com.oceanbase.ocp.common.lang.pattern.Retry.executeUntilWithLimit(Retry.java:56)
	at com.oceanbase.ocp.executor.executor.SshExecutor.downloadFile(SshExecutor.java:398)
	at com.oceanbase.ocp.executor.executor.SshExecutor.installPackage(SshExecutor.java:237)
	at com.oceanbase.ocp.service.compute.AgentInstallationTaskService.installOcpAgentRpm(AgentInstallationTaskService.java:218)
	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$$222e8250.installOcpAgentRpm(<generated>)
	at com.oceanbase.ocp.service.task.business.host.InstallOcpAgentTask.run(InstallOcpAgentTask.java:63)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.execute(JavaSubtaskRunner.java:64)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.doRun(JavaSubtaskRunner.java:32)
	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:206)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.redirectConsoleOutput(SubtaskExecutor.java:200)
	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)

这个包就是all-in-one的rpms目录里的呀


至于/tmp路径里的,我观察发现应该是obd节点发送到其他节点的,并且/tmp下的包都只有4.0kb。

f0454eadd8fd83b60b2496697e54501bed39fae5 ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm

正常的sha1sum值是 f0454eadd8fd83b60b2496697e54501bed39fae5,但是你这里是这个 b5a478c4f4da0e1c1fc43739757f6ef2010119d9,所以agent部署失败了,你在服务器上单独执行下这个命令发下结果

sudo sha1sum ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm

已经确认,三个节点的/tmp/ocp-agent-cexxx.rpm的结果均为b5a478c4f4da0e1c1fc43739757f6ef2010119d9
而rpms/下的结果为f0454eadd8fd83b60b2496697e54501bed39fae5
所以这确实是大小为4.0kb的一个原因

那么我现在是否可以尝试,手动替换/tmp下的对应包为正常的sha1sum结果的包呢


再次补充
自己手动给每个节点的/tmp放入正常大小的rpm包,重启任务后,正常大小的rpm包再次被替换成4.0kb大小的rpm包,任务发生同样的错误。
也就是现在我们可能需要解决为什么分发rpm包会出现问题。
另外,我机器之间使用scp需要输入了密码。我并没有配置免密ssh,当然,在这之前其他步骤不需要免密ssh也能完成

你在ocp-server上搜索下

sudo find / -name "ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm"

然后 sudo sha1sum 搜索结果里的 ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm

除了/tmp下的rpm包大小为4.0kb,sha1sum的值不正常外,其他路径下的rpm包大小均为44M

补充说明三个节点的/tmp均为777权限
——————
新修改
我想我可能发现错误了,根据我查看日志,分发到/tmp目录下的rpm文件,是通过命令
sudo curl -s -S -k -o ‘/tmp’/‘ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm’ ‘http://10.79.169.37:8080/api/v2/object-storage/sys-package/ocp-agent-ce-4.3.2-20241012145836.el7.x86_64.rpm’ on 10.79.169.37
实现的,那么疑问就是这个8080端口,他是ocp平台的默认登陆端口,但由于端口冲突,我部署时已经更改为8090,而命令还没改过来
新建 文本文档.txt (17.9 KB)

你部署时在哪一步修改端口为8090了?现在的 ocp.site.url 是什么?

obd白屏安装ocp的界面。
当时会让填写ocp.site.url,我填写了http://10.79.169.37
下面一个选项会再填写端口,我填写了8090

事实是,我访问web的ocp平台是通过端口8090
然后我现在obd cluster myocp edit-config,看到里面的ocp_site_url为:8080,下面的port为8090.
意思是,8080其实对应的服务跟8090不一样吗


应该是破案了,我理解仅修改port为8090,程序会自动拼接到url后面,从而使得ocp_site_url为8090.
但结果就是,url因为没有带上端口而使用了默认的8080,port修改为8090在某些地方没有用

这里的端口应该是需要保持一致的,但是没保持一致也没报错出来,看起来这里也有问题的,我也在找相关老师看看

你看下这里的 ocp.site.url 是什么?

我通过obd修改了集群myocp的url.site的末尾端口号为8090并重新启动集群。
打开网页后,系统参数并没有更改,还是8080.
重试任务后,依然错误,接口的地址端口也是8080,不过这也在合理范围内。
我现在在web界面更改url.site再试一试应该就可以了

问题已解决,在web界面更改site.url为xxx:8090后,接口也变成8090/api/v2xxxx,能够下载rpm包和安装rpm包了。
那么汇总一下目前遇到的问题。
1.obd安装ocp的时候,会同时需要填写site.url以及port。如果url不带上端口信息,则会默认带上8080,而不是port。但即使如此,通过port的值还是能够访问ocp平台,不过系统参数site.url仍然是8080.
2.通过obd cluster edit-config 修改了site.url为xxxx:8090,并重启集群,在ocp平台,看到的系统参数site.url仍未修改。但在ocp平台修改系统参数,保存并重启ocp集群,参数正常,功能可用

我确认了下,有一种情况,这里ocp_site_url可以配置vip的,可以和下面的端口不一样,只要转发到对应服务就可以,例如这里需要配置8080转发到8090,需要可以通过8080访问到8090 的服务