-
nebula 版本:2.0.0 rc
-
部署方式 Docker
services:
metad0:
image: vesoft/nebula-metad:v2-nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=metad0:9559
- --local_ip=metad0
- --ws_ip=metad0
- --port=9559
- --ws_http_port=19559
- --data_path=/data/meta
- --log_dir=/logs
- --v=0
- --minloglevel=0
ports:
- 9559
- 19559
- 19560
volumes:
- ./data/meta0:/data/meta
- ./logs/meta0:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
storaged0:
image: vesoft/nebula-storaged:v2-nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=metad0:9559
- --local_ip=storaged0
- --ws_ip=storaged0
- --port=9779
- --ws_http_port=19779
- --data_path=/data/storage
- --log_dir=/logs
- --v=0
- --minloglevel=0
depends_on:
- metad0
- metad1
- metad2
healthcheck:
test: ["CMD", "curl", "-sf", "http://storaged0:19779/status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
ports:
- 9779
- 19779
- 19780
volumes:
- ./data/storage0:/data/storage
- ./logs/storage0:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
graphd:
image: vesoft/nebula-graphd:v2-nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=metad0:9559
- --port=9669
- --ws_ip=graphd
- --ws_http_port=19669
- --log_dir=/logs
- --v=0
- --minloglevel=0
depends_on:
- metad0
- metad1
- metad2
healthcheck:
test: ["CMD", "curl", "-sf", "http://graphd:19669/status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
ports:
- "9669:9669"
- 19669
- 19670
volumes:
- ./logs/graph:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
现在只部署了一个节点, metad 和 storaged 都跑起来了,但是 graphd 显示:
Failed to start web service: 99failed to bind to async server socket: 10.43.90.185:19669: Cannot assign requested address
已经查了端口,没有被占用。
yee
2
首先这份配置文件的这里有问题:
depends_on:
- metad0
- metad1
- metad2
按道理,storage 和 graph 都起不来才合理,需要把上面的 metad1
和 metad2
删除。
我没有配置这个 depends_on,它就起来了。
但是我现在有另一个问题,就是进到 nebula-console 里面不能使用 “CREATE SPACE test;" 语句,会报这个错:
这是我 Linux 内核版本:
yee
5
看起来是 nebula-console 跟 nebula-graph 的版本没对应的问题,如果 nebula 的镜像用的 nightly,nebula-console 最好也用 nightly 的镜像或者使用最新的 master 分支的代码编译。
yee
8
那麻烦你验证一下,通过 nebula-console 连接 graphd 之后,创建 space 是否会导致 graphd 的容器重启?能否查看一下对应 graphd 的相关日志,看看是否有什么 Error 信息?
我现在感觉像是 meta0 里的19559 这个 IP 端口连不上
yee
10
检查一下 19559 这个端口是否有被其他进程占用?
yee
12
这个应该是加载 job 数据时除了错,忽略这个错误的话,所有的服务都能正常启动了吗?再用 console 连接并创建 space 还会不会报错?
还是连不上,我觉得我可能是 IP 和端口写错了,我想问下 local ip 和 ws_ip 一般都写什么呀,要区分内网外网吗
yee
14
local ip 写你的 service 的 name,比如 metad0, ws_ip 写 0.0.0.0
我改完之后现在是这个错:
[ERROR (-8)]: RPC failure in MetaClient: N6apache6thrift9transport19TTransportExceptionE: Channel is !good()
我用 telnet ping 了之后都可以连通。
yee
17
能否执行下 docker-compose ps
看看是否所有的 nebula 的容器进程都正常?错误是 graphd 连不上 metad,需要确认所有的容器进程都是 healthy 的之后再尝试操作 console .
这个是 rancher 上显示的状态,都是 running 状态的。
yee
19
那你用 ranker 部署 nebula 的时候,直接部署的 metad/storaged 为 POD 类型?不是以 statefulset 类似的对象部署的?
yee
21
如果是 pod 的话,你需要将对应 metad0 的端口暴露出来,不然外面的 pod 是直接访问不了这个 pod 的呀。
当然暴露端口的方式可能有多种,比如 NodePort 或者其他支持 tcp 协议转发的组件都可以。如果有需要可以让 @kevin.qiao 来更详细的回答你。
这样暴露可以吗
然后我的 graphd 和 storaged 在写配置文件的时候,是不是应该用 metad0 对应的外网 IP + 暴露出来的端口号?那它们自己的 local ip 和 ws ip 还是写 graphd 和 0.0.0.0,port 还是不变吗?比如这样:
metad0:
image: vesoft/nebula-metad:v2-nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=外网IP:32716
- --local_ip=外网IP
- --ws_ip=0.0.0.0
- --port=32716
- --ws_http_port=32717
- --data_path=/data/meta
- --log_dir=/logs
- --v=0
- --minloglevel=0
healthcheck:
test: ["CMD", "curl", "-sf", "http://外网IP:32717/status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
ports:
- 9559
- 19559
- 19560
volumes:
- ./data/meta0:/data/meta
- ./logs/meta0:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
storaged0:
image: vesoft/nebula-storaged:v2-nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=外网IP:32716
- --local_ip=storaged
- --ws_ip=0.0.0.0
- --port=9779
- --ws_http_port=19779
- --data_path=/data/storage
- --log_dir=/logs
- --v=0
- --minloglevel=0
depends_on:
- metad0
- metad1
- metad2
healthcheck:
test: ["CMD", "curl", "-sf", "http://storaged0:19779/status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
ports:
- 9779
- 19779
- 19780
volumes:
- ./data/storage0:/data/storage
- ./logs/storage0:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
graphd:
image: vesoft/nebula-graphd:v2-nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=外网IP:32716
- --port=9669
- --ws_ip=0.0.0.0
- --ws_http_port=19669
- --log_dir=/logs
- --v=0
- --minloglevel=0
depends_on:
- metad0
- metad1
- metad2
healthcheck:
test: ["CMD", "curl", "-sf", "http://graphd:19669/status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
ports:
- "9669:9669"
- 19669
- 19670
volumes:
- ./logs/graph:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
嗯嗯,麻烦详细回答一下~我卡在这里很久了 ~ 谢谢啦~~