跳转至

部署 Raft listener

全文索引的数据是异步写入 Elasticsearch 集群的。流程是通过 Storage 服务的 Raft listener(简称 listener)这个单独部署的进程,从 Storage 服务读取数据,然后将它们写入 Elasticsearch 集群。

前提条件

  • 准备一台或者多台额外的服务器,来部署 Raft listener。

注意事项

  • 请保证 NebulaGraph 各组件(Metad、Storaged、Graphd、listener)有相同的版本。
  • 只能为一个图空间“一次性添加所有的 listener 机器”。尝试向已经存在有 listener 的图空间再添加新 listener 会失败。因此,需在一个命令语句里完整地添加全部的 listener。

部署流程

第一步:安装 Storage 服务

listener 进程与 storaged 进程使用相同的二进制文件,但是二者配置文件不同,进程使用端口也不同,可以在所有需要部署 listener 的服务器上都安装 NebulaGraph,但是仅使用 Storage 服务。详情请参见使用 RPM 或 DEB 安装包安装 NebulaGraph

第二步:准备 listener 的配置文件

用户必须在需要部署 listener 的机器上准备对应的配置文件,文件名称必须为nebula-storaged-listener.conf,并保存在安装路径下的etc目录内。用户可以参考提供的模板。注意去掉文件后缀.production

大部分配置与 Storage 服务的配置文件相同,本文仅介绍差异部分。

名称 预设值 说明
daemonize true 是否启动守护进程。
pid_file pids_listener/nebula-storaged.pid 记录进程 ID 的文件。
meta_server_addrs - 全部 Meta 服务的 IP 地址和端口。多个 Meta 服务用英文逗号(,)分隔。
local_ip - listener 服务的本地 IP 地址。
port - listener 服务的 RPC 守护进程监听端口。
heartbeat_interval_secs 10 Meta 服务的心跳间隔。单位:秒(s)。
listener_path data/listener listener 的 WAL 目录。只允许使用一个目录。
data_path data 出于兼容性考虑,可以忽略此参数。填充一个默认值data
part_man_type memory 部件管理器类型,可选值为memorymeta
rocksdb_batch_size 4096 批处理操作的默认保留字节。
rocksdb_block_cache 4 BlockBasedTable 的默认块缓存大小。单位:兆字节(MB)。
engine_type rocksdb 存储引擎类型,例如rocksdbmemory等。
part_type simple 部件类型,例如simpleconsensus等。

Note

在配置文件中请使用真实的(listener 机器)IP 地址替换127.0.0.1

第三步:启动 listener

执行如下命令启动启动 listener:

./bin/nebula-storaged --flagfile <listener_config_path>/nebula-storaged-listener.conf

listener_config_path是存放 listener 配置文件的路径。

第四步:添加 listener 到 NebulaGraph 集群

用命令行连接到 NebulaGraph,然后执行 USE <space> 进入需要创建全文索引的图空间。然后执行如下命令添加 listener:

ADD LISTENER ELASTICSEARCH <listener_ip:port> [,<listener_ip:port>, ...]

Warning

listener 必须使用真实的 IP 地址。

请在一个语句里完整地添加所有 listener。例如:

nebula> ADD LISTENER ELASTICSEARCH 192.168.8.5:9789,192.168.8.6:9789;

查看 listener

执行SHOW LISTENER语句可以列出所有的 listener。

示例

nebula> SHOW LISTENER;
+--------+-----------------+-----------------------+----------+
| PartId | Type            | Host                  | Status   |
+--------+-----------------+-----------------------+----------+
| 1      | "ELASTICSEARCH" | "[192.168.8.5:46780]" | "ONLINE" |
| 2      | "ELASTICSEARCH" | "[192.168.8.5:46780]" | "ONLINE" |
| 3      | "ELASTICSEARCH" | "[192.168.8.5:46780]" | "ONLINE" |
+--------+-----------------+-----------------------+----------+

删除 listener

执行REMOVE LISTENER ELASTICSEARCH语句可以删除图空间的所有 listener。

示例

nebula> REMOVE LISTENER ELASTICSEARCH;

Danger

删除 listener 后,将不能重新添加 listener,因此也无法继续向 ES 集群同步,文本索引数据将不完整。如果确实需要,只能重新创建图空间。

下一步

部署全文索引和 listener 后,全文索引会在 Elasticsearch 集群中自动创建,用户可以开始进行全文搜索。详情请参见全文搜索


最后更新: February 3, 2023