图数据库 Nebula Graph 的安装部署

Nebula Graph:一个开源的分布式图数据库。做为惟一可以存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不只可以在高并发场景下知足毫秒级的低时延查询要求,还可以实现服务高可用且保障数据安全性。

本文目录

  1. 简介
  2. Nebula 总体架构git

    1. Meta Service
    2. Storage Service
    3. Graph Service
  3. 安装部署github

    1. 单机运行
    2. 集群部署docker

      1. 环境准备
      2. 安装
      3. 配置
    3. 测试集群

简介

Nebula Graph 是开源的第三代分布式图数据库,不只可以存储万亿个带属性的节点和边,并且还能在高并发场景下知足毫秒级的低时延查询要求。不一样于 Gremlin 和 Cypher,Nebula 提供了一种 SQL-LIKE 的查询语言 nGQL,经过三种组合方式(管道分号变量)完成对图的 CRUD 的操做。在存储层 Nebula Graph 目前支持 RocksDBHBase 两种方式。数据库

感谢 Nebula Graph 社区 Committer 伊兴路供稿本文。安全

Nebula Graph总体架构

img

Nebula Graph 主要有三个服务进程:bash

Meta Service

Meta Service 是整个集群的元数据管理中心,采用 Raft 协议保证高可用。主要提供两个功能:架构

  1. 管理各类元信息,好比 Schema
  2. 指挥存储扩容和数据迁移

Storage Service


Storage Service 负责 Graph 数据存储。图数据被切分红不少的分片 Partition,相同 ID 的 Partition 组成一个 Raft Group,实现多副本一致性。Nebula Graph 默认的存储引擎是 RocksDB 的 Key-Value 存储。并发

Graph Service

Graph Service 位于架构中的计算层,负责同 Console 等 Client 通讯,解析 nGQL 的请求并生成执行计划。执行计划通过优化器优化以后,交与执行引擎执行。执行引擎会向 MetaService 请求点边的 Schema 和向存储引擎获取点边的数据。分布式

GraphService 是个无状态的服务,能够无限的水平拓展,而且计算层的执行计划最终会下发到数据节点执行。高并发

安装部署

Nebula Graph 提供两种部署方式:单机集群单机部署主要用于测试和体验使用,生产场景推荐集群方式

单机运行

在单机上实践或者测试 Nebula Graph 的最好方式是经过 Docker 容器运行,参照文档拉取镜像,并进入容器:

$ docker pull vesoft/nebula-graph:latest
    $ docker run --rm -ti vesoft/nebula-graph:latest bash

进入容器以后首先启动 Nebula 的全部 Services,再经过 Console 客户端链接本容器内部的 graphd 服务来执行 nGQL 语句

$ cd /usr/local/nebula
    $ ./scripts/nebula.service start all
    $ ./bin/nebula -u user -p password
    (user@127.0.0.1) [(none)]> SHOW HOSTS;
    ===============================
    | Ip         | Port  | Status |
    ===============================
    | 172.17.0.2 | 44500 | online |
    -------------------------------
    Got 1 rows (Time spent: 15621/16775 us)

集群部署

环境准备

Nebula 支持编译安装和经过打包好的 Package 安装。因为 Nebula 依赖较多,简便起见推荐使用安装包安装

本文准备了 3 台装有 CentOS 7.5 系统的机器,IP 以下所示:

192.168.8.14 # cluster-14
    192.168.8.15 # cluster-15
    192.168.8.16 # cluster-16

在每台机器上下载对应的安装包

$ wget -O nebula-1.0.0-beta.el7-5.x86_64.rpm https://github.com/vesoft-inc/nebula/releases/download/v1.0.0-beta/nebula-1.0.0-beta.el7-5.x86_64.rpm

此外因为 Nebula 的服务之间通讯须要开放一些端口,因此能够临时关掉全部机器上的防火墙: (具体使用端口见 /usr/local/nebula/etc/ 下面的配置文件)

$ systemctl disable firewalld

本文将按以下的方式部署 Nebula 的集群:

- cluster-14: metad/storaged/graphd
  - cluster-15: metad/storaged
  - cluster-16: metad/storaged
安装

使用 rpm 安装上步准备好的安装包

$ rpm -ivh nebula-*.rpm

Nebula 默认的安装目录位于 /usr/local/nebula

配置

Nebula 的全部配置文件都位于 /usr/local/nebula/etc 目录下,而且提供了三份默认配置。分别编辑这些配置文件:

第一份配置文件:nebula-metad.conf

metad 经过 raft 协议保证高可用,须要为每一个 metad 的 service 都配置该服务部署的机器 ip 和端口。主要涉及 meta_server_addrslocal_ip 两个字段,其余使用默认配置。 cluster-14 上的两项配置示例以下所示:

# Peers
    --meta_server_addrs=192.168.8.14:45500,192.168.8.15:45500,192.168.8.16:45500
    # Local ip
    --local_ip=192.168.8.14
    # Meta daemon listening port
    --port=45500

第二份配置文件:nebula-graphd.conf

graphd 运行时须要从 metad 中获取 schema 数据,因此在配置中必须显示指定集群中 metad 的 ip 地址和端口选项 meta_server_addrs ,其余使用默认配置。 cluster-14 上的 graphd 配置以下:

# Meta Server Address
    --meta_server_addrs=192.168.8.14:45500,192.168.8.15:45500,192.168.8.16:45500

第三份配置文件:nebula-storaged.conf

storaged 也是使用的 raft 协议保证高可用,在数据迁移时会与 metad 通讯,因此须要配置 metad 的地址和端口 meta_server_addrs 和本机地址 local_ip ,其 peers 能够经过 metad 得到。 cluster-14 上的部分配置选项以下:

# Meta server address
    --meta_server_addrs=192.168.8.14:45500,192.168.8.15:45500,192.168.8.16:45500
    # Local ip
    --local_ip=192.168.8.14
    # Storage daemon listening port
    --port=44500
启动集群

cluster-14

$ /usr/local/nebula/scripts/nebula.service start all
    [INFO] Starting nebula-metad...
    [INFO] Done
    [INFO] Starting nebula-graphd...
    [INFO] Done
    [INFO] Starting nebula-storaged...
    [INFO] Done

cluster-15/cluster-16

$ /usr/local/nebula/scripts/nebula.service start metad
    [INFO] Starting nebula-metad...
    [INFO] Done
    $ /usr/local/nebula/scripts/nebula.service start storaged
    [INFO] Starting nebula-storaged...
    [INFO] Done

注:部分用户可能会遇到

[WARN] The maximum files allowed to open might be too few: 1024

能够本身修改 /etc/security/limits.conf

测试集群

登录集群中的一台,执行以下命令:

$ /usr/local/nebula/bin/nebula -u user -p password --addr 192.168.8.14 --port 3699
    (user@192.168.8.14) [(none)]> SHOW HOSTS;
    ==================================
    | Ip           | Port  | Status  |
    ==================================
    | 192.168.8.14 | 44500 | offline |
    ----------------------------------
    Got 1 rows (Time spent: 3511/4024 us)

附录

Nebula Graph:一个开源的分布式图数据库。

GitHub:https://github.com/vesoft-inc/nebula

知乎:https://www.zhihu.com/org/neb...

微博:https://weibo.com/nebulagraph

相关文章
相关标签/搜索