跳转至

使用Docker Compose部署Nebula Graph

使用Docker Compose可以基于准备好的配置文件快速部署Nebula Graph服务,仅建议在测试Nebula Graph功能时使用该方式。

前提条件

  • 启动主机上的Docker服务。
  • 如果已经通过Docker Compose在主机上部署了另一个版本的Nebula Graph,为避免兼容性问题,需要删除目录nebula-docker-compose/data

部署和连接Nebula Graph

  1. 通过Git克隆nebula-docker-compose仓库的master分支到主机。

    Danger

    master分支包含最新的未测试代码。请不要在生产环境使用此版本。

    $ git clone -b v2.5.0 https://github.com/vesoft-inc/nebula-docker-compose.git
    
  2. 切换至目录nebula-docker-compose

    $ cd nebula-docker-compose/
    
  3. 执行如下命令启动Nebula Graph服务。

    Note

    如果长期未更新镜像,请先更新Nebula Graph镜像Nebula Console镜像

    [nebula-docker-compose]$ docker-compose up -d
    Creating nebula-docker-compose_metad0_1 ... done
    Creating nebula-docker-compose_metad2_1 ... done
    Creating nebula-docker-compose_metad1_1 ... done
    Creating nebula-docker-compose_graphd2_1   ... done
    Creating nebula-docker-compose_graphd_1    ... done
    Creating nebula-docker-compose_graphd1_1   ... done
    Creating nebula-docker-compose_storaged0_1 ... done
    Creating nebula-docker-compose_storaged2_1 ... done
    Creating nebula-docker-compose_storaged1_1 ... done
    

    Note

    上述服务的更多信息,请参见架构总览

  4. 连接Nebula Graph。

    1. 使用Nebula Console镜像启动一个容器,并连接到Nebula Graph服务所在的网络(nebula-docker-compose_nebula-net)中。

      $ docker run --rm -ti --network nebula-docker-compose_nebula-net --entrypoint=/bin/sh vesoft/nebula-console:v2.5.0
      

      Note

      本地网络可能和示例中的nebula-docker-compose_nebula-net不同,请使用如下命令查看。

      $ docker network  ls
      NETWORK ID          NAME                               DRIVER              SCOPE
      a74c312b1d16        bridge                             bridge              local
      dbfa82505f0e        host                               host                local
      ed55ccf356ae        nebula-docker-compose_nebula-net   bridge              local
      93ba48b4b288        none                               null                local
      
    2. 通过Nebula Console连接Nebula Graph。

      docker> nebula-console -u <user_name> -p <password> --address=graphd --port=9669
      

      Note

      默认情况下,身份认证功能是关闭的,只能使用已存在的用户名(默认为root)和任意密码登录。如果想使用身份认证,请参见身份认证

    3. 执行如下命令检查nebula-storaged进程状态。

      nebula> SHOW HOSTS;
      +-------------+------+----------+--------------+----------------------+------------------------+
      | Host        | Port | Status   | Leader count | Leader distribution  | Partition distribution |
      +-------------+------+----------+--------------+----------------------+------------------------+
      | "storaged0" | 9779 | "ONLINE" | 0            | "No valid partition" | "No valid partition"   |
      +-------------+------+----------+--------------+----------------------+------------------------+
      | "storaged1" | 9779 | "ONLINE" | 0            | "No valid partition" | "No valid partition"   |
      +-------------+------+----------+--------------+----------------------+------------------------+
      | "storaged2" | 9779 | "ONLINE" | 0            | "No valid partition" | "No valid partition"   |
      +-------------+------+----------+--------------+----------------------+------------------------+
      | "Total"     |      |          | 0            |                      |                        |
      +-------------+------+----------+--------------+----------------------+------------------------+
      
  5. 执行两次exit 可以退出容器。

查看Nebula Graph服务的状态和端口

执行命令docker-compose ps可以列出Nebula Graph服务的状态和端口。

