logo
咨询企业版

技术分享

NebulaGraph 安装方式的选择

NebulaGraph

NebulaGraph 介绍

一个可靠的分布式、线性扩容、 性能高效的图数据库。NebulaGraph 提供了线性扩容的能力,支持快照方式实现数据恢复功能。在查询语言方面,开发团队完全自研开发查询语言——nGQL,兼容 openCypher,让 Neo4j 的用户可无缝衔接使用 NebulaGraph。

NebulaGraph 支持的安装方式以及对比

01 编译安装

NebulaGraph支持使用源码编译方式进行安装

  • 优点:

    • 可以根据自己需求自定义编译和安装配置,测试最新性能,自由度比较大。
  • 缺点:

    • 需要在操作系统层准备编译环境,可能会与现有环境冲突

    • 需要服务器必须能够联网

    • 整个安装过程会比较繁琐

02 使用 Docker 编译安装

通过 Docker 进行编译安装,解决了服务器直接安装可能存在冲突的问题,其余优缺点与服务器编译安装一致,相当于是编译安装的优化版。

03 本地单机安装

使用包管理器 rpm 以及 dpkg 进行安装

NebulaGraph 安装包,支持且仅支持 CentOS 7.x、CentOS 8.x、Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04 操作系统。使用官方封装好的包可以大大降低安装难度。

  • 优点:

    • 安装简单

    • 支持常用的 Linux 发行版

  • 缺点:

    • 既然已经支持了包管理器,为何不直接维护到 yum 源和或者 apt 源,让用户可以直接使用 yum 命令或者 apt 命令进行安装呢?

tar 包安装

可以但是没必要,目前没有发现什么场景是必须使用 tar 包进行安装的。

04 本地多机安装

NebulaGraph 多机集群部署方式,是生产环境建议使用的部署方式之一

  • 优点:

    • 高性能

    • 高可用

  • 缺点:

    • 资源使用多

    • 安装维护稍微有些难度

05 Docker-Compose 安装

NebulaGraph 单机集群部署方式,是测试环境建议使用的部署方式之一

  • 优点:

    • 可以使用单机模拟集群效果,是入门学习集群环境的不二之选

    • 部署简单

  • 缺点:

    • 虽然是集群环境,但是高可用只能限制于容器级别,服务器级别无法实现

06 K8s 安装

NebulaGraph 集群部署方式,是生产环境建议使用的部署方式之一,在 K8s 中创建 NebulaGraph Operator ,使用 NebulaGraph Operator 来创建维护集群,降低部署维护难度。

  • 优点:

    • 高可用,高于多机集群,因为单点故障,k8s可以自动恢复故障pod,保持节点存活数量

    • 高性能,可能略低于多机集群, 因为各种网络转发会降低网络性能,影响性能上限(极端情况才会感受到,正常没问题)

  • 缺点:

    • 需要人员的技术能力较高,各种问题的排查难度可能会大于多机集群方式。

07 Docker 多机集群

NebulaGraph 集群部署方式,测试环境以及小规模的生产环境建议使用的部署方式,目前还没有官方文档参考,可以参考后续公众号发布的同系列 Docker 多机部署文章。

  • 优点:

    • 高可用,高于多机集群

    • 高性能,

    • 部署相对简单

  • 缺点:

    • 有稍许性能损失

    • 没有官方文档支持

08 对比

NebulaGraph 安装方式的选择

NebulaGraph 安装方式选择以及安装

01 操作系统选择

考虑到后期 CentOS 社区维护问题,建议使用 Ubuntu 操作系统。

02 安装方式选择

个人测试

公司测试

公司测试建议使用多机集群,Docker-Compose 安装,以及 K8s 安装,尽可能模拟实际生产环境,或完全和生产环境一致,可以根据公司技术路线选择是否使用 K8s,公司服务器资源是否充裕,来选择是否使用 Docker-Compose 安装。

生产环境

公司生产建议使用多机集群,以及 K8s 安装,应尽量提高应用的可用性以及性能。

03 安装过程

单机安装

单机安装可以简单快捷的安装 NebulaGraph,用于个人测试环境使用,首先准备一台 Linux 服务器,我这边使用的 Ubuntu 1804 操作系统。具体可参考官方文档:https://docs.nebula-graph.com.cn/3.6.0/4.deployment-and-installation/1.resource-preparations/

