docker-compose单机版部署失败,storaged端口启动失败

docker-compose.yml如下所示

version: '3.2'
services:
  metad:
    image: vesoft/nebula-metad:nightly
    environment:
      USER: root
    command:
      - --meta_server_addrs=metad:9559
      - --local_ip=metad
      - --ws_ip=metad
      - --port=9559
      - --ws_http_port=19559
      - --data_path=/data/meta
      - --log_dir=/logs
      - --minloglevel=0
    healthcheck:
      test: [ "CMD", "curl", "-sf", "http://metad:19559/status" ]
      interval: 30s
      timeout: 10s
      retries: 3
    ports:
      - "9559:9559"
      - "19559:19559"
      - "19560:19560"
    volumes:
      - ./data/meta:/data/meta
      - ./logs/meta:/logs
    networks:
      - nebula-net
    restart: on-failure
  storaged:
    image: vesoft/nebula-storaged:nightly
    environment:
      USER: root
    command:
      - --meta_server_addrs=metad:9559
      - --local_ip=storaged
      - --ws_ip=storaged
      - --port=9779
      - --ws_http_port=19779
      - --data_path=/data/storaged
      - --log_dir=/logs
      - --minloglevel=0
    depends_on:
      - metad
    healthcheck:
      test: [ "CMD", "curl", "-sf", "http://storaged:19779/status" ]
      interval: 30s
      timeout: 10s
      retries: 3
    ports:
      - "9779:9779"
      - "19779:19779"
      - "19780:19780"
    volumes:
      - ./data/storaged:/data/storaged
      - ./logs/storaged:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE
  graphd:
    image: vesoft/nebula-graphd:nightly
    environment:
      USER: root
    command:
      - --meta_server_addrs=metad:9559
      - --port=9669
      - --local_ip=graphd
      - --ws_ip=graphd
      - --ws_http_port=19669
      - --log_dir=/logs
      - --minloglevel=0
    depends_on:
      - storaged
    healthcheck:
      test: [ "CMD", "curl", "-sf", "http://graphd:19669/status" ]
      interval: 30s
      timeout: 10s
      retries: 3
    ports:
      - "9669:9669"
      - "19669:19669"
      - "19670:19670"
    volumes:
      - ./logs/graph:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE
  console:
    image: vesoft/nebula-console:nightly
    command:
      - sh
      - -c
      - |
        sleep 45 &&
        nebula-console -addr graphd -port 9669 -u root -p nebula -e 'ADD HOSTS "storaged":9779' && sleep 36000
    depends_on:
      - graphd
networks:
  nebula-net:

docker ps显示storaged健康检查失败,进到容器内发现端口并未开启

f6e5047f28d4   vesoft/nebula-graphd:nightly                                  "/usr/local/nebula/b…"   57 minutes ago   Up 16 minutes (healthy)     0.0.0.0:9669->9669/tcp, :::9669->9669/tcp, 0.0.0.0:19669-19670->19669-19670/tcp, :::19669-19670->19669-19670/tcp                            nebula-graphd-1
e29a1f2e38ab   vesoft/nebula-storaged:nightly                                "/usr/local/nebula/b…"   57 minutes ago   Up 16 minutes (unhealthy)   9777-9778/tcp, 0.0.0.0:9779->9779/tcp, :::9779->9779/tcp, 9780/tcp, 0.0.0.0:19779-19780->19779-19780/tcp, :::19779-19780->19779-19780/tcp   nebula-storaged-1
cd61bbf709bb   vesoft/nebula-metad:nightly                                   "/usr/local/nebula/b…"   57 minutes ago   Up 16 minutes (healthy)     0.0.0.0:9559->9559/tcp, :::9559->9559/tcp, 0.0.0.0:19559-19560->19559-19560/tcp, :::19559-19560->19559-19560/tcp, 9560/tcp                  nebula-metad-1

storaged日志 nebula-storaged.ERROR

E20220907 05:29:04.686389     1 MetaClient.cpp:112] Heartbeat failed, status:Machine not existed!
E20220907 05:29:17.690368     1 MetaClient.cpp:112] Heartbeat failed, status:Machine not existed!

storaged日志 nebula-storaged.WARNING

W20220907 05:30:32.710165     1 FileBasedClusterIdMan.cpp:43] Open file failed, error No such file or directory
E20220907 05:30:35.714634     1 MetaClient.cpp:112] Heartbeat failed, status:Machine not existed!

当我尝试进入console容器执行ADD HOSTS命令时候

docker run -i vesoft/nebula-console:nightly /bin/bash

提示我缺少port参数

2022/09/07 05:54:25 Error: argument port is missed!
panic: Error: argument port is missed!

goroutine 1 [running]:
log.Panicf(0x7f1a51, 0x1f, 0x0, 0x0, 0x0)
        /usr/local/go/src/log/log.go:345 +0xc0
main.validateFlags()
        /usr/src/main.go:467 +0x1a5
main.main()
        /usr/src/main.go:503 +0xd8

抱歉,我的命令有问题,应该是
docker run -i vesoft/nebula-console:nightly -addr 10.9.33.129 -port 9669 -u root -p nebula -e ‘ADD HOSTS {自己的host}:9779’

所以更正命令后问题解决了是么~

解决了,目前在考虑生长环境部署问题,因为nebula-console并不能保证ADD HOSTS一定被成功执行

1 个赞

生产环境部署,建议专门准备脚本,调用 nebula 的 client 完成相关动作,这样功能上更加灵活一些。docker-compose 不太适合集群部署。

docker-compose 不是为了生产准备的,只是测试,体验用的哈

谢谢,不过因为公司产品是toB单机环境,各种组件都是由docker和docker-compose管理,所以使用docker-compose有一定的必要性。

了解,单机的话,可以考虑去掉 console 的容器,从 studio,用户远端 console 去一次性 ADD HOSTS

感谢建议,不知道在程序启动时用客户端比如golang去执行一次注册是否可行,虽然我知道这个需要自己去看客户端api文档,但是时间有点紧,非常抱歉。

是可行的,golang 的 graph client 发 ADD HOSTS 的 query,或者 golang 用 subprocess 调用 console 的二进制都行。

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。