一、要求
1. 操作系统要求
当前仅支持在 Linux 系统中编译 NebulaGraph,建议使用内核版本为4.15
及以上版本的 Linux 系统。
升级内核
安装内核
wget https://mirrors.aliyun.com/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-5.4.270-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-5.4.270-1.el7.elrepo.x86_64.rpm
yum -y install
查看机器所有内核
[root@centos ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.270-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.108.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-bf569c2c57ee40a99440a0a51a6bbb76) 7 (Core)
设置默认引导的内核版本
grub2-set-default 0 ##依据上面第一列的序号
也可以修改/etc/default/grub 配置文件中的GRUB_DEFAULT=0
,然后grub2-mkconfig -o /boot/grub2/grub.cfg
生成配置文件并重启机器 ,如果你想灵活选择版本,则不用做以上设置,直接控制页面选择版本
重启后检查内核版本
[root@centos ~]# uname -r
5.4.270-1.el7.elrepo.x86_64
2. 软件要求
软件版本需要如下表所示,如果版本不符合要求,请按照安装编译所需软件中的步骤进行操作。
软件名称 | 版本 | 备注 |
---|---|---|
glibc | 2.17 及以上 | 执行命令ldd --version 检查版本。 |
make | 任意稳定版本 | - |
m4 | 任意稳定版本 | - |
git | 任意稳定版本 | - |
wget | 任意稳定版本 | - |
unzip | 任意稳定版本 | - |
xz | 任意稳定版本 | - |
readline-devel | 任意稳定版本 | - |
ncurses-devel | 任意稳定版本 | - |
zlib-devel | 任意稳定版本 | - |
g++ | 8.5.0 及以上 | 执行命令g++ -v 检查版本。 |
cmake | 3.14.0 及以上 | 执行命令cmake --version 检查版本。 |
curl | 任意稳定版本 | - |
redhat-lsb-core | 任意稳定版本 | - |
libstdc++-static | 任意稳定版本 | 仅在 CentOS 8+、RedHat 8+、Fedora 中需要。 |
libasan | 任意稳定版本 | 仅在 CentOS 8+、RedHat 8+、Fedora 中需要。 |
bzip2 | 任意稳定版本 | - |
安装上述安装包
$ yum update
$ yum install -y make \
m4 \
git \
wget \
unzip \
xz \
readline-devel \
ncurses-devel \
zlib-devel \
gcc \
gcc-c++ \
cmake \
curl \
redhat-lsb-core \
bzip2
// 仅 CentOS 8+、RedHat 8+、Fedora 需要安装 libstdc++-static 和 libasan。
$ yum install -y libstdc++-static libasan
升级gcc
centos7.6 默认gcc版本4.8,不符合要求,需要升级
安装 gcc(g++)-8 工具集
yum install centos-release-scl
yum install devtoolset-9-gcc*
source /opt/rh/devtoolset-8/enable # 可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本
升级cmake
centos7.6默认 cmake版本2.8.12.2
下载
wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz
tar -xvf cmake-3.14.5.tar.gz
cd cmake-3.14.5
yum remove cmake -y # 删除旧版本
./configure --prefix=/usr/local/cmake
make -j 2 && make install
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
cmake -version
二、编译
暂不支持离线编译 NebulaGraph
1.克隆 NebulaGraph 的源代码到主机。
-
[推荐] 如果需要安装3.6.0版本的 NebulaGraph,执行如下命令:
$ git clone --branch release-3.6 https://github.com/vesoft-inc/nebula.git
-
如果需要安装最新的开发版本用于测试,执行如下命令克隆 master 分支的代码:
$ git clone https://github.com/vesoft-inc/nebula.git
2.进入nebula/third-party
目录,安装 NebulaGraph 依赖的第三方库。
$ cd nebula/third-party
$ ./install-third-party.sh
3.返回nebula
目录,创建目录build
并进入该目录。
$ cd ..
$ mkdir build && cd build
4.使用 CMake 生成 makefile 文件。
默认安装路径为
/usr/local/nebula
,如果需要修改路径,请在下方命令内增加参数-DCMAKE_INSTALL_PREFIX=<installation_path>
。更多 CMake 参数说明,请参见 CMake 参数。
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/nebula -DENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release ..
4.编译 NebulaGraph 。
为了适当地加快编译速度,可以使用选项
-j
并行编译。并行数量N
建议为核数,内存核数,内存min(CPU核数,内存(GB)/2)。
$ make -j{N} # E.g., make -j2
5.安装 NebulaGraph 。
$ sudo make install
三、安装
部署架构
主机 | 角色 |
---|---|
192.168.10.111 | graph、storage、meta |
192.168.10.112 | graph、storage、meta |
192.168.10.113 | graph、storage、meta |
用户可以下载打包好的 tar.gz 文件快速安装 NebulaGraph
-
NebulaGraph 从 2.6.0 版本起提供 tar.gz 文件。
-
当前仅支持在 Linux 系统下安装 NebulaGraph,且仅支持 CentOS 7.x、CentOS 8.x、Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04 操作系统。
-
如果用户使用的是国产化的 Linux 操作系统,请安装 NebulaGraph 。
下载安装包
wget https://oss-cdn.nebula-graph.com.cn/package/3.6.0/nebula-graph-3.6.0.el7.x86_64.tar.gz
进入解压出的目录,将子目录etc
中的文件nebula-graphd.conf.default
、nebula-metad.conf.default
和nebula-storaged.conf.default
重命名,删除.default
,即可应用 NebulaGraph 的默认配置
修改配置
以节点192.168.10.111为例
-
nebula-graphd.conf
nebula/conf/nebula-graphd.conf.default at master · vesoft-inc/nebula (github.com)
--meta_server_addrs=192.168.10.111:9559,192.168.10.112:9559,192.168.10.113:9559 --local_ip=192.168.10.111 --pid_file=pids/nebula-graphd.pid --listen_netdev=any --port=9669 --listen_backlog=1024 --client_idle_timeout_secs=28800 --session_idle_timeout_secs=28800 --num_accept_threads=1 --num_netio_threads=0 --num_max_connections=0 --num_worker_threads=0 --ws_http_port=19669 --storage_client_timeout_ms=60000 --slow_query_threshold_us=200000 --ws_meta_http_port=19559 --log_dir=logs --minloglevel=0 --stdout_log_file=graphd-stdout.log --stderr_log_file=graphd-stderr.log --max_allowed_query_size=4194304
-
nebula-storaged.conf
--meta_server_addrs=192.168.10.111:9559,192.168.10.112:9559,192.168.10.113:9559 --local_ip=192.168.10.111 --port=9779 --pid_file=pids/nebula-storaged.pid --log_dir=logs --minloglevel=0 --stdout_log_file=storaged-stdout.log --stderr_log_file=storaged-stderr.log --max_allowed_query_size=4194304 --ws_http_port=19779 --data_path=data/storage --engine_type=rocksdb
-
nebula-metad.conf
--meta_server_addrs=192.168.10.111:9559,192.168.10.112:9559,192.168.10.113:9559 --local_ip=192.168.10.111 --port=9559 --pid_file=pids/nebula-metad.pid --log_dir=logs --minloglevel=0 --stdout_log_file=metad-stdout.log --stderr_log_file=metad-stderr.log --stderrthreshold=3 --ws_http_port=19559 --ws_storage_http_port=19779 # 对应storage ws_http_port --data_path=data/meta --default_replica_factor=1 --heartbeat_interval_secs=10 --agent_heartbeat_interval_secs=60
其余机器,只需修改--local_ip
即可
启动服务
依次启动各个服务器上的对应进程。
机器名称 | 待启动的进程 |
---|---|
192.168.10.111 | graphd、storaged、metad |
192.168.10.112 | graphd、storaged、metad |
192.168.10.113 | graphd、storaged、metad |
注册storage
前提是已连接 NebulaGraph 服务。
启动后nebula 还不可使用,从 3.0.0 版本开始,在配置文件中添加的 Storage 节点无法直接读写,配置文件的作用仅仅是将 Storage 节点注册至 Meta 服务中。必须使用ADD HOSTS命令后,才能正常读写 Storage 节点
ADD HOSTS 192.168.40.39:9779, 192.168.40.40:9779, 192.168.40.41:9779; # 只要执行即可
检查主机状态
nebula> SHOW HOSTS;
+------------------+------+----------+--------------+---------------------- +------------------------+---------+
| Host | Port | Status | Leader count | Leader distribution | Partition distribution | Version |
+------------------+------+----------+--------------+---------------------- +------------------------+---------+
| "192.168.10.100" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.6.0" |
| "192.168.10.101" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.6.0" |
| "192.168.10.102" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.6.0" |
+------------------+------+----------+--------------+---------------------- +------------------------+---------+
四、客户端
Nebula Console
NebulaGraph Console
下载地址
wget https://github.com/vesoft-inc/nebula-console/releases/download/v3.6.0/nebula-console-linux-amd64-v3.6.0
mv nebula-console-linux-amd64-v3.6.0 nebula-console
chmod 111 nebula-console
测试连接
/nebula-console -addr <ip> -port <port> -u <username> -p <password>
Nebula Graph Studio
下载
wget https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/3.6.0/nebula-graph-studio-3.6.0.x86_64.tar.gz
tar -xvf nebula-graph-studio-3.6.0.x86_64.tar.gz
cd nebula-graph-studio-3.6.0.x86_64
/server # 启动
配置文件
Name: studio-api
Host: 0.0.0.0
Port: 7001
MaxBytes: 1073741824
Timeout: 60000
Log:
Mode: file
Level: info
KeepDays: 7
Debug:
Enable: false
WebSocket:
WriteDeadline: 60
ReadDeadline: 60
WriteLimit: 33554432
ReadLimit: 8388608
Auth:
TokenName: "studio_token"
AccessSecret: "login_secret"
AccessExpire: 259200
File:
UploadDir: "./data/upload/"
TasksDir: "./data/tasks"
SqliteDbFilePath: "./data/tasks.db"
NebulaGraph Dashboard
下载
wget https://oss-cdn.nebula-graph.com.cn/nebula-graph-dashboard/3.4.0/nebula-dashboard-3.4.0.x86_64.tar.gz
tar -zxvf nebula-dashboard-3.4.0.x86_64.tar.gz
cd nebula-dashboard-3.4.0.x86_64
进入解压缩的nebula-dashboard
文件夹,并修改配置文件config.yaml
配置文件内主要包含 4 种依赖服务的配置和集群的配置。依赖服务的说明如下。
服务名称 | 默认端口号 | 说明 |
---|---|---|
nebula-http-gateway | 8090 | 为集群服务提供 HTTP 接口,执行 nGQL 语句与 NebulaGraph 进行交互。 |
nebula-stats-exporter | 9200 | 收集集群的性能指标,包括服务 IP 地址、版本和监控指标(例如查询数量、查询延迟、心跳延迟 等)。 |
node-exporter | 9100 | 收集集群中机器的资源信息,包括 CPU、内存、负载、磁盘和流量。 |
prometheus | 9090 | 存储监控数据的时间序列数据库。 |
配置文件说明如下。
port: 7003 # Web 服务端口。
gateway:
ip: hostIP # 部署 Dashboard 的机器 IP。
port: 8090
https: false # 是否为 HTTPS 端口。
runmode: dev # 程序运行模式,包括 dev、test、prod。一般用于区分不同运行环境。
stats-exporter:
ip: hostIP # 部署 Dashboard 的机器 IP。
nebulaPort: 9200
https: false # 是否为 HTTPS 端口。
node-exporter:
- ip: nebulaHostIP_1 # 部署 NebulaGraph 的机器 IP。
port: 9100
https: false # 是否为 HTTPS 端口。
# - ip: nebulaHostIP_2
# port: 9100
# https: false
prometheus:
ip: hostIP # 部署 Dashboard 的机器 IP。
prometheusPort: 9090
https: false # 是否为 HTTPS 端口。
scrape_interval: 5s # 收集监控数据的间隔时间。默认为 1 分钟。
evaluation_interval: 5s # 告警规则扫描时间间隔。默认为 1 分钟。
# 集群节点信息
nebula-cluster:
name: 'default' # 集群名称
metad:
- name: metad0
endpointIP: nebulaMetadIP # 部署 Meta 服务的机器 IP。
port: 9559
endpointPort: 19559
# - name: metad1
# endpointIP: nebulaMetadIP
# port: 9559
# endpointPort: 19559
graphd:
- name: graphd0
endpointIP: GraphdIP # 部署 Graph 服务的机器 IP。
port: 9669
endpointPort: 19669
# - name: graphd1
# endpointIP: GraphdIP
# port: 9669
# endpointPort: 19669
storaged:
- name: storaged0
endpointIP: StoragedIP # 部署 Storage 服务的机器 IP。
port: 9779
endpointPort: 19779
# - name: storaged1
# endpointIP: StoragedIP
# port: 9779
# endpointPort: 19779
执行./dashboard.service start all
一键启动服务
3.4.0版本启动后,发现nodeexport无法启动,暂时手动启,后续排查
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类