更新 NebulaGraph 集群的配置¶
NebulaGraph 集群中 Meta、Storage、Graph 服务都有各自的默认配置。NebulaGraph Operator 支持自定义集群服务的配置。本文介绍如何修改 NebulaGraph 集群的默认配置。
Note
暂不支持通过 Helm 自定义 NebulaGraph 集群的配置参数。
前提条件¶
已使用 NebulaGraph Operator 创建一个集群。具体步骤,参见创建 NebulaGraph 集群。
配置方式¶
集群服务的配置在创建集群的 YAML 文件中,通过spec.<metad|graphd|storaged>.config
参数指定。NebulaGraph Operator 会将config
中的配置写入到对应服务的 ConfigMap 中,然后在服务启动时将 ConfigMap 挂载到服务的配置文件目录/usr/local/nebula/etc/
下。
config
结构如下:
Config map[string]string `json:"config,omitempty"`
例如,修改 Graph 服务的enable_authorize
参数的配置,可以在创建集群时或者之后,通过spec.graphd.config
参数指定。
apiVersion: apps.nebula-graph.io/v1alpha1
kind: NebulaCluster
metadata:
name: nebula
namespace: default
spec:
graphd:
...
config: // 为 Graph 服务自定义参数。
"enable_authorize": "true" // 启用授权。默认值为 false。
...
如果需要为 Meta 服务和 Storage 服务配置config
,则在spec.metad.config
和spec.storaged.config
中添加对应的配置项。
可配置的参数¶
在config
字段下可配置的参数详情,请分别参见:
参数更新与 Pod 重启规则¶
集群服务的配置参数分为两类:一类是必需重启服务才能更新的配置;另一类是可以在服务运行时动态更新的配置,在服务运行时更新的配置不会被持久化,重启服务后,配置会恢复到配置文件中的值。
关于服务的配置参数是否支持运行时动态更新,请查看上述服务配置参数详情页各个表格中是否支持运行时动态修改一列;或者查看 Dynamic runtime flags。
在更新集群服务的配置时,需要注意以下几点:
- 如果
config
下更新的参数均为支持运行时动态更新的参数,则不会触发服务 Pod 的重启,并且配置参数的更新不会被持久化。 - 如果
config
下更新的参数包含一个或多个不支持运行时动态更新的参数,则会触发服务 Pod 的重启,并且只有不支持运行时动态参数的更新才会被持久化。
Note
若要在集群运行时动态修改参数配置且不触发 Pod 重启,请确保当前修改的参数全部支持运行时动态修改。
自定义端口配置¶
本示例演示如何自定义 Meta、Storage、Graph 服务的端口配置。
可以在config
字段中添加port
和ws_http_port
参数,从而配置自定义的端口。这两个参数的详细信息,请参见Meta 服务配置参数、Storage 服务配置参数、Graph 服务配置参数的 networking 配置一节。
Note
- 自定义
port
和ws_http_port
参数配置后,会触发 Pod 重启,并在重启后生效。 - 在集群启动后,不建议修改
port
参数。
-
修改集群配置文件。
- 打开集群配置文件。
kubectl edit nc nebula
- 修改配置文件,添加
config
字段,配置自定义端口。
apiVersion: apps.nebula-graph.io/v1alpha1 kind: NebulaCluster metadata: name: nebula namespace: default spec: graphd: config: # 为 Graph 服务自定义端口配置。 port: "3669" ws_http_port: "8080" resources: requests: cpu: "200m" memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 1 image: vesoft/nebula-graphd version: v3.8.0 metad: config: # 为 Meta 服务自定义端口配置。 ws_http_port: 8081 resources: requests: cpu: "300m" memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 1 image: vesoft/nebula-metad version: v3.8.0 dataVolumeClaim: resources: requests: storage: 2Gi storageClassName: local-path storaged: config: # 为 Storage 服务自定义端口配置。 ws_http_port: 8082 resources: requests: cpu: "300m" memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 1 image: vesoft/nebula-storaged version: v3.8.0 dataVolumeClaims: - resources: requests: storage: 2Gi storageClassName: local-path enableAutoBalance: true reference: name: statefulsets.apps version: v1 schedulerName: default-scheduler imagePullPolicy: IfNotPresent imagePullSecrets: - name: nebula-image enablePVReclaim: true topologySpreadConstraints: - topologyKey: kubernetes.io/hostname whenUnsatisfiable: "ScheduleAnyway"
-
保存配置文件。
配置文件保存后,NebulaGraph Operator 会自动更新集群配置。
- 按
Esc
键退出编辑模式。 - 输入
:wq
保存配置文件并退出。
- 按
-
验证配置已经生效。
kubectl get svc
返回示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nebula-graphd-headless ClusterIP None <none> 3669/TCP,8080/TCP 10m nebula-graphd-svc ClusterIP 10.102.13.115 <none> 3669/TCP,8080/TCP 10m nebula-metad-headless ClusterIP None <none> 9559/TCP,8081/TCP 11m nebula-storaged-headless ClusterIP None <none> 9779/TCP,8082/TCP,9778/TCP 11m
可以看到,Graph 服务的 RPC 守护进程监听端口已经变为
3669
(默认9669
),HTTP 端口已经变为8080
(默认19669
);Meta 服务的 HTTP 端口已经变为8081
(默认19559
);Storage 服务的 HTTP 端口已经变为8082
(默认19779
)。