图数据库nebula——搭建linux分布式集群
目录1、集群架构:2、服务器:3、下载rpm软件包:4、修改服务器打开最大文件数:5、安装nebula:(1)上传rpm软件包:(2)执行rpm软件包:6、修改meta服务配置:(1)配置文件使用方式:(2)修改配置文件参数:① 增加参数local_config:② 修改参数meta_server_addrs:③ 修改参数local_ip:④ 修改参数data_path:⑤ 修改参数log_dir
目录
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、服务器:
本地虚拟机采用3台服务器,服务器内核建议使用3.10及以上,搭建测试集群:
服务器IP |
Meta服务端口号 |
Graph服务端口号 |
Storage服务端口号 |
192.168.137.111 |
9559 |
9669 |
9779 |
192.168.137.112 |
9669 |
9779 |
|
192.168.137.113 |
9669 |
9779 |
3、下载rpm软件包:
下载需要版本的rpm软件包,本次下载nebula-2.0.0版本,下载地址:https://nebula-graph.io/release/
4、修改服务器打开最大文件数:
在集群所有节点上,进行如下操作:
修改配置文件:/etc/security/limits.conf,该参数只是修改了线程的参数,还需要修改下面系统级别的参数,增加如下参数:
* soft nofile 65535
* hard nofile 65535
修改配置文件:/proc/sys/fs/file-max,将其中的值大于上面配置的数值。
最后重新启动服务器。
5、安装nebula:
在集群所有节点上,进行如下操作:
(1)上传rpm软件包:
将下载好的rpm软件包上传到服务器的指定文件夹中。
(2)执行rpm软件包:
通过cd命令进入到nebula的rpm软件包的文件夹中,然后执行安装nebula的命令:
rpm -ivh nebula-graph-2.0.0.el7.x86_64.rpm
安装好nebula后,nebula的安装路径是:/usr/local/nebula,有关nebula的配置文件路径是:/usr/local/nebula/etc
6、修改meta服务配置:
在集群安装有meta的服务器上,进行如下操作:
(1)配置文件使用方式:
首次启动时,Meta服务会从配置文件nebula-metad.conf中读取配置信息。您需要把初始配置文件的后缀.default或.production删除,Meta服务才能将其识别为配置文件。
如果修改了配置文件,希望新配置生效,请在配置文件开头添加--local_config=true再重启服务,否则会从缓存中读取过期配置。
(2)修改配置文件参数:
服务meta的配置文件为:/usr/local/nebula/etc/nebula-metad.conf,修改该配置文件即可。
① 增加参数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。
④ 修改参数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。
7、修改graph服务配置:
在集群安装有graph的服务器上,进行如下操作:
(1)配置文件使用方式:
首次启动时,Graph服务会从配置文件nebula-graphd.conf中读取配置信息。您需要把初始配置文件的后缀.default或.production删除,Graph服务才能将其识别为配置文件。
如果修改了配置文件,希望新配置生效,请在配置文件开头添加--local_config=true再重启服务,否则会从缓存中读取过期配置。
(2)修改配置文件参数:
服务graph的配置文件为:/usr/local/nebula/etc/nebula-graphd.conf,修改该配置文件即可。
① 增加参数增加参数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。
④ 修改参数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。
8、修改storage服务配置:
在集群安装有storage的服务器上,进行如下操作:
(1)配置文件使用方式:
首次启动时,Storage服务会从配置文件nebula-storaged.conf中读取配置信息。您需要把初始配置文件的后缀.default或.production删除,Storage服务才能将其识别为配置文件。
如果修改了配置文件,希望新配置生效,请在配置文件开头添加--local_config=true再重启服务,否则会从缓存中读取过期配置。
(2)修改配置文件参数:
服务graph的配置文件为:/usr/local/nebula/etc/nebula-storaged.conf,修改该配置文件即可。
① 增加参数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。
④ 修改参数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。
9、操作集群:
(1)启动集群:
在集群的各个节点上启动对应的服务即可。
① 启动meta服务:
执行命令:
/usr/local/nebula/scripts/nebula.service start metad
② 启动graph服务:
执行命令:
/usr/local/nebula/scripts/nebula.service start graphd
③ 启动storage服务:
执行命令:
/usr/local/nebula/scripts/nebula.service start storaged
(2)停止集群:
在集群的各个节点上停止对应的服务即可。
① 停止meta服务:
执行命令:
/usr/local/nebula/scripts/nebula.service stop metad
② 停止graph服务:
执行命令:
/usr/local/nebula/scripts/nebula.service stop graphd
③ 停止storage服务:
执行命令:
/usr/local/nebula/scripts/nebula.service stop storaged
(3)重启集群:
在集群的各个节点上重启对应的服务即可。
① 重启meta服务:
执行命令:
/usr/local/nebula/scripts/nebula.service restart metad
② 重启graph服务:
执行命令:
/usr/local/nebula/scripts/nebula.service restart graphd
③ 重启storage服务:
执行命令:
/usr/local/nebula/scripts/nebula.service restart storaged
10、设置启动为服务:
在集群的各个节点上进行操作。
(1)创建服务脚本:
进入/usr/lib/systemd/system目录,分别创建meta.service、graph.service、storage.service文件,内容格式如下,只是启动、停止命令不同而已:
[Unit]
Description=neo4j
After=network-online.target firewalld.service
[Service]
Type=forking
ExecStart=/usr/local/nebula/scripts/nebula.service start metad
ExecStop=/usr/local/nebula/scripts/nebula.service stop metad
PrivateTpm=true
[Install]
WantedBy=multi-user.target
(2)授权服务脚本:
执行命令:
chmod 777 meta.service
执行命令:
chmod 777 graph.service
执行命令:
chmod 777 storage.service
(3)刷新systemctl服务:
执行命令:
systemctl daemon-reload
(4)操作服务:
① 启动meta服务:
执行命令:
systemctl start meta.service
② 停止meta服务:
执行命令:
systemctl stop meta.service
③ 启动graph服务:
执行命令:
systemctl start graph.service
④ 停止graph服务:
执行命令:
systemctl stop graph.service
⑤ 启动storage服务:
执行命令:
systemctl start storage.service
⑥ 停止storage服务:
执行命令:
systemctl stop storage.service
11、设置启动服务开机自启:
(1)设置开机自启meta服务:
执行命令:
systemctl enable meta.service
(2)设置开机自启graph服务:
执行命令:
systemctl enable graph.service
(3)设置开机自启storage服务:
执行命令:
systemctl enable storage.service
12、检查集群:
连接到集群的任意一个Graph服务,查看集群状态。
执行命令nGql命令:SHOW HOSTS。
13、监控指标:
(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.111: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.111: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.111: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

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)