4.3.5.2部署提示失败,实际已经运行,但是其中一个节点重启后就无法启动了

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.5.3.2
【问题描述】部署最后阶段,提示部署失败,但是所有服务都提示完成,【这个阶段已经可以使用了,我从mysql同步数据过来了,然后查看视图发现很慢,我就把node1给关机加内存了】然后重启后,此时集群已经崩溃,使用obd cluster stop ob + obd cluster start ob 也无法启动,提示import obshell_bootstrap failed
【复现路径】
【附件及日志】

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

1 个赞

根据您提供的信息,问题可能与 obshell 的启动失败有关。以下是针对您问题的详细分析和解决建议:

问题分析

  1. 部署提示失败但服务运行
    您提到在部署最后阶段提示失败,但所有服务都提示完成。这可能是由于某些非关键步骤失败导致的误报。

  2. 节点重启后无法启动
    当您重启其中一个节点后,集群崩溃,并且 obd cluster start ob 命令无法启动集群,提示 import obshell_bootstrap failed。这表明 obshell 的启动过程中存在问题。

  3. 错误日志分析
    根据日志中的关键信息:

    • import obshell_bootstrap failed 表明 obshell 的启动脚本加载失败。
    • 日志中还提到 setlocale 出现问题,这可能与系统的区域设置(locale)不正确有关。

解决方案

1. 检查系统区域设置(locale)

  • 错误日志中提到 setlocale 失败,这通常是因为系统未正确配置 locale。您可以按照以下步骤检查并修复:
    # 查看当前系统支持的 locale
    locale -a
    
    # 如果缺少 en_US.UTF-8 或其他需要的 locale,生成它
    sudo locale-gen en_US.UTF-8
    sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
    
    # 验证是否生效
    echo $LANG
    
  • 确保 LANGLC_ALL 设置为 en_US.UTF-8 或其他兼容的值。

2. 检查 obshell 的依赖项

  • obshell 的启动失败可能与依赖项缺失有关。请确保以下依赖已安装:
    # 安装 Python 相关依赖
    sudo apt-get install -y python3-pip python3-dev libffi-dev libssl-dev
    pip3 install --upgrade pip setuptools wheel
    
    # 安装 obshell 所需的库
    pip3 install -r /root/.obd/plugins/oceanbase-ce/4.2.1.4/requirements.txt
    

3. 重新部署集群

  • 如果上述步骤未能解决问题,可以尝试重新部署集群:
    # 销毁现有集群
    obd cluster destroy ob
    
    # 编辑配置文件,确保 production_mode=false(测试环境)
    obd cluster edit-config ob
    
    # 重新部署集群
    obd cluster deploy ob -c <your_config.yaml>
    
    # 启动集群
    obd cluster start ob
    

4. 检查日志以定位具体问题

  • 如果问题仍然存在,请查看详细的 obd 日志以获取更多信息:
    obd log -f
    
  • 根据日志中的具体错误信息进一步排查。

其他注意事项

  1. 生产模式配置

    • 您提到这是测试环境,请确保 production_mode 配置为 false,以避免严格的检查限制。参考文档片段 2 和 9。
  2. 内核参数检查

    • 确保操作系统的内核参数符合 OceanBase 的推荐配置。如果测试环境中无法修改内核参数,可以通过将 production_mode 设置为 false 来跳过检查。
  3. 版本兼容性

    • 您使用的是 OceanBase 4.5.3.2 版本,请确保 obd 的版本与之兼容。参考文档片段 6 和 8。

总结

根据文档库中的信息,问题的主要原因可能是系统 locale 配置不正确或 obshell 的依赖项缺失。通过修复 locale、安装依赖项以及重新部署集群,应该可以解决此问题。如果问题仍未解决,请提供更详细的日志信息以便进一步分析。

更多信息请查看:

  1. OceanBase 安装部署工具 V2.8.0
  2. 错误码
  3. OceanBase 安装部署工具 V2.4.0
  4. 通过图形化界面部署 OCP
  5. 通过图形化界面变更组件
  6. 启动 obshell


出现另外一个错误

1 个赞

改好后,出现另外一个错误了:root@debian:/home/long# obd cluster start ob
Get local repositories ok
Load cluster param plugin ok
Open ssh connection ok
Check before start obagent ok
Check before start ocp-express ok
cluster scenario: htap
Start observer ok
observer program health check ok
Connect to observer 192.168.6.231:2881 ok
obshell start ok
obshell program health check ok
start obproxy ok
obproxy program health check ok
Connect to obproxy ok
Start obagent ok
obagent program health check ok
Connect to observer 192.168.6.231:2881 ok
[ERROR] oceanbase-ce-py_script_create_user-4.0.0.0 RuntimeError: ‘bool’ object is not iterable
See https://www.oceanbase.com/product/ob-deployer/error-codes .
Trace ID: 925987a6-3ba9-11f0-90aa-b00200457e39
If you want to view detailed obd logs, please run: obd display-trace 925987a6-3ba9-11f0-90aa-b00200457e39
root@debian:/home/long#

1 个赞

麻烦提供一份~/.obd/cluster/xxxx/yaml文件,obd 版本
内存加的是主机层面的么?

2 个赞

