ODB 部署 OCP Express + 集群:Start ocp-express 报错 failed to connect meta db

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】oceanbase-all-in-one-4.2.1.8-108000022024072217.el7.x86_64.tar.gz
【问题描述】清晰明确描述问题

  1. 我是通过 all-in-one 4.2.1.8 安装包安装的 obd
  2. 使用的是 all-in-one/rpms 里的rpm文件做的本地仓库
  3. obd cluster deploy obcluster -c all-components.yaml 没有报错
  4. 到 obd cluster start obcluster 报以下错误
  5. 登录 observer(2881)和 obproxy(2883)都没问题
  6. 查看 obd display-trace 可以看到以下日志,看着像一直都连不上
  7. 我查过 /home/admin/.obd/cluster/obcluster/config.yaml,密码和 ocp_meta_password 一样

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

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

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

2 个赞

根据您提供的信息以及日志显示,OCP Express 在启动时遇到了“failed to connect meta db”的错误。这通常意味着 OCP Express 无法成功连接到之前为它创建的 meta 租户。根据文档 [1],为了成功部署 OCP Express,您需要确保以下几个方面:

  1. 正确配置 JDBC 连接信息:确保 config.yaml 文件中的 jdbc_urljdbc_usernamejdbc_password 字段配置正确无误。这些字段分别代表了连接到 meta 租户的 JDBC 连接字符串、用户名以及密码。用户名格式应为 user_name@tenant_name,且该用户必须已经创建,并且拥有足够的权限。

  2. 确认 Meta 租户存在:请检查是否已经按照文档 [1]中的指导创建了 meta 租户、用户,并且授予了相应的权限。创建租户的命令如下:

    obd cluster tenant create <deploy name> -n <tenant_name> --max-cpu=2 --memory-size=4G --log-disk-size=3G --max-iops=10000 --iops-weight=2 --unit-num=1 --charset=utf8
    
  3. 验证数据库连接:由于日志显示不断尝试连接 172.18.0.115 -P2883 -umeta@ocp -pNyKHAicTYH 并最终失败,建议您手动尝试使用相同的凭证和地址来连接数据库,以确认连接信息是否正确。您可以使用 OBProxy 的地址和端口(如 172.18.0.115:2883)来尝试连接到 meta 租户。

  4. 检查网络配置:确保从运行 OCP Express 的机器到 OceanBase 集群(特别是 OBProxy)的网络是通畅的,没有任何防火墙规则阻止通信。

  5. 确认 OBAgent 状态:虽然日志显示 obagent program health check ok,但仍建议检查 OBAgent 的状态和服务端口是否正常,因为 OCP Express 的启动依赖于 OBAgent 的健康状态。

  6. 检查配置文件其他部分:除了 JDBC 相关配置外,还需确保 config.yaml 文件中的其他配置项如 home_pathlog_dirport 等均正确设置,并且满足文档 [1]中列出的要求。

如果以上步骤均确认无误后仍然遇到问题,建议进一步检查日志文件以获取更详细的错误信息,或者使用 obd display-trace 命令来追踪具体的错误来源。此外,您也可以尝试重新创建 meta 租户或调整其配置,特别是在内存和日志磁盘空间方面,确保有足够的资源分配给 meta 租户 [2]。如果问题依旧存在,建议联系 OceanBase 的技术支持获取进一步的帮助。

更多信息请查看:

  1. 使用命令行部署 OCP Express
  2. 错误码
  3. OceanBase 安装部署工具 V2.2.0
2 个赞

检查发觉obd部署既没有建用户,也没有建租户,也没有建数据库,但不知道怎么解决了……


image

1 个赞

根据您提供的信息,当前系统中仅存在默认的租户 oceanbase,并没有为 OCP Express 创建所需的 meta 租户。同时,也未发现有额外的用户被创建。这种情况通常是由于部署过程中某些步骤被遗漏或配置不正确导致的。以下是解决这个问题的一些建议:

创建 Meta 租户

  1. 使用 obd 创建租户:您可以使用 obd cluster tenant create 命令来创建一个新的租户作为 OCP Express 的 meta 租户。例如:

    obd cluster tenant create <deploy name> -n ocp_meta --max-cpu=2 --memory-size=4G --log-disk-size=3G --max-iops=10000 --iops-weight=2 --unit-num=1 --charset=utf8
    

    请替换 <deploy name> 为您实际的部署名称。

  2. 确认租户创建成功:创建完成后,可以通过查询 DBA_OB_TENANTS 表来确认新租户是否创建成功:

    obclient -uroot@oceanbase -p -h<observer_ip> -P2881 -e "SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'ocp_meta';"
    

    请替换 <observer_ip> 为您实际的 Observer IP 地址。

创建 Meta 用户

  1. 登录到 Meta 租户:使用 obclient 登录到刚刚创建的 ocp_meta 租户:

    obclient -uroot@ocp_meta -p -h<observer_ip> -P2881
    

    请替换 <observer_ip> 为您实际的 Observer IP 地址。

  2. 创建用户:在 ocp_meta 租户中创建一个用户,并授予必要的权限:

    CREATE USER 'meta'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'meta'@'%';
    FLUSH PRIVILEGES;
    
  3. 确认用户创建成功:可以通过查询 mysql.user 表来确认新用户是否创建成功:

    SELECT user, host FROM mysql.user WHERE user = 'meta';
    

更新配置文件

  1. 修改 config.yaml 文件:确保 config.yaml 文件中的 jdbc_urljdbc_usernamejdbc_password 字段指向新创建的 ocp_meta 租户及其用户:

    jdbc_url: "jdbc:oceanbase://172.18.0.115:2883/ocp_meta"
    jdbc_username: "meta@ocp_meta"
    jdbc_password: "your_password"
    
  2. 重启 OCP Express:更新配置文件后,重新启动 OCP Express:

    obd cluster start obcluster
    

验证连接

  1. 手动测试连接:在启动 OCP Express 之前,可以先手动测试一下是否能够成功连接到 ocp_meta 租户:
    obclient -u'meta@ocp_meta' -p -h172.18.0.115 -P2883
    
    输入密码后,如果能够成功登录,则说明连接配置正确。

通过以上步骤,应该可以解决 OCP Express 启动时无法连接到 meta 数据库的问题。如果问题依然存在,请检查日志文件以获取更详细的错误信息,并确保所有配置正确无误。如果需要进一步的帮助,建议联系 OceanBase 的技术支持。

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

1 个赞

能使用 obd 创建用户的前提是 Cluster Status 是 Running 吧?我执行‘obd cluster tenant create’命令的结果是:Deploy “obcluster” is deployed

1 个赞

您吧配置的yaml文件发出来一份,obd的详细日志也提供一份。
建议你也使用obd web方式进行部署看看。大部分这种报错都是因为配置文件参数存在问题导致

1 个赞

你发下完整的obd.log和observer.log

1 个赞

OK,那我通过白屏再部署一次试试,请问有没有关于白屏里参数的深度介绍或者步骤截图?

1 个赞

……没了……删了重新部署了,卡的位置还不一样了……我现在试试白屏

~/.obd/plugins/oceanbase-ce/
选择相应版本号,parameter.yaml中有详细解释

我找了另一个版本尝试OCP+集群,这次是部署成功了,我感觉目前社区版的4.2.1.8 all in one安装包有点问题,怎么部署都会有各种报错,其中最多的是 cannot connect meta db

请问怎么关闭提问?

点采纳及可。安装包不太可能存在问题 :joy:这边呆会下载一个安装看看

方便的话推荐一个obd部署obs+ocp express的配置文件,资源大概是8 CPU+16G MEN的环境,可以起4个虚机,非常感谢,黑屏或者白屏都行

忘记说,200-300G Disk

这个你可以使用obd web白屏化方式安装即可。使用1-1-1架构吧,4节点不符合多数派原则