目录

1、集群架构:

2、服务器:

3、修改主机名称:

4、搭建docker环境:

5、搭建docker私有镜像仓库:

6、搭建docker的overlay网络:

7、创建overlay网络:

8、准备meta服务配置文件:

(1)获取meta默认配置文件:

(2)配置文件使用方式:

(3)修改meta配置文件参数:

① 增加参数local_config:

② 修改参数meta_server_addrs:

③ 修改参数local_ip:

④ 修改参数data_path:

⑤ 修改参数log_dir:

⑥ 默认参数ws_ip:

⑦ 默认参数port:

⑧ 默认参数ws_http_port:

⑨ 默认参数v:

⑩ 默认参数minloglevel:

9、准备graph服务配置文件:

(1)获取graph默认配置文件:

(2)配置文件使用方式:

(3)修改graph配置文件参数:

① 增加参数增加参数local_config:

② 修改参数meta_server_addrs:

③ 修改参数local_ip:

④ 修改参数log_dir:

⑤ 默认参数ws_ip:

⑥ 默认参数port:

⑦ 默认参数ws_http_port:

⑧ 默认参数v:

⑨ 默认参数minloglevel:

10、准备storage服务配置文件:

(1)获取storage默认配置文件:

(2)配置文件使用方式:

(3)修改storage配置文件参数:

① 增加参数local_config:

② 修改参数meta_server_addrs:

③ 修改参数local_ip:

④ 修改参数data_path:

⑤ 默认参数ws_ip:

⑥ 默认参数port:

⑦ 默认参数ws_http_port:

⑧ 默认参数log_dir:

⑨ 默认参数v:

⑩ 默认参数minloglevel:

11、构建nebula容器:

(1)下载nebula镜像:

① 下载meta镜像:

② 下载graph镜像:

③ 下载storage镜像:

(2)创建nebula持久化目录:

① 创建meta持久化目录:

② 创建graph持久化目录:

③ 创建storage持久化目录:

(3)上传各服务配置文件:

① 上传meta配置文件:

② 上传graph配置文件:

③ 上传storage配置文件:

(4)编写nebula容器构建命令:

① 编写meta容器构建命令:

② 编写graph容器构建命令:

③ 编写storage容器构建命令:

(5)构建nebula容器:

① 构建meta容器:

② 构建graph容器:

③ 构建storage容器:

12、操作集群:

(1)启动集群:

① 启动meta服务:

② 启动graph服务:

③ 启动storage服务:

(2)停止集群:

① 停止meta服务:

② 停止graph服务:

③ 停止storage服务:

(3)重启集群:

① 重启meta服务:

② 重启graph服务:

③ 重启storage服务:

13、检查集群:

14、监控指标:

(1)监控指标说明:

(2)监控指标查询:

(3)监控指标示例:

① 查询meta指标:

② 查询graph指标:

③ 查询storage指标:

15、发现bug:


1、集群架构:

Nebula集群分为测试集群、生产集群,不同环境的集群对应的服务数量不同,大致如下:

集群类别

Meta服务

Graph服务

Storage服务

测试集群

1

>=1

>=1

生产集群

3

>=3

>=3

测试环境一般是3台服务器,可以按照如下配置搭建:

服务器

Meta服务

Graph服务

Storage服务

服务器A

1

1

1

服务器B

1

1

服务器C

1

1

生产环境一般是5台服务器,可以按照如下配置搭建:

服务器

Meta服务

Graph服务

Storage服务

服务器A

1

1

1

服务器B

1

1

1

服务器C

1

1

1

服务器D

1

1

服务器E

1

1

2、服务器:

本地虚拟机采用4台服务器,由于使用docker,所以服务器内核要求在3.8以上,建议3.10及以上,搭建测试集群:

服务器IP

Etcd端口号

Nebula集群节点

Meta端口号

Graph端口号

Storage端口号

192.168.137.111

2379

192.168.137.112

9559

9669

9779

192.168.137.113

9669

9779

192.168.137.114

9669

9779

3、修改主机名称:

在集群所有节点上,进行如下操作:

修改/etc/hostname文件,修改对应的名称为主机名称,主机名称不能重复。

然后重新启动服务器。

4、搭建docker环境:

在集群所有节点上,进行如下操作:

