Nebula Graph 2.0 rpm 安装后报‘Meta Data Path should not empty’

多半你是自己的配置或者环境有问题,你跟其他两个机器对比下

我已经从另外的机器上复制一样的配置过,还是不行。那这个data/storage/nebula是在哪个配置文件配置的你? nebula-storaged.conf,还是 nebula-storaged.conf ?

可以卸载后重新安装吗?

# rpm
$ rpm -qa|grep nebula
nebula-graph-1.0.0-1.x86_64
$ sudo rpm -e nebula-graph-1.0.0-1.x86_64

$ rpm -ivh nebula-*.rpm

@pandasheeps 已经卡主在这里,有什么方法继续排查问题吗?再不解决,月底验证不完,不能跟领导汇报,说服不了领导采购。

另外有两问题:
1.HTTP service ip 这个需要修改为本地机器的IP吗?
# HTTP service ip
–ws_ip=0.0.0.0
2. etc 目录下面有 nebula-storaged.conf 与 nebula-storaged.conf.default 两份配置文件。Nebula实际上是用那份配置。目前我修改的是nebula-storaged.conf

  1. HTTP service ip 不需要修改啊
  2. 实际用的是nebula-storaged.conf
  3. 如果采购意向的话,可以直接找我们运营,可以先poc。这样应该效率更高

怎样联系你们的运营?

@steam

1 个赞

重新安装后,78的机器可以起来了,另外两台的storage没有起来。

meta
–data_path=/data01/nebula/data/meta

storage
–data_path=/data01/nebula/data/storage

nebula-storaged.ERROR
E0312 14:21:08.542652 43383 MetaClient.cpp:60] Heartbeat failed, status:RPC failure in MetaClient: N6apache6thrift9transport19TTransportExceptionE: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused
E0312 14:21:12.549070 43383 MetaClient.cpp:60] Heartbeat failed, status:wrong cluster!

