跳转至

配置管理

NebulaGraph 基于 gflags 库打造了系统配置,多数配置项都是其中的 flags。 NebulaGraph 服务启动时,默认会从配置文件中获取配置信息。对于文件中没有的配置项,系统使用默认值。

Note

  • 由于配置项多且可能随着 NebulaGraph 的开发发生变化,文档不会介绍所有配置项。按下文说明可在命令行获取配置项的详细说明。
  • 不建议修改文档未介绍的配置项,除非已经熟悉源代码并完全了解配置项的作用。

历史版本兼容性

1.x 版本的文档提供了使用 CONFIGS 命令修改缓存中配置的方法,但在生产环境中使用该方法容易导致集群配置与本地配置文件不一致。因此,自 2.x 版本开始文档中将不再介绍 CONFIGS 命令的使用方法。

查看配置项列表与说明

使用以下命令获取二进制文件对应服务的所有配置项信息:

<binary> --help

例如:

# 获取 Meta 配置项的帮助信息
$ /usr/local/nebula/bin/nebula-metad  --help

# 获取 Graph 配置项的帮助信息
$ /usr/local/nebula/bin/nebula-graphd --help

# 获取 Storage 配置项的帮助信息
$ /usr/local/nebula/bin/nebula-storaged --help

以上示例使用了二进制文件的默认存储路径/usr/local/nebula/bin/。如果修改了 NebulaGraph 安装路径,使用实际路径查询配置项信息。

查看运行配置

使用curl命令获取运行中的配置项的值,即 NebulaGraph 的运行配置。

例如:

# 获取 Meta 服务的运行配置
curl 127.0.0.1:19559/flags

# 获取 Graph 服务的运行配置
curl 127.0.0.1:19669/flags

# 获取 Storage 服务的运行配置
curl 127.0.0.1:19779/flags

使用-s或者--silent参数可以隐藏进度条和错误信息。例如:

curl -s 127.0.0.1:19559/flags

Note

实际环境中需使用真实的 IP(或主机名)取代以上示例中的127.0.0.1

配置文件简介

源码、RPM/DEB、TAR 包集群的配置文件

NebulaGraph 为每个服务都提供了两份初始配置文件<service_name>.conf.default<service_name>.conf.production,方便用户在不同场景中使用。使用源码和 RPM/DEB 安装集群的配置文件的默认路径为/usr/local/nebula/etc/;使用 TAR 包安装集群的配置文件路径为<install_path>/<tar_package_directory>/etcTAR 包的安装路径。

初始配置文件中的配置值仅供参考,使用时可根据实际需求调整。如需使用初始配置文件,从上述两个文件选择其一,删除后缀.default.production使其生效。

Note

为确保服务的可用性,同类服务的配置建议保持一致,本机local_ip除外。例如,一个 NebulaGraph 集群中部署了 3 个 Storage 服务器,3 者除local_ip外的其它配置建议都相同。

下表列出了各服务对应的初始配置文件。

NebulaGraph 服务 初始配置文件 配置说明
Meta nebula-metad.conf.defaultnebula-metad.conf.production Meta 服务配置
Graph nebula-graphd.conf.defaultnebula-graphd.conf.production Graph 服务配置
Storage nebula-storaged.conf.defaultnebula-storaged.conf.production Storage 服务配置

所有服务的初始配置文件中都包含local_config参数,预设值为true,表示 NebulaGraph 服务会从其配置文件获取配置并启动。

Caution

不建议修改local_config的值为false。修改后 NebulaGraph 服务启动后会先尝试从 Meta 服务获取缓存的配置信息,可能导致集群配置不一致,造成未知风险。

Docker Compose 集群的配置文件

对于使用 Docker Compose 创建的集群,集群的配置文件的默认路径为<install_path>/nebula-docker-compose/docker-compose.yaml。配置文件中的command下面的参数为各服务的启动参数。

NebulaGraph Operator 集群的配置文件

对于通过 NebulaGraph Operator 使用 Kubectl 方式创建的集群,集群的配置文件的路径为用户创建集群 YAML 文件的路径。用户可通过配置文件中的spec.{graphd|storaged|metad}.config参数修改集群各个服务的相关配置。

Note

通过 Helm 部署的集群,暂不支持修改集群服务的相关配置。

关于 NebulaGraph 的配置相关的更多信息,参见 NebulaGraph Config

修改配置

用户可以在配置文件中修改 NebulaGraph 的配置,或使用命令动态修改配置。

Caution

同时使用两种方式修改配置会导致配置信息失去统一的管理方式,可能造成配置混乱。建议仅使用配置文件管理配置,或在通过命令动态更新配置后对配置文件做相同的修改,以保证一致性。

在配置文件中修改配置

默认情况下,所有 NebulaGraph 服务从配置文件获取配置。用户可以按照以下步骤修改配置并使其生效。

  • 针对使用源码、RPM/DEB、TAR 包安装的集群:

    1. 使用文本编辑器修改目标服务的配置文件并保存。

    2. 选择合适的时间重启所有 NebulaGraph 服务使修改生效。

  • 针对使用 Docker Compose 安装的集群:

    1. 在文件<install_path>/nebula-docker-compose/docker-compose.yaml中,修改服务配置。
    2. 在目录nebula-docker-compose内执行命令docker-compose up -d重启涉及配置变化的服务。

使用命令动态修改配置

用户可以通过curl命令动态修改 NebulaGraph 服务的配置。例如,修改 Storage 服务的wal_ttl参数为600,命令如下:

curl -X PUT -H "Content-Type: application/json" -d'{"wal_ttl":"600"}' -s "http://192.168.15.6:19779/flags"

其中,{"wal_ttl":"600"}为待修改的配置参数及其值;192.168.15.6:19779为 Storage 服务的 IP 地址和 HTTP 端口号。

Caution

  • 动态修改配置功能仅适用于原型验证和测试环境,不建议在生产环境中使用。因为当local_config值设置为true时,动态修改的配置不会持久化,重启服务后配置会恢复为初始配置。
  • 仅支持动态修改部分配置参数,具体支持的参数列表,参见各服务配置中是否支持运行时动态修改的描述。

最后更新: April 15, 2024