安装docker环境,操作步骤可见:

通过yum安装docker操作步骤:https://blog.csdn.net/LSY_CSDN_/article/details/116889227

无网环境安装docker操作步骤:https://blog.csdn.net/LSY_CSDN_/article/details/116889325

5、搭建docker私有镜像仓库:

生产环境建议搭建docker私有镜像仓库,可以使用docker通过registry镜像搭建私有仓库或者使用harbor搭建私有仓库。

本地测试就不搭建私有镜像仓库了。

搭建registry私有镜像仓库操作步骤https://blog.csdn.net/LSY_CSDN_/article/details/118597226

搭建harbor私有镜像仓库操作步骤:https://blog.csdn.net/LSY_CSDN_/article/details/118814588

6、搭建docker的overlay网络:

在etcd服务器上进行如下操作:

搭建docker的overlay网络操作步骤:https://blog.csdn.net/LSY_CSDN_/article/details/120065860

7、创建overlay网络:

在集群任意一个节点上,创建容器overlay网络即可:

执行命令:

docker network create -d overlay net-docker-nebula

8、准备meta服务配置文件:

配置文件下载地址:https://download.csdn.net/download/LSY_CSDN_/21887583

(1)获取meta默认配置文件:

可以通过获取自备的meta默认配置文件,如果没有自备的默认配置文件,可以通过rpm安装一个nebula然后在/usr/local/nebula/etc中找到nebula-metad.conf默认配置文件,或者可以利用docker启动一个meta容器,然后进入容器在/etc文件夹中找到nebula-metad.conf默认配置文件。

(2)配置文件使用方式:

首次启动时,Meta服务会从配置文件nebula-metad.conf中读取配置信息。您需要把初始配置文件的后缀.default或.production删除,Meta服务才能将其识别为配置文件。

如果修改了配置文件,希望新配置生效,请在配置文件开头添加--local_config=true再重启服务,否则会从缓存中读取过期配置。

(3)修改meta配置文件参数:

① 增加参数local_config:

在配置文件第一行,增加参数:--local_config=true。

② 修改参数meta_server_addrs:

全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。预设值:127.0.0.1:9559。

③ 修改参数local_ip:

Meta服务的本地IP地址。本地IP地址用于识别nebula-metad进程,如果是分布式集群或需要远程访问,请修改为对应地址。预设值:127.0.0.1。建议修改为容器名称,而不写具体的IP地址。

例如:--local_ip=nebula-meta-01

④ 修改参数data_path:

meta数据存储路径。预设值:data/meta。

⑤ 修改参数log_dir:

存放Meta服务日志的目录,建议和数据保存在不同硬盘。预设值:logs。

⑥ 默认参数ws_ip:

HTTP服务的IP地址。预设值:0.0.0.0。因为在容器中,外部访问,建议使用默认值即可。

⑦ 默认参数port:

Meta服务的RPC守护进程监听端口。Meta服务对外端口为9559,对内端口为对外端口+1,即9560,Nebula Graph使用内部端口进行多副本间的交互。预设值:9559。

⑧ 默认参数ws_http_port:

HTTP服务的端口。预设值:19559。

⑨ 默认参数v:

日志详细级别,值越大,日志记录越详细。可选值为0、1、2、3。预设值:0。

⑩ 默认参数minloglevel:

最小日志级别,即不会记录低于这个级别的日志。可选值为0(INFO)、1(WARNING)、2(ERROR)、3(FATAL)。建议您在调试时设置为0,生产环境中设置为1。如果设置为4,Nebula Graph不会记录任何日志。预设值:0。

9、准备graph服务配置文件:

配置文件下载地址:https://download.csdn.net/download/LSY_CSDN_/21887583

(1)获取graph默认配置文件:

可以通过获取自备的graph默认配置文件,如果没有自备的默认配置文件,可以通过rpm安装一个nebula然后在/usr/local/nebula/etc中找到nebula-graphd.conf默认配置文件,或者可以利用docker启动一个graph容器,然后进入容器在/etc文件夹中找到nebula-graphd.conf默认配置文件。

(2)配置文件使用方式:

首次启动时,Graph服务会从配置文件nebula-graphd.conf中读取配置信息。您需要把初始配置文件的后缀.default或.production删除,Graph服务才能将其识别为配置文件。

