oceanbase / obdeploy

A deployer and package manager for OceanBase open-source software.
https://open.oceanbase.com
GNU General Public License v3.0
87 stars 132 forks source link

[Question]: deploy obcluster failed with error: fail to init server, home path is not empty #191

Closed Rcforest closed 4 months ago

Rcforest commented 6 months ago

Question I am trying to deploy a 3-node cluster in localhost, but always failed with the same error:

屏幕截图 2024-02-23 130501

I have tried to remove all directory mentioned and use sudo permission, the error is still above.

How could I solve the problem?

Environment

hnwyllmm commented 6 months ago
  1. please don't use 'sudo' as it will use root user's environment to deploy the cluster;
  2. Why don't you use the lastest oceanbase-ce?
  3. please upload your obd log file and the commands you executed.
Rcforest commented 6 months ago
  1. sudo permission is just a try for solving the problem, but it failed.
  2. Our experiment requires the specific version of oceanbase-ce.
  3. The command is obd cluster deploy cluster-3node -c ob3node.yaml -v

    1. ob3node.yaml

      ob3node.txt (Github don't allow for yaml file, so I modified its suffix.)

    2. obd log

      obd.log

hnwyllmm commented 6 months ago

It's a problem of obdeploy. I will transfer it to obdeploy repo.

gys-git commented 6 months ago

I was able to successfully deploy within CentOS 7 using your configuration file (after adjusting the production_mode, devname, and capacity configuration items to match my own machine's setup). You can carry out the following steps:

obd cluster destroy {deployname} rm -r /data/homedata/zhd/cluster-server* Redeploy If that doesn't work, you can check the detailed system information by running cat /etc/os-release, and I'll see if I have a machine with a similar environment to reproduce the issue.

Below is my configuration file:

oceanbase-ce:
  version: 4.1.0.0
  servers:
    - name: server1
      ip: 127.0.0.1
    - name: server2
      ip: 127.0.0.1
    - name: server3
      ip: 127.0.0.1
  global:
    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: lo
    # if current hardware's memory capacity is smaller than 50G, please use the setting of "mini-single-example.yaml" and do a small adjustment.
    memory_limit: 8G # The maximum running memory for an observer
    # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
    system_memory: 2G
    # datafile_disk_percentage: 70 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
    syslog_level: INFO # System log level. The default value is INFO.
    datafile_size: 20G
    enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
    enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
    max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
    production_mode: false
    # observer cluster name, consistent with obproxy's cluster_name
    appname: obcluster
    # root_password: # root user password, can be empty
    # proxyro_password: # proxyro user pasword, consistent with obproxy's observer_sys_password, can be empty
    cpu_count: 8
  # In this example :, support multiple ob process in single node, so different process use different ports.
  # If deploy ob cluster in multiple nodes, the port and path setting can be same.
  server1:
    mysql_port: 28801 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 28802 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /data/homedata/zhd/cluster-server1/
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    zone: zone0
  server2:
    mysql_port: 28803 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 28804 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /data/homedata/zhd/cluster-server2/
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    zone: zone1
  server3:
    mysql_port: 28805 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 28806 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /data/homedata/zhd/cluster-server3/
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    zone: zone2

obproxy-ce:
  # Set dependent components for the component.
  # When the associated configurations are not done, OBD will automatically get the these configurations from the dependent components.
  depends:
    - oceanbase-ce
  servers:
    - 127.0.0.1
  global:
    listen_port: 28807 # External port. The default value is 2883.
    # prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
    home_path: /data/homedata/zhd/cluster-obproxy
    # oceanbase root server list
    # format: ip:mysql_port;ip:mysql_port. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    rs_list: 127.0.0.1:28801;127.0.0.1:28803;127.0.0.1:28805
    enable_cluster_checkout: false
    # observer cluster name, consistent with oceanbase-ce's appname. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # cluster_name: obcluster
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    # obproxy_sys_password: # obproxy sys user password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # observer_sys_password: # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends

image

Rcforest commented 6 months ago

Thanks for answering! We have deployed successfully with another machine.
Maybe there is something wrong with our original machine.