是虚拟机
user:
username: long
password: ********
port: 22
oceanbase-ce:
version: 4.3.5.2
release: 102000112025051418.el7
package_hash: de3213df61335f08d7f7e60097aa8402ce868afd
192.168.6.231:
zone: zone1
datafile_maxsize: 212G
datafile_next: 21G
192.168.6.232:
zone: zone2
datafile_maxsize: 220G
datafile_next: 22G
192.168.6.233:
zone: zone3
datafile_maxsize: 215G
datafile_next: 21G
servers:

  • 192.168.6.231
  • 192.168.6.232
  • 192.168.6.233
    global:
    appname: ob
    root_password: ******
    mysql_port: 2881
    rpc_port: 2882
    home_path: /home/long/ob/oceanbase
    scenario: htap
    cluster_id: 1748361465
    ocp_agent_monitor_password: 09qWsoXJ0Q
    proxyro_password: 9HnNdMGNd0
    ocp_root_password: ah6sLet0IN
    ocp_meta_password: 7R6zXM9FMx
    ocp_meta_tenant_log_disk_size: 8G
    enable_syslog_wf: false
    max_syslog_file_count: 16
    production_mode: false
    memory_limit: 12G
    datafile_size: 29G
    system_memory: 1G
    log_disk_size: 29G
    cpu_count: 16
    obproxy-ce:
    version: 4.3.4.0
    package_hash: fba87ccf12faba9ba599cd7b0ca4a8149d1abb0e
    release: 1.el7
    servers:
  • 192.168.6.231
  • 192.168.6.232
  • 192.168.6.233
    global:
    prometheus_listen_port: 2884
    listen_port: 2883
    rpc_listen_port: 2885
    home_path: /home/long/ob/obproxy
    obproxy_sys_password: ?Df{(oJuTzW=rj,cnf4[
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    enable_cluster_checkout: false
    192.168.6.231:
    proxy_id: 1183
    client_session_id_version: 2
    192.168.6.232:
    proxy_id: 1184
    client_session_id_version: 2
    192.168.6.233:
    proxy_id: 1185
    client_session_id_version: 2
    depends:
  • oceanbase-ce
    obagent:
    version: 4.2.2
    package_hash: 19739a07a12eab736aff86ecf357b1ae660b554e
    release: 100000042024011120.el7
    servers:
  • 192.168.6.231
  • 192.168.6.232
  • 192.168.6.233
    global:
    monagent_http_port: 8088
    mgragent_http_port: 8089
    home_path: /home/long/ob/obagent
    http_basic_auth_password: p2mGEU9g7
    ob_monitor_status: active
    depends:
  • oceanbase-ce
    ocp-express:
    version: 4.2.2
    package_hash: 09ffcf156d1df9318a78af52656f499d2315e3f7
    release: 100000022024011120.el7
    servers:
  • 192.168.6.231
    global:
    port: 8180
    admin_passwd:******
    home_path: /home/long/ob/ocpexpress
    memory_size: 872M
    depends:
  • obagent
  • oceanbase-ce
  • obproxy-ce

root@debian:/home/long# cat /root/.obd/cluster/ob/inner_config.yaml
oceanbase-ce:
192.168.6.231: {}
192.168.6.232: {}
192.168.6.233: {}
$_component_global_attrs:
$_standby_relation:
$_standbyro_password:
obproxy-ce:
192.168.6.231: {}
192.168.6.232: {}
192.168.6.233: {}
$_deploy_install_mode: ln
obagent:
192.168.6.231: {}
192.168.6.232: {}
192.168.6.233: {}
ocp-express:
192.168.6.233: {}
192.168.6.231: {}

ocp-express当前不建议使用了 这边已经不进行维护了,节后就会下掉了。
建议你铲掉集群重新搭建,可以选择ocp产品部署

您这边建议先部署ob集群还是先部署ocp呢? 先部署ob的话 ocp用4.3.5.2是否有影响?

直接可部署一台单节点ocp后续使用ocp进行ob安装部署比较方便

如果希望ocp也高可用呢?
您提到的使用一台单节点ocp,这个ocp是独立服务器吗?还是和ob共用?

和ob公用,
当然ocp也可以高可用,这边看你只有三节点所以建议部署个单节点ocp

大致就是 先安装obd,然后obd部署全新环境的ocp,这个ocp把默认端口修改掉,然后使用ocp去部署ob集群,这个ob集群用默认端口。
是这个思路吗?

思路是这样的,ocp不需要改端口

不修改端口的话,ocp和ob共用同一个服务器,不就冲突了吗?因为ocp也有proxy和ob

ocp需要一台ob数据库来作为自己的metadb。所以该节点只能为ocp提供服务。

我理解的是:
ocp ob节点
192.168.6.231:2891 + 192.168.6.231:2892
192.168.6.232:2891 + 192.168.6.232:2892
192.168.6.233:2891 + 192.168.6.233:2892
ocp proxy节点
192.168.6.231:2893 + 192.168.6.231:2894
192.168.6.232:2893 + 192.168.6.232:2894
192.168.6.233:2893 + 192.168.6.233:2894
ocp 服务端口
192.168.6.231:8080

ob节点
192.168.6.231:2881 + 192.168.6.231:2882
192.168.6.232:2881 + 192.168.6.232:2882
192.168.6.233:2881 + 192.168.6.233:2882

obproxy节点
192.168.6.231:2883 + 192.168.6.231:2884
192.168.6.232:2883 + 192.168.6.232:2884
192.168.6.233:2883 + 192.168.6.233:2884

ob不支持且不建议单节点多实例部署
架构建议
231节点 ocp+metadb+(ocp的proxy 该proxy不对外提供服务)
232+233可搭建业务集群+obproxy,或者再多分配一台机器搭建1-1-1高可用集群

您的意思是,ocp和ocp的metadb可以共用一个节点,但是业务的ob需要单独部署在其它节点上
等于是加入我有四个节点,我只需要在192.168.6.231上部署obd,然后用obd部署ocp即可
然后ocp部署好后,我用ocp去部署192.168.6.232-192.168.6.234 三节点的ob集群,是这个意思吗

是的,ocp可以管控多台集群。ocp具有监控告警 备份恢复 数据库启停运维等功能。功能很强大

1 个赞