如果修改了配置文件,希望新配置生效,请在配置文件开头添加--local_config=true再重启服务,否则会从缓存中读取过期配置。

(3)修改graph配置文件参数:

① 增加参数增加参数local_config:

在配置文件第一行,增加参数:--local_config=true。

② 修改参数meta_server_addrs:

全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。预设值:127.0.0.1:9559。

③ 修改参数local_ip:

Graph服务的本地IP地址。本地IP地址用于识别nebula-graphd进程,如果是分布式集群或需要远程访问,请修改为对应地址。预设值:127.0.0.1。建议修改为容器名称,而不写具体的IP地址。

例如:--local_ip=nebula-graph-01

④ 修改参数log_dir:

存放Graph服务日志的目录,建议和数据保存在不同硬盘。预设值:logs。

⑤ 默认参数ws_ip:

HTTP服务的IP地址。预设值:0.0.0.0。因为在容器中,外部访问,建议使用默认值即可。

⑥ 默认参数port:

Graph服务的RPC守护进程监听端口。预设值:9669。

⑦ 默认参数ws_http_port:

HTTP服务的端口。预设值:19669。

⑧ 默认参数v:

日志详细级别,值越大,日志记录越详细。可选值为0、1、2、3。预设值:0。

⑨ 默认参数minloglevel:

最小日志级别,即不会记录低于这个级别的日志。可选值为0(INFO)、1(WARNING)、2(ERROR)、3(FATAL)。建议您在调试时设置为0,生产环境中设置为1。如果设置为4,Nebula Graph不会记录任何日志。预设值:0。

10、准备storage服务配置文件:

配置文件下载地址:https://download.csdn.net/download/LSY_CSDN_/21887583

(1)获取storage默认配置文件:

可以通过获取自备的storage默认配置文件,如果没有自备的默认配置文件,可以通过rpm安装一个nebula然后在/usr/local/nebula/etc中找到nebula-storaged.conf默认配置文件,或者可以利用docker启动一个storage容器,然后进入容器在/etc文件夹中找到nebula-storaged.conf默认配置文件。

(2)配置文件使用方式:

首次启动时,Storage服务会从配置文件nebula-storaged.conf中读取配置信息。您需要把初始配置文件的后缀.default或.production删除,Storage服务才能将其识别为配置文件。

如果修改了配置文件,希望新配置生效,请在配置文件开头添加--local_config=true再重启服务,否则会从缓存中读取过期配置。

(3)修改storage配置文件参数:

① 增加参数local_config:

在配置文件第一行,增加参数:--local_config=true。

② 修改参数meta_server_addrs:

全部Meta服务的IP地址和端口。多个Meta服务用英文逗号(,)分隔。预设值:127.0.0.1:9559。

③ 修改参数local_ip:

Storage服务的本地IP地址。本地IP地址用于识别nebula-storaged进程,如果是分布式集群或需要远程访问,请修改为对应地址。预设值:127.0.0.1。建议修改为容器名称,而不写具体的IP地址。

例如:--local_ip=nebula-storage-01

④ 修改参数data_path:

数据存储路径,多个路径用英文逗号(,)分隔。一个RocksDB实例对应一个路径。预设值:data/storage

⑤ 默认参数ws_ip:

HTTP服务的IP地址。预设值:0.0.0.0。因为在容器中,外部访问,建议使用默认值即可。

⑥ 默认参数port:

Storage服务的RPC守护进程监听端口。Storage服务对外端口为9779,对内端口为9777、9778和9780,Nebula Graph使用内部端口进行多副本间的交互。预设值:9779。

⑦ 默认参数ws_http_port:

HTTP服务的端口。预设值:19779。

⑧ 默认参数log_dir:

存放Storage服务日志的目录,建议和数据保存在不同硬盘。预设值:logs。

⑨ 默认参数v:

日志详细级别,值越大,日志记录越详细。可选值为0、1、2、3。预设值:0。

⑩ 默认参数minloglevel:

最小日志级别,即不会记录低于这个级别的日志。可选值为0(INFO)、1(WARNING)、2(ERROR)、3(FATAL)。建议您在调试时设置为0,生产环境中设置为1。如果设置为4,Nebula Graph不会记录任何日志。预设值:0。

