- 使用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
使用Docker Compose可以基于准备好的配置文件快速部署Nebula Graph服务,仅建议在测试Nebula Graph功能时使用该方式。
前提条件
主机上安装如下应用程序。
应用程序 推荐版本 官方安装参考 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
分支到主机。$ git clone -b v2.5.0 https://github.com/vesoft-inc/nebula-docker-compose.git
切换至目录
nebula-docker-compose
。$ cd nebula-docker-compose/
执行如下命令启动Nebula Graph服务。
[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.5.0
$ 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_name> -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部署的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镜像并重启服务:
在目录
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
删除所有本地数据。
相关视频
用户也可以查看视频快速部署Nebula Graph 2.0。
使用 docker compose 部署 Nebula Graph 2.0 和 Web Studio(18分10秒)