$ docker-compose ps
Name                     Command                       State                                                   Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
nebula-docker-compose_graphd1_1     ./bin/nebula-graphd --flag ...   Up (health: starting)   13000/tcp, 13002/tcp, 0.0.0.0:33295->19669/tcp, 0.0.0.0:33291->19670/tcp,
                                                                                             3699/tcp, 0.0.0.0:33298->9669/tcp
nebula-docker-compose_graphd2_1     ./bin/nebula-graphd --flag ...   Up (health: starting)   13000/tcp, 13002/tcp, 0.0.0.0:33285->19669/tcp, 0.0.0.0:33284->19670/tcp,
                                                                                             3699/tcp, 0.0.0.0:33286->9669/tcp
nebula-docker-compose_graphd_1      ./bin/nebula-graphd --flag ...   Up (health: starting)   13000/tcp, 13002/tcp, 0.0.0.0:33288->19669/tcp, 0.0.0.0:33287->19670/tcp,
                                                                                             3699/tcp, 0.0.0.0:9669->9669/tcp
nebula-docker-compose_metad0_1      ./bin/nebula-metad --flagf ...   Up (health: starting)   11000/tcp, 11002/tcp, 0.0.0.0:33276->19559/tcp, 0.0.0.0:33275->19560/tcp,
                                                                                             45500/tcp, 45501/tcp, 0.0.0.0:33278->9559/tcp
nebula-docker-compose_metad1_1      ./bin/nebula-metad --flagf ...   Up (health: starting)   11000/tcp, 11002/tcp, 0.0.0.0:33279->19559/tcp, 0.0.0.0:33277->19560/tcp,
                                                                                             45500/tcp, 45501/tcp, 0.0.0.0:33281->9559/tcp
nebula-docker-compose_metad2_1      ./bin/nebula-metad --flagf ...   Up (health: starting)   11000/tcp, 11002/tcp, 0.0.0.0:33282->19559/tcp, 0.0.0.0:33280->19560/tcp,
                                                                                             45500/tcp, 45501/tcp, 0.0.0.0:33283->9559/tcp
nebula-docker-compose_storaged0_1   ./bin/nebula-storaged --fl ...   Up (health: starting)   12000/tcp, 12002/tcp, 0.0.0.0:33290->19779/tcp, 0.0.0.0:33289->19780/tcp,
                                                                                             44500/tcp, 44501/tcp, 0.0.0.0:33294->9779/tcp
nebula-docker-compose_storaged1_1   ./bin/nebula-storaged --fl ...   Up (health: starting)   12000/tcp, 12002/tcp, 0.0.0.0:33296->19779/tcp, 0.0.0.0:33292->19780/tcp,
                                                                                             44500/tcp, 44501/tcp, 0.0.0.0:33299->9779/tcp
nebula-docker-compose_storaged2_1   ./bin/nebula-storaged --fl ...   Up (health: starting)   12000/tcp, 12002/tcp, 0.0.0.0:33297->19779/tcp, 0.0.0.0:33293->19780/tcp,
                                                                                             44500/tcp, 44501/tcp, 0.0.0.0:33300->9779/tcp

Nebula Graph默认使用9669端口为客户端提供服务,如果需要修改端口,请修改目录nebula-docker-compose内的文件docker-compose.yaml,然后重启Nebula Graph服务。

查看Nebula Graph服务的数据和日志

Nebula Graph的所有数据和日志都持久化存储在nebula-docker-compose/datanebula-docker-compose/logs目录中。

目录的结构如下:

nebula-docker-compose/
  |-- docker-compose.yaml
  ├── data
  │   ├── meta0
  │   ├── meta1
  │   ├── meta2
  │   ├── storage0
  │   ├── storage1
  │   └── storage2
  └── logs
      ├── graph
      ├── graph1
      ├── graph2
      ├── meta0
      ├── meta1
      ├── meta2
      ├── storage0
      ├── storage1
      └── storage2

停止Nebula Graph服务

用户可以执行如下命令停止Nebula Graph服务:

$ docker-compose down