下载安装包

``wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.ubuntu1804.amd64.deb wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.ubuntu1804.amd64.deb.sha256sum.txt

安装

`sudo dpkg -i nebula-graph-3.6.0.ubuntu1804.amd64.deb`

启动服务

`sudo /usr/local/nebula/scripts/nebula.service start all`
`# 查看状态   sudo /usr/local/nebula/scripts/nebula.service status all`

![NebulaGraph](https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-website-5.0/share/12.19-2.png)

注意:安装需要调整一部分内核参数,官方把这部分内容放到配置与日志部分,没有放到安装部分,如果不调整会有警告报错,影响后续使用。参考官方文档:https://docs.nebula-graph.com.cn/3.6.0/5.configurations-and-logs/1.configurations/6.kernel-config/

服务启动后还需要手动添加 Storage主机,参考官方文档:https://docs.nebula-graph.com.cn/3.6.0/4.deployment-and-installation/manage-storage-host/

**Docker-Compose 安装**

Docker-Compose 部署方式可以快速实现一套单机集群环境,适合资源不充裕的公司测试环境使用。具有一定的高可用能力,可以用来模拟生产环境,已经测试单点故障。

首先安装 Docker、Docker-Compose,参考 Docker 官方文档即可。

**clone 项目代码**

`$ git clone -b release-3.6 https://github.com/vesoft-inc/nebula-docker-compose.git`

**启动应用**

这个过程中,会自动拉取镜像,需要耐心等待

`cd nebula-docker-compose/
docker-compose up -d`

拉取镜像中,耐心等等

![NebulaGraph 安装方式](https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-website-5.0/share/12.19-3.png)

服务已经启动

![NebulaGraph 安装选择](https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-website-5.0/share/12.19-4.png)

**K8s 安装**

这个安装首先你要有一套 K8s 并且 K8s 上有 storageClass,NebulaGraph 基于 K8s 部署,高可用能力直接拉满,但是占用资源较多,建议在生产环境使用。

我这边使用的是一套二进制部署的 K8s 平台,rook 拉起的一套 Ceph 集群(建议使用高性能 SSD,我这没有凑合用)。

安装

创建 namespace

kubectl create namespace nebula

添加 repo

helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts

更新资源

helm repo update nebula-operator

设置环境变量

NebulaGraph 集群的名字。 export NEBULA_CLUSTER_NAME=nebula

NebulaGraph 集群所处的命名空间的名字。

export NEBULA_CLUSTER_NAMESPACE=nebula

NebulaGraph 集群的 StorageClass 根据实际填写

export STORAGE_CLASS_NAME=rook-ceph-block

创建集群

helm install "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \

#指定集群 chart 的版本,不指定则默认安装最新版本 chart。
#执行 helm search repo -l nebula-operator/nebula-cluster 命令可查看所有 chart 版本。
--version=1.7.3 \
#指定 NebulaGraph 集群所处的命名空间。
--namespace="${NEBULA_CLUSTER_NAMESPACE}" \
#自定义集群名称。
--set nameOverride="${NEBULA_CLUSTER_NAME}" \
--set nebula.storageClassName="${STORAGE_CLASS_NAME}" \
#指定 NebulaGraph 集群的版本。
--set nebula.version=v3.6.0

查看 Pod 状态

kubectl -n "${NEBULA_CLUSTER_NAMESPACE}" get pod -l "app.kubernetes.io/cluster=${NEBULA_CLUSTER_NAME}"` ```

Pod 状态已经正常

NebulaGraph 安装方式

Docker 多机集群部署

已经自己实现了该部署方式,后续会有详细的文章介绍。

Docker 部署集群相对二进制部署,简化了一些系统命令,但是会有一些额外的性能损耗。

结语

首先官方文档非常稳,所有安装过程,参照官方文档均可正常完成安装。建议增加 Docker 的多机集群部署方式,不是 Docker-Compose 哦。

我也是刚刚接触 NebulaGraph,希望能通过这篇文章帮助想要入坑 NebulaGraph 的小伙伴能快速的部署一套环境出来。