你是卸载之后重新安装的吗?启动集群之前把 /usr/local/nebula/ 下的 pids/* 和 cluster.id 清理一下:

$ rm -rf /usr/local/nebula/pids/*  /usr/local/nebula/cluster.id

然后看一下每个 storaged 的 conf 中配置的 metad 的端口和ip 是否正确,2.0 支持直接配置 DNS 域名,比如 metad0:9559,metad1:9559,metad2:9559 这样会不容易出错

按这样的方法,三台机器storage 正常 show hosts storage 都显示oneline了。

show hosts meta, 只有118这台机器oneline
118" | 9559 | “ONLINE” | “META” | “09270f5”

78机器nebula-metad.ERROR
E0312 14:56:50.597971 52239 Host.cpp:390] [Port: 9560, Space: 0, Part: 0] [Host: 100.100.22.118:9560] Failed to append logs to the host (Err: -9)

看一下 meta 自身 conf 的配置是否正确,包括 local_ip,data_path 等,再检查一下 data_path 指向的目录的磁盘空间和权限。如果都没问题,并且还是无法启动,就清理一下 /usr/local/nebula/data/meta 下的数据再重启。

再问一下 meta 是安装部署了几个副本?

data_path 需要什么样的权限?

需要这个目录让 nebula 的进程能够读写

有读写权限。meta有3个副本,目前只有118这个起来了,87,169两个没有起来
drwxr-xr-x

没有起来是执行完 nebula.service start metad 之后进程直接退出了,还是进程在,但是 show hosts 列表中看不到它?

如果直接退出了,看看 /usr/local/nebula/logs/nebula-metad.INFO 中有什么信息输出?

sudo /usr/local/nebula/scripts/nebula.service status all

[WARN] The maximum files allowed to open might be too few: 1024
[INFO] nebula-metad: Running as 88335, Listening on 9559
[INFO] nebula-graphd: Running as 88420, Listening on 9669
[INFO] nebula-storaged: Running as 88468, Listening on 9779

(root@nebula) [(none)]> show hosts
±-----------------±----------±----------±-------------±---------------------±-----------------------+
| Host | Port | Status | Leader count | Leader distribution | Partition distribution |
±-----------------±----------±----------±-------------±---------------------±-----------------------+
| “XXX.XXX.XXX.87” | 9779 | “ONLINE” | 0 | “No valid partition” | “No valid partition” |
±-----------------±----------±----------±-------------±---------------------±-----------------------+
| “XXX.XXX.XXX.169” | 9779 | “OFFLINE” | 0 | “No valid partition” | “No valid partition” |
±-----------------±----------±----------±-------------±---------------------±-----------------------+
| “Total” | EMPTY | EMPTY | 0 | EMPTY | EMPTY |
±-----------------±----------±----------±-------------±---------------------±-----------------------+

show hosts graph
±----------±-----±---------±--------±-------------+
| Host | Port | Status | Role | Git Info Sha |
±----------±-----±---------±--------±-------------+
| “0.0.0.0” | 9669 | “ONLINE” | “GRAPH” | “5713b46” |
±----------±-----±---------±--------±-------------+

(root@nebula) [(none)]> show hosts storage
±-----------------±-----±----------±----------±-------------+
| Host | Port | Status | Role | Git Info Sha |
±-----------------±-----±----------±----------±-------------+
| “XXX.XXX.XXX.87” | 9779 | “ONLINE” | “STORAGE” | “09270f5” |
±-----------------±-----±----------±----------±-------------+
| “XXX.XXX.XXX.169” | 9779 | “OFFLINE” | “STORAGE” | “09270f5” |
±-----------------±-----±----------±----------±-------------+

show hosts meta
±-----------------±-----±---------±-------±-------------+
| Host | Port | Status | Role | Git Info Sha |
±-----------------±-----±---------±-------±-------------+
| “XXX.XXX.XXX.169” | 9559 | “ONLINE” | “META” | “09270f5” |
±-----------------±-----±---------±-------±-------------+
| “XXX.XXX.XXX.87” | 9559 | “ONLINE” | “META” | “09270f5” |
±-----------------±-----±---------±-------±-------------+
| “XXX.XXX.XXX.118” | 9559 | “ONLINE” | “META” | “09270f5” |
±-----------------±-----±---------±-------±-------------+

这里 warn 需要处理一下,具体的文档可以参考这里

从上面的输出看,metad 是正常启动了,但是 storaged 只起来一台,你要确定 169/118 上的 storaged 没起来的原因,可以看看日志输出

我把三台机器都执行了
rm -rf /usr/local/nebula/pids/* /usr/local/nebula/cluster.id
rm -rf /data01/nebula/data/

目前三台机器的 show hosts meta 和 show hosts storage都正常,都有3个节点是online的。

但是graph还有问题

show hosts graph
±----------±-----±---------±--------±-------------+
| Host | Port | Status | Role | Git Info Sha |
±----------±-----±---------±--------±-------------+
| “0.0.0.0” | 9669 | “ONLINE” | “GRAPH” | “5713b46” |
±----------±-----±---------±--------±-------------+

nebula-graphd.ERROR
E0312 16:54:14.075538 22274 MetaClient.cpp:581] Send request to [100.100.23.87:9559], exceed retry limit
E0312 16:54:14.075878 22223 MetaClient.cpp:60] Heartbeat failed, status:RPC failure in MetaClient: N6apache6thrift9transport19TTransportExceptionE: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused

graphd 有问题是说,现在 console 请求不能正确返回吗?看你的显示已经正常了呀,错误日志里的消息有可能是刚启动时输出的,那时候 metad 可能还没启动好。如果现在请求正常,就不先不用关心上面的输出

show hosts graph
只显示一个host, 这样正常吗?

show hosts graph
±----------±-----±---------±--------±-------------+
| Host | Port | Status | Role | Git Info Sha |
±----------±-----±---------±--------±-------------+
| “0.0.0.0” | 9669 | “ONLINE” | “GRAPH” | “5713b46” |
±----------±-----±---------±--------±-------------+

show spaces
±---------+
| Name |
±---------+
| “eureka” |
±---------+