部署Raft listener
全文索引的数据是异步写入Elasticsearch集群的。流程是通过Storage服务的 Raft listener(简称listener)这个单独部署的进程,从Storage服务读取数据,然后将它们写入Elasticsearch集群。
前提条件
已经了解全文索引的使用限制。
准备一台或者多台额外的服务器,来部署Raft listener。
注意事项
请保证Nebula 各组件(Metad、Storaged、Graphd、listener)有相同的版本。
只能为一个图空间“一次性添加所有的 listener 机器”。尝试向已经存在有 listener 的图空间再添加新 listener 会失败。因此,需在一个命令语句里完整地添加全部的 listener。
部署流程
第一步:安装Storage服务
listener进程与storaged进程使用相同的二进制文件,但是二者配置文件不同,进程使用端口也不同,可以在所有需要部署listener的服务器上都安装Nebula Graph,但是仅使用Storage服务。详情请参见使用RPM或DEB安装包安装Nebula Graph。
第二步:准备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 | 部件管理器类型,可选值为memory 和meta 。 |
rocksdb_batch_size | 4096 | 批处理操作的默认保留字节。 |
rocksdb_block_cache | 4 | BlockBasedTable的默认块缓存大小。单位:兆字节(MB)。 |
engine_type | rocksdb | 存储引擎类型,例如rocksdb 、memory 等。 |
part_type | simple | 部件类型,例如simple 、consensus 等。 |
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 到 Nebula Graph 集群
用命令行连接到Nebula Graph,然后执行USE
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 集群中自动创建,用户可以开始进行全文搜索。详情请参见全文搜索。
最后更新: October 27, 2021