11、构建nebula容器:

(1)下载nebula镜像:

在集群所有节点上,根据服务的需要,下载对应服务的镜像包。

① 下载meta镜像:

执行命令:

docker pull vesoft/nebula-metad:v2.0.0

② 下载graph镜像:

执行命令:

docker pull vesoft/nebula-graphd:v2.0.0

③ 下载storage镜像:

执行命令:

docker pull vesoft/nebula-storaged:v2.0.0

(2)创建nebula持久化目录:

在集群所有节点上,根据服务的需要,创建持久化目录。

① 创建meta持久化目录:

创建数据持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/meta/data

创建日志持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/meta/logs

创建配置文件持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/meta/conf

② 创建graph持久化目录:

创建日志持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/graph/logs

创建配置文件持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/graph/conf

③ 创建storage持久化目录:

创建数据持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/storage/data

创建日志持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/storage/logs

创建配置文件持久化目录:

执行命令:

mkdir -p /wocloud/soft/nebula/storage/conf

(3)上传各服务配置文件:

在集群所有节点上,根据服务的需要,上传对应服务配置文件。

① 上传meta配置文件:

将meta配置文件上传到对应服务器的配置文件持久化目录中。

② 上传graph配置文件:

将graph配置文件上传到对应服务器的配置文件持久化目录中。

③ 上传storage配置文件:

将storage配置文件上传到对应服务器的配置文件持久化目录中。

(4)编写nebula容器构建命令:

① 编写meta容器构建命令:

docker run -d --name nebula-meta-01 \

-p 9559:9559 -p 19559:19559 \

--restart=always \

-v /wocloud/soft/nebula/meta/data:/usr/local/nebula/data/meta \

-v /wocloud/soft/nebula/meta/logs:/usr/local/nebula/logs \

-v /wocloud/soft/nebula/meta/conf/nebula-metad.conf:/usr/local/nebula/etc/nebula-metad.conf \

--network net-docker-nebula \

vesoft/nebula-metad:v2.0.0

说明:不同服务器上构建meta容器命令不一样,将容器名称修改一下。

② 编写graph容器构建命令:

docker run -d --name nebula-graph-01 \

-p 9669:9669 -p 19669:19669 \

--restart=always \

-v /wocloud/soft/nebula/graph/data:/usr/local/nebula/data/meta \

-v /wocloud/soft/nebula/graph/logs:/usr/local/nebula/logs \

-v /wocloud/soft/nebula/graph/conf/nebula-graphd.conf:/usr/local/nebula/etc/nebula-graphd.conf \

--network net-docker-nebula \

vesoft/nebula-graphd:v2.0.0

说明:不同服务器上构建graph容器命令不一样,将容器名称修改一下。

③ 编写storage容器构建命令:

docker run -d --name nebula-storage-01 \

-p 9779:9779 -p 19779:19779 \

--restart=always \

-v /wocloud/soft/nebula/storage/data:/usr/local/nebula/data/meta \

-v /wocloud/soft/nebula/storage/logs:/usr/local/nebula/logs \

-v /wocloud/soft/nebula/storage/conf/nebula-storaged.conf:/usr/local/nebula/etc/nebula-storaged.conf \

--network net-docker-nebula \

vesoft/nebula-storaged:v2.0.0

说明:不同服务器上构建storage容器命令不一样,将容器名称修改一下。

(5)构建nebula容器:

在集群所有节点上,根据服务的需要,构建对应服务容器。

① 构建meta容器:

执行构建meta容器的命令。

② 构建graph容器:

执行构建graph容器的命令。

③ 构建storage容器:

执行构建storage容器的命令。

12、操作集群:

(1)启动集群:

在集群的各个节点上启动对应的服务即可。

① 启动meta服务:

找到meta服务的容器ID,然后进行操作:

执行命令:docker start 容器ID

② 启动graph服务:

找到graph服务的容器ID,然后进行操作:

执行命令:docker start 容器ID

③ 启动storage服务:

找到storage服务的容器ID,然后进行操作:

执行命令:docker start 容器ID

(2)停止集群:

在集群的各个节点上停止对应的服务即可。

① 停止meta服务:

找到meta服务的容器ID,然后进行操作:

执行命令:docker stop 容器ID

