docker部署oceanbase问题

【 使用环境 】 测试环境
【 OB or 其他组件 】
【 使用版本 】4.3.5
【问题描述】docker 部署oceanbase,数据卷持久化以及ip地址不对问题
【复现路径】docker部署
【附件及日志】目前关于之前很多用户提到的持久化数据卷问题,按照以下卷挂载是没有问题的,但是容器删除再启动,ip地址不对,该如何处理呢,docker-compose可以指定ip地址,但是我是swarm部署无法指定ip地址,不应该跟随docker容器的ip地址了,为啥第一次启动的时候ip地址直接就写死到配置里呢?
volumes:
- ob_data:/root/ob
- obd_data:/root/.obd/cluster

services:
  oceanbase:
    image: docker.1ms.run/oceanbase/oceanbase-ce:4.3.5-lts
    hostname: oceanbase
    ports:
      - 12881:2881
    environment:
      - "TZ=Asia/Shanghai"
      - "OB_ROOT_PASSWORD=XXXXXXX"
      - "MODE=normal"
    volumes:
      - ob_data:/root/ob
      - obd_cluster:/root/.obd/cluster

volumes:
  ob_data:
    driver: local
    driver_opts:
      type: none
      device: /data/docker-data/oceanbase/ob
      o: bind
  obd_cluster:
    driver: local
    driver_opts:
      type: none
      device: /data/docker-data/oceanbase/obd/cluster
      o: bind

第二次启动就报错了,这里的ip地址是第一次启动的容器的IP地址,我第二次启动容器ip地址已经随机变了,我在docker-compose中指定ip地址确实可以解决问题,但是如果我是swarm部署不能指定ip地址该怎么办呢?如果是docker部署不应该将IP地址放配置里面去
ceanbase-1 | find obd deploy information, skip configuring…
oceanbase-1 | start ob cluster …
oceanbase-1 | Get local repositories ok
oceanbase-1 | Load cluster param plugin ok
oceanbase-1 | Cluster status check x
oceanbase-1 | [ERROR] OBD-1013: root@172.30.0.2 connect failed: [Errno 110] Connection timed out
oceanbase-1 |
oceanbase-1 | Trace ID: b8884e10-249f-11f0-b6a2-0242ac1f0002
oceanbase-1 | If you want to view detailed obd logs, please run: obd display-trace b8884e10-249f-11f0-b6a2-0242ac1f0002
boot success!|
^Ccanceled

