- Docker Compose部署Nebula Graph
- 阅读指南
- 前提条件
- 部署和连接Nebula Graph
- 查看Nebula Graph服务的状态和端口
- 查看Nebula Graph服务的数据和日志
- 停止Nebula Graph服务
- 常见问题
- 如何固定Docker映射到外部的端口?
- 如何更新Nebula Graph服务的Docker镜像?
- 执行命令
docker-compose pull
报错ERROR: toomanyrequests
- 如何更新Nebula Console?
- 如何升级Nebula Graph?
- 为什么更新nebula-docker-compose仓库(Nebula Graph 2.0.0-RC)后,无法通过端口
3699
连接Nebula Graph? - 为什么更新nebula-docker-compose仓库后,无法访问数据?(2021年01月04日)
- 为什么更新nebula-docker-compose仓库后,无法访问数据?(2021年01月27日)
- 相关文档
Docker Compose部署Nebula Graph
有多种方式可以部署Nebula Graph,但是使用Docker Compose通常是最快的方式。
阅读指南
如果您是带着如下问题阅读本文,可以直接单击问题跳转查看对应的说明。
前提条件
主机上安装如下应用程序。
应用程序 推荐版本 官方安装参考 Docker 最新版本 Install Docker Engine Docker Compose 最新版本 Install Docker Compose Git 最新版本 Download Git 如果您使用非root用户部署Nebula Graph,请授权该用户Docker相关的权限。详细信息,请参见Manage Docker as a non-root user。
启动主机上的Docker服务。
如果您已经通过Docker Compose在主机上部署了另一个版本的Nebula Graph,为避免兼容性问题,需要您删除目录
nebula-docker-compose/data
。
部署和连接Nebula Graph
通过Git克隆
nebula-docker-compose
仓库的master
分支到您的主机。禁止:
master
分支包含最新的Nebula Graph开发版本的Docker Compose解决方案。请不要在生产环境使用此版本。$ git clone https://github.com/vesoft-inc/nebula-docker-compose.git
切换至目录
nebula-docker-compose
。$ cd nebula-docker-compose/
执行如下命令启动Nebula Graph服务。
说明: 如果长期未更新镜像,请先更新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
说明: 上述服务的更多信息,请参见架构总览。
连接Nebula Graph。
使用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-nightly
$ 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
通过Nebula Console连接Nebula Graph。
docker> nebula-console -u user -p password --address=graphd --port=9669
执行如下命令检查
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 | | |
+-------------+------+----------+--------------+----------------------+------------------------+
执行两次
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/data
和nebula-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
说明:命令
docker-compose down -v
将会删除所有本地Nebula Graph的数据。如果您使用的是developing或nightly版本,并且有一些兼容性问题,请尝试这个命令。
常见问题
如何固定Docker映射到外部的端口?
在目录nebula-docker-compose
内修改文件docker-compose.yaml
,将对应服务的ports
设置为固定映射,例如:
graphd:
image: vesoft/nebula-graphd:v2-nightly
...
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-nightly
如何升级Nebula Graph?
更新Nebula Graph的Docker镜像并重启服务:
在目录
nebula-docker-compose
内,执行命令docker-compose pull
更新Nebula Graph的Docker镜像。执行命令
docker-compose down
停止Nebula Graph服务。执行命令
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
删除所有本地数据。