OCP-SERVER-CE 问题交流贴

发个贴集中交流 社区版OCP 的部署使用问题,欢迎跟帖。
OCP 部署成功了也通过 OCP 部署 OB 集群成功了,不过其中也有一些小问题。


安装包下载地址(官网):https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/ocp/4.2.1_CE_BP1/ocp-all-in-one-4.2.1-20231208144448.el7.x86_64.tar.gz
安装文档(官网): 使用图形化界面部署 OCP-OceanBase 云平台-OceanBase文档中心-分布式数据库使用文档

问题1 : 新增主机检查失败,疑似跟时间同步检查有关。


问题复现和分析

2024-03-10 17:25:33.017  WARN 22527 --- [pool-manual-subtask-executor14,fcb04e3628414678,03dccd70eeb7] c.o.ocp.core.task.util.ClockDiff         : Clock-diff failed. args=[172.29.228.250], exception={}. Please try other ocp.host.check.clock-diff.mode in System Parameters

org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
	at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
	at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
	at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:153)
	at com.oceanbase.ocp.core.util.LocalCommandExecutor.exec(LocalCommandExecutor.java:50)
	at com.oceanbase.ocp.core.task.util.ClockDiff.execute(ClockDiff.java:95)
	at com.oceanbase.ocp.core.task.util.ClockDiff.diffWithIcmpTimestamp(ClockDiff.java:52)
	at com.oceanbase.ocp.core.task.util.ClockDiff$ClockDiffMode.doRun(ClockDiff.java:172)
	at com.oceanbase.ocp.service.task.business.host.PreCreateHostCheckTask.checkIsRemoteClockDiffAcceptable(PreCreateHostCheckTask.java:107)
	at com.oceanbase.ocp.service.task.business.host.PreCreateHostCheckTask.run(PreCreateHostCheckTask.java:68)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.execute(JavaSubtaskRunner.java:59)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.doRun(JavaSubtaskRunner.java:31)
	at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.run(JavaSubtaskRunner.java:25)
	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:193)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.redirectConsoleOutput(SubtaskExecutor.java:187)
	at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.lambda$submit$2(SubtaskExecutor.java:124)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorke
r(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)

推测这一步就是在 OCP 主机上检查目标主机的时间延时。在命令行下跑也没有问题。

[root@ODP ~]# hostname -i
172.29.228.251
[root@ODP ~]# clockdiff 172.29.228.250
.
host=172.29.228.250 rtt=750(187)ms/0ms delta=0ms/0ms Sun Mar 10 18:00:53 2024
[root@ODP ~]# 

目标主机是跟 OCP 主机保持时间同步的,时间应该没问题。

报错原因不明。 :shushing_face:

解决方法

  • 跳过失败任务。

部署用的配置文件


生成配置文件

第一次部署是使用图形化部署方式:obd web 。不过部署失败了,页面上看不到日志,所以后面改用命令行下部署。web 方式的好处就是通过向导自动生成了 OBD 配置文件。

  • 初始化命令行环境
source ~/.oceanbase-all-in-one/bin/env.sh
  • 查看 OBD 配置文件路径方法
obd cluster list
ls -lrth /root/.obd/cluster/ocpmeta/

配置文件参考

  • 机器配置

OCP 主机配置 4C16G ,实际可用内存大概 15G 不到。

[root@ODP ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        9.6G        1.5G        516K        4.1G        2.7G
Swap:            0B          0B          0B
[root@ODP ~]# 

磁盘关键目录:/home/admin , /data/1 ,/data/log1 。 其中 /data/log1 空间尽量不少于 30G 。
下面是部署好 OCP 后的空间状况。

df -h

[root@ODP ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   26G   12G  69% /

/dev/vdb1        99G   11G   83G  12% /data/1
/dev/vdb2        50G   46G  1.6G  97% /data/log1
  • OBD 配置文件
vim /root/.obd/cluster/ocpmeta/config.yaml
user:
  username: admin
  password: MODIFYME
  port: 22
oceanbase-ce:
  version: 4.2.1.2
  release: 102010022023121415.el7
  package_hash: 1873bbe80cbbe5d00d5f276a4f7302cfca677fb6
  172.29.228.251:
    zone: zone1
  servers:
  - 172.29.228.251
  global:
    appname: ocpmeta
    root_password: aaAA11__
    mysql_port: 2881
    rpc_port: 2882
    home_path: /home/admin/oceanbase
    data_dir: /data/1
    redo_dir: /data/log1
    cluster_id: '44944'
    devname: eth0
    datafile_size: 10GB
    datafile_maxsize: 50GB
    datafile_next: 10GB
    log_disk_size: 15GB
    enable_syslog_recycle: 'True'
    max_syslog_file_count: '5'
    memory_limit: 12GB
    system_memory: 1GB
    cpu_count: '16'
    ocp_meta_tenant_max_cpu: '1'
    ocp_meta_tenant_memory_size: 2G
    ocp_meta_tenant_log_disk_size: 5GB
    proxyro_password: znk0PKMmkC
    enable_syslog_wf: false
    production_mode: false
obproxy-ce:
  version: 4.2.1.0
  package_hash: 0aed4b782120e4248b749f67be3d2cc82cdcb70d
  release: 11.el7
  servers:
  - 172.29.228.251
  global:
    home_path: /home/admin/obproxy
    prometheus_listen_port: 2884
    listen_port: 2883
    proxy_mem_limited: 1GB
    obproxy_sys_password: aaAA11__
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    enable_cluster_checkout: false
  depends:
  - oceanbase-ce
ocp-server-ce:
  version: 4.2.1
  package_hash: 58cf72891d75a2fa7c754bafc42d336525baf0b5
  release: 20231208144448.el7
  servers:
  - 172.29.228.251
  global:
    home_path: /home/admin/ocp
    soft_dir: /home/admin/software
    log_dir: /home/admin/logs
    port: 8080
    admin_password: aaAA11__
    memory_size: 4G
    manage_info:
      machine: 3
    ocp_meta_tenant:
      tenant_name: ocp_meta
      max_cpu: 4.0
      memory_size: 4G
    ocp_meta_username: root
    ocp_meta_password: aaAA11__
    ocp_meta_db: meta_database
    ocp_monitor_tenant:
      tenant_name: ocp_monitor
      max_cpu: 4.0
      memory_size: 4G
    ocp_monitor_username: root
    ocp_monitor_password: aaAA11__
    ocp_monitor_db: monitor_database
  depends:
  - oceanbase-ce
  - obproxy-ce

修改上面配置文件中的 IP、密码、网卡名称等,保留 memory 和 disk 相关参数不变,应该就可以在一个 4C16G内存200G 磁盘上部署成功 社区版 OCP。

1 个赞

:clap: :clap: :clap:

补充一个 独立部署的一些截图 供参考。跟上面配置文件不是对应的。



虽然资源紧张,不过还是 bootstrap 成功了。

离成功不远了,开始创建 OCP 租户。

OCP 成功启动。

最终部署成功!

OCP元数据库集群资源分布

这个问题我们发现在操作系统和用户权限有些兼容问题。

  1. 在一些操作系统发现 clockdiff 命令 普通用户是无权限执行的,root用户赋权 setcap cap_net_raw+ep /usr/sbin/clockdiff 后 才能正常执行。

  2. 同时也发现在 Ubuntu系统, Debian 11系统 必须使用 sudo 权限才能执行 clockdiff 命令

但是ocp这个地方并未采用sudo的方式去执行,所以 clockdiff 检查延迟会失败。

目前这个问题已经在内部修复,后续版本会解决。

1 个赞