[root@oceanbase ~]# obd display-trace b8884e10-249f-11f0-b6a2-0242ac1f0002
[2025-04-29 10:14:46.392] [DEBUG] - cmd: ['obcluster']
[2025-04-29 10:14:46.393] [DEBUG] - opts: {'servers': None, 'components': None, 'force_delete': None, 'strict_check': None, 'without_parameter': None}
[2025-04-29 10:14:46.394] [DEBUG] - mkdir /root/.obd/lock/
[2025-04-29 10:14:46.395] [DEBUG] - unknown lock mode 
[2025-04-29 10:14:46.396] [DEBUG] - try to get share lock /root/.obd/lock/global
[2025-04-29 10:14:46.396] [DEBUG] - share lock `/root/.obd/lock/global`, count 1
[2025-04-29 10:14:46.397] [DEBUG] - Get Deploy by name
[2025-04-29 10:14:46.398] [DEBUG] - mkdir /root/.obd/cluster/
[2025-04-29 10:14:46.399] [DEBUG] - mkdir /root/.obd/config_parser/
[2025-04-29 10:14:46.401] [DEBUG] - try to get exclusive lock /root/.obd/lock/deploy_obcluster
[2025-04-29 10:14:46.401] [DEBUG] - exclusive lock `/root/.obd/lock/deploy_obcluster`, count 1
[2025-04-29 10:14:46.417] [DEBUG] - Deploy status judge
[2025-04-29 10:14:46.418] [INFO] Get local repositories
[2025-04-29 10:14:46.418] [DEBUG] - mkdir /root/.obd/repository
[2025-04-29 10:14:46.419] [DEBUG] - Get local repository oceanbase-ce-4.3.5.1-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:46.419] [DEBUG] - Search repository oceanbase-ce version: 4.3.5.1, tag: 3a4f23adb7973d6d1d6969bcd9ae108f8c564b66, release: None, package_hash: None
[2025-04-29 10:14:46.419] [DEBUG] - try to get share lock /root/.obd/lock/mirror_and_repo
[2025-04-29 10:14:46.419] [DEBUG] - share lock `/root/.obd/lock/mirror_and_repo`, count 1
[2025-04-29 10:14:46.419] [DEBUG] - mkdir /root/.obd/repository/oceanbase-ce
[2025-04-29 10:14:46.424] [DEBUG] - Found repository oceanbase-ce-4.3.5.1-101000042025031818.el8-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:46.425] [DEBUG] - Get deploy config
[2025-04-29 10:14:46.438] [INFO] Load cluster param plugin
[2025-04-29 10:14:46.438] [DEBUG] - Get local repository oceanbase-ce-4.3.5.1-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:46.438] [DEBUG] - Searching param plugin for components ...
[2025-04-29 10:14:46.438] [DEBUG] - Search param plugin for oceanbase-ce
[2025-04-29 10:14:46.439] [DEBUG] - mkdir /root/.obd/plugins
[2025-04-29 10:14:46.440] [DEBUG] - Found for oceanbase-ce-param-4.3.3.0 for oceanbase-ce-4.3.5.1
[2025-04-29 10:14:46.440] [DEBUG] - Applying oceanbase-ce-param-4.3.3.0 for oceanbase-ce-4.3.5.1-101000042025031818.el8-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:47.525] [INFO] Cluster status check
[2025-04-29 10:14:47.525] [DEBUG] - Searching status template for components ...
[2025-04-29 10:14:47.526] [DEBUG] - mkdir /root/.obd/workflows
[2025-04-29 10:14:47.527] [DEBUG] - Call workflow oceanbase-ce-py_script_workflow_status-0.1 for oceanbase-ce-4.3.5.1-101000042025031818.el8-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:47.527] [DEBUG] - mkdir /root/.obd/mirror
[2025-04-29 10:14:47.528] [DEBUG] - mkdir /root/.obd/mirror/remote
[2025-04-29 10:14:47.528] [DEBUG] - mkdir /root/.obd/mirror/local
[2025-04-29 10:14:47.528] [DEBUG] - mkdir /root/.obd/optimize/
[2025-04-29 10:14:47.528] [DEBUG] - mkdir /root/.obd/tool/
[2025-04-29 10:14:47.529] [DEBUG] - import status
[2025-04-29 10:14:47.529] [DEBUG] - add status ref count to 1
[2025-04-29 10:14:47.529] [DEBUG] - sub status ref count to 0
[2025-04-29 10:14:47.529] [DEBUG] - export status
[2025-04-29 10:14:47.530] [DEBUG] - plugin oceanbase-ce-py_script_workflow_status-0.1 result: True
[2025-04-29 10:14:47.530] [DEBUG] - Found for oceanbase-ce-py_script_workflow_status-0.1 for oceanbase-ce-0.1
[2025-04-29 10:14:47.530] [DEBUG] - share lock `/root/.obd/lock/mirror_and_repo`, count 2
[2025-04-29 10:14:47.535] [DEBUG] - Searching status plugin for components ...
[2025-04-29 10:14:47.535] [DEBUG] - Searching status plugin for oceanbase-ce-4.3.5.1-101000042025031818.el8-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:47.536] [DEBUG] - Found for oceanbase-ce-py_script_status-3.1.0 for oceanbase-ce-4.3.5.1
[2025-04-29 10:14:47.536] [DEBUG] - Call plugin oceanbase-ce-py_script_status-3.1.0 for oceanbase-ce-4.3.5.1-101000042025031818.el8-3a4f23adb7973d6d1d6969bcd9ae108f8c564b66
[2025-04-29 10:14:47.548] [DEBUG] - host: 172.30.0.2, port: 22, user: root, password: ******
[2025-04-29 10:16:57.385] [ERROR] Traceback (most recent call last):
[2025-04-29 10:16:57.385] [ERROR]   File "core.py", line 2230, in start_cluster
[2025-04-29 10:16:57.385] [ERROR]   File "core.py", line 2267, in _start_cluster
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 1251, in cluster_status_check
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 246, in run_workflow
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 288, in run_plugin_template
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 335, in call_plugin
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 321, in _init_call_args
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 410, in get_clients
[2025-04-29 10:16:57.386] [ERROR]   File "core.py", line 429, in get_clients_with_connect_status
[2025-04-29 10:16:57.387] [ERROR]   File "core.py", line 465, in ssh_clients_connect
[2025-04-29 10:16:57.387] [ERROR]   File "_stdio.py", line 1076, in func_wrapper
[2025-04-29 10:16:57.387] [ERROR]   File "ssh.py", line 454, in connect
[2025-04-29 10:16:57.387] [ERROR]   File "_stdio.py", line 1076, in func_wrapper
[2025-04-29 10:16:57.387] [ERROR]   File "ssh.py", line 411, in _login
[2025-04-29 10:16:57.387] [ERROR]   File "paramiko/client.py", line 386, in connect
[2025-04-29 10:16:57.387] [ERROR] TimeoutError: [Errno 110] Connection timed out
[2025-04-29 10:16:57.387] [ERROR] 
[2025-04-29 10:16:57.388] [CRITICAL] [ERROR] OBD-1013: root@172.30.0.2 connect failed: [Errno 110] Connection timed out
[2025-04-29 10:16:57.389] [INFO] [ERROR] OBD-1013: root@172.30.0.2 connect failed: [Errno 110] Connection timed out
[2025-04-29 10:16:57.389] [INFO] 
[2025-04-29 10:16:57.389] [INFO] Trace ID: b8884e10-249f-11f0-b6a2-0242ac1f0002
[2025-04-29 10:16:57.389] [INFO] If you want to view detailed obd logs, please run: obd display-trace b8884e10-249f-11f0-b6a2-0242ac1f0002
[2025-04-29 10:16:57.390] [DEBUG] - share lock /root/.obd/lock/mirror_and_repo release, count 1
[2025-04-29 10:16:57.390] [DEBUG] - share lock /root/.obd/lock/mirror_and_repo release, count 0
[2025-04-29 10:16:57.390] [DEBUG] - unlock /root/.obd/lock/mirror_and_repo
[2025-04-29 10:16:57.390] [DEBUG] - exclusive lock /root/.obd/lock/deploy_obcluster release, count 0
[2025-04-29 10:16:57.391] [DEBUG] - unlock /root/.obd/lock/deploy_obcluster
[2025-04-29 10:16:57.391] [DEBUG] - share lock /root/.obd/lock/global release, count 0
[2025-04-29 10:16:57.391] [DEBUG] - unlock /root/.obd/lock/global

