NWNU-Sun | 技术沉思录

代码是诗,bug是谜

   ::  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  77 随笔 :: 49 文章 :: 6 评论 :: 40763 阅读

一、要求

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.defaultnebula-metad.conf.defaultnebula-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 下载地址

https://github.com/vesoft-inc/nebula-console/releases

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无法启动,暂时手动启,后续排查

posted on   匿名者nwnu  阅读(70)  评论(0编辑  收藏  举报
编辑推荐:
· .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技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示