如果返回如下信息,表示已经成功停止服务。

Stopping nebula-docker-compose_storaged0_1 ... done
Stopping nebula-docker-compose_graphd1_1   ... done
Stopping nebula-docker-compose_graphd_1    ... done
Stopping nebula-docker-compose_storaged1_1 ... done
Stopping nebula-docker-compose_graphd2_1   ... done
Stopping nebula-docker-compose_storaged2_1 ... done
Stopping nebula-docker-compose_metad0_1    ... done
Stopping nebula-docker-compose_metad2_1    ... done
Stopping nebula-docker-compose_metad1_1    ... done
Removing nebula-docker-compose_storaged0_1 ... done
Removing nebula-docker-compose_graphd1_1   ... done
Removing nebula-docker-compose_graphd_1    ... done
Removing nebula-docker-compose_storaged1_1 ... done
Removing nebula-docker-compose_graphd2_1   ... done
Removing nebula-docker-compose_storaged2_1 ... done
Removing nebula-docker-compose_metad0_1    ... done
Removing nebula-docker-compose_metad2_1    ... done
Removing nebula-docker-compose_metad1_1    ... done
Removing network nebula-docker-compose_nebula-net

Danger

命令docker-compose down -v的参数-v将会删除所有本地的数据。如果使用的是nightly版本,并且有一些兼容性问题,请尝试这个命令。

修改配置

Docker Compose部署的Nebula Graph,配置文件位置为nebula-docker-compose/docker-compose.yaml,修改该文件内的配置并重启服务即可使新配置生效。

具体的配置说明请参见配置管理

常见问题

如何固定Docker映射到外部的端口?

在目录nebula-docker-compose内修改文件docker-compose.yaml,将对应服务的ports设置为固定映射,例如:

graphd:
    image: vesoft/nebula-graphd:v2.5.0
    ...
    ports:
      - 9669:9669
      - 19669
      - 19670

9669:9669表示内部的9669映射到外部的端口也是9669,下方的19669表示内部的19669映射到外部的端口是随机的。

如何更新Nebula Graph服务的Docker镜像?

在目录nebula-docker-compose内执行命令docker-compose pull,可以更新Graph服务、Storage服务和Meta服务的镜像。

执行命令docker-compose pull报错ERROR: toomanyrequests

可能遇到如下错误:

ERROR: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

以上错误表示已达到Docker Hub的速率限制。解决方案请参见Understanding Docker Hub Rate Limiting

如何更新Nebula Console?

执行如下命令可以更新Nebula Console客户端镜像。

docker pull vesoft/nebula-console:v2.5.0

如何升级Nebula Graph?

更新Nebula Graph的Docker镜像并重启服务:

  1. 在目录nebula-docker-compose内,执行命令docker-compose pull更新Nebula Graph的Docker镜像。

  2. 执行命令docker-compose down停止Nebula Graph服务。

  3. 执行命令docker-compose up -d启动Nebula Graph服务。

为什么更新nebula-docker-compose仓库(Nebula Graph 2.0.0-RC)后,无法通过端口3699连接Nebula Graph?

在 Nebula Graph 2.0.0-RC 版本,默认端口从3699改为9669。请使用9669端口连接,或修改配置文件docker-compose.yaml内的端口。

为什么更新nebula-docker-compose仓库后,无法访问数据?(2021年01月04日)

如果在2021年01月04日后更新过nebula-docker-compose仓库,而且之前已经有数据,请修改文件docker-compose.yaml,将端口修改为之前使用的端口。详情请参见修改默认端口

为什么更新nebula-docker-compose仓库后,无法访问数据?(2021年01月27日)

2021年01月27日修改了数据格式,无法兼容之前的数据,请执行命令docker-compose down -v删除所有本地数据。

相关视频

用户也可以查看视频快速部署Nebula Graph 2.0。

使用 docker compose 部署 Nebula Graph 2.0 和 Web Studio(18分10秒)


最后更新: August 25, 2021
Back to top