② 停止graph服务:

找到graph服务的容器ID,然后进行操作:

执行命令:docker stop 容器ID

③ 停止storage服务:

找到storage服务的容器ID,然后进行操作:

执行命令:docker stop 容器ID

(3)重启集群:

在集群的各个节点上重启对应的服务即可。

① 重启meta服务:

找到meta服务的容器ID,然后进行操作:

执行命令:docker restart 容器ID

② 重启graph服务:

找到graph服务的容器ID,然后进行操作:

执行命令:docker restart 容器ID

③ 重启storage服务:

找到storage服务的容器ID,然后进行操作:

执行命令:docker restart 容器ID

13、检查集群:

连接到集群的任意一个Graph服务,查看集群状态。

执行命令nGql命令:SHOW HOSTS。

14、监控指标:

(1)监控指标说明:

Nebula Graph的每个监控指标都由三个部分组成,中间用英文句号(.)隔开,例如num_queries.sum.600。不同的Nebula Graph服务支持查询的监控指标也不同。示例指标结构的说明如下:

类别

示例

说明

指标名称

num_queries

简单描述指标的含义。

统计类型

sum

指标统计的方法。当前支持SUM、COUNT、AVG、RATE和P分位数(P75、P95、P99、P99.9)。

统计时间

600

指标统计的时间范围,当前支持5秒、60秒、600秒和3600秒,分别表示最近5秒、最近1分钟、最近10分钟和最近1小时。

(2)监控指标查询:

通过HTTP端口查询监控指标语法如下:

curl -G "http://<ip>:<port>/stats?stats=<metric_name_list> [&format=json]"

参数含义:

选项

说明

ip

服务器的IP地址,可以在安装目录内查看配置文件获取。

port

服务器的HTTP端口,可以在安装目录内查看配置文件获取。默认情况下,Meta服务端口为19559,Graph服务端口为19669,Storage服务端口为19779。

metric_name_list

监控指标名称,多个监控指标用英文逗号(,)隔开。

&format=json

将结果以JSON格式返回。

(3)监控指标示例:

① 查询meta指标:

不指定查询某个监控指标时,会返回该服务器上所有的监控指标。查询请求示例:

curl -G "http://192.168.137.112:19559/stats"

结果示例:

value=231

name=heartbeat_latency_us.avg.5

value=143

name=heartbeat_latency_us.avg.60

value=165

name=heartbeat_latency_us.avg.600

value=173

name=heartbeat_latency_us.avg.3600

② 查询graph指标:

不指定查询某个监控指标时,会返回该服务器上所有的监控指标。查询请求示例:

curl -G "http://192.168.137.112:19669/stats"

结果示例:

value=0

name=slow_query_latency_us.avg.5

value=0

name=slow_query_latency_us.avg.60

value=0

name=slow_query_latency_us.avg.600

value=0

name=slow_query_latency_us.avg.3600

value=0

name=slow_query_latency_us.p75.5

value=0

name=slow_query_latency_us.p75.60

value=0

name=slow_query_latency_us.p75.600

value=0

name=slow_query_latency_us.p75.3600

value=0

name=slow_query_latency_us.p95.5

value=0

name=slow_query_latency_us.p95.60

value=0

name=slow_query_latency_us.p95.600

value=0

name=slow_query_latency_us.p95.3600

③ 查询storage指标:

不指定查询某个监控指标时,会返回该服务器上所有的监控指标。查询请求示例:

curl -G "http://192.168.137.112:19779/stats"

结果示例:

value=0

name=num_lookup_errors.rate.5

value=0

name=num_lookup_errors.rate.60

value=0

name=num_lookup_errors.rate.600

value=0

name=num_lookup_errors.rate.3600

value=0

name=num_lookup_errors.sum.5

value=0

name=num_lookup_errors.sum.60

value=0

name=num_lookup_errors.sum.600

value=0

name=num_lookup_errors.sum.3600

15、发现bug:

发现一个bug,etcd和docker所在服务器同时重新启动,启动后docker上连接overlay的容器启动不了了,需要将原有的docker中的overlay网络删除后,重新创建一个overlay网络,然后通过命令修改容器使用最新创建的overlay网络,才可以正常启动。暂时不知道什么原因,待以后再处理。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