像下面设置了和第一次启动容器一样的ip地址,就不会再报错了,但是我如果是swarm部署的,不能指定ip地址又怎么解决此问题呢?

services:
  oceanbase:
    image: docker.1ms.run/oceanbase/oceanbase-ce:4.3.5-lts
    hostname: oceanbase
    ports:
      - 12881:2881
    environment:
      - "TZ=Asia/Shanghai"
      - "OB_ROOT_PASSWORD=XXXXXXXX"
      - "MODE=normal"
    volumes:
      - ob_data:/root/ob
      - obd_cluster:/root/.obd/cluster
    networks:
      ob-bridge-net:
        ipv4_address: 172.30.0.2

volumes:
  ob_data:
    driver: local
    driver_opts:
      type: none
      device: /data/docker-data/oceanbase/ob
      o: bind
  obd_cluster:
    driver: local
    driver_opts:
      type: none
      device: /data/docker-data/oceanbase/obd/cluster
      o: bind
networks:
  ob-bridge-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.0.0/24
          gateway: 172.30.0.1
oceanbase-1  | find obd deploy information, skip configuring...
oceanbase-1  | start ob cluster ...
oceanbase-1  | Get local repositories ok
oceanbase-1  | Load cluster param plugin ok
oceanbase-1  | Cluster status check ok
oceanbase-1  | [WARN] OBD-1011: (172.30.0.2) The recommended value of fs.aio-max-nr is 1048576 (Current value: 65536)
oceanbase-1  | [WARN] OBD-1007: (172.30.0.2) The recommended number of stack size is unlimited (Current value: 8192)
oceanbase-1  | [WARN] OBD-1017: (172.30.0.2) The value of the "vm.max_map_count" must be within [327600, 1310720] (Current value: 65530, Recommended value: 655360)
oceanbase-1  | [WARN] OBD-1017: (172.30.0.2) The value of the "vm.overcommit_memory" must be 0 (Current value: 1, Recommended value: 0)
oceanbase-1  | [WARN] OBD-1017: (172.30.0.2) The value of the "fs.file-max" must be greater than 6573688 (Current value: 1000000, Recommended value: 6573688)
oceanbase-1  | cluster scenario: htap
oceanbase-1  | Start observer ok
oceanbase-1  | observer program health check ok
oceanbase-1  | Connect to observer ok
oceanbase-1  | obshell start ok
oceanbase-1  | obshell program health check ok
oceanbase-1  | Connect to observer ok
oceanbase-1  | Wait for observer init ok
oceanbase-1  | +----------------------------------------------+
oceanbase-1  | |                 oceanbase-ce                 |
oceanbase-1  | +------------+---------+------+-------+--------+
oceanbase-1  | | ip         | version | port | zone  | status |
oceanbase-1  | +------------+---------+------+-------+--------+
oceanbase-1  | | 172.30.0.2 | 4.3.5.1 | 2881 | zone1 | ACTIVE |
oceanbase-1  | +------------+---------+------+-------+--------+
oceanbase-1  | obclient -h172.30.0.2 -P2881 -uroot@sys -Doceanbase -A
oceanbase-1  | 
oceanbase-1  | cluster unique id: 1e583348-67d0-5f6c-bb2b-5bae4d587f18-1967f4be0e8-01050304
oceanbase-1  | 
oceanbase-1  | obcluster running
oceanbase-1  | Trace ID: aa994d16-24a1-11f0-aec1-0242ac1e0002
oceanbase-1  | If you want to view detailed obd logs, please run: obd display-trace aa994d16-24a1-11f0-aec1-0242ac1e0002
boot success!| 

如果不能固定 ip 地址的话,并且不会用 configserver,那可以直接设置observer 的地址为 127.0.0.1, 这样再重启之后就是一样的地址了, 添加这个环境变量,OB_SERVER_IP=‘127.0.0.1’

1 个赞

可以了,非常感谢问题解决了 :+1:

1 个赞