使用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
分支到主机。Danger
master
分支包含最新的未测试代码。请不要在生产环境使用此版本。$ git clone -b v2.6.0 https://github.com/vesoft-inc/nebula-docker-compose.git
切换至目录
nebula-docker-compose
。$ cd nebula-docker-compose/
执行如下命令启动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
上述服务的更多信息,请参见架构总览。
连接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.6.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
通过Nebula Console连接Nebula Graph。
docker> nebula-console -u <user_name> -p <password> --address=graphd --port=9669
Note
默认情况下,身份认证功能是关闭的,只能使用已存在的用户名(默认为
root
)和任意密码登录。如果想使用身份认证,请参见身份认证。执行如下命令检查
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_graphd2_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_storaged2_1 ... done
Stopping nebula-docker-compose_storaged0_1 ... done
Stopping nebula-docker-compose_metad0_1 ... done
Stopping nebula-docker-compose_metad1_1 ... done
Stopping nebula-docker-compose_metad2_1 ... done
Removing nebula-docker-compose_graphd2_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_storaged2_1 ... done
Removing nebula-docker-compose_storaged0_1 ... done
Removing nebula-docker-compose_metad0_1 ... done
Removing nebula-docker-compose_metad1_1 ... done
Removing nebula-docker-compose_metad2_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.6.0
...
ports:
- 9669:9669
- 19669
- 19670
9669:9669
表示内部的9669映射到外部的端口也是9669,下方的19669
表示内部的19669映射到外部的端口是随机的。
如何升级/更新Nebula Graph服务的Docker镜像?
在文件
nebula-docker-compose/docker-compose.yaml
中,找到所有服务的image
并修改其值为相应的镜像版本。在目录
nebula-docker-compose
内执行命令docker-compose pull
,更新Graph服务、Storage服务和Meta服务的镜像。Note
执行
docker-compose pull
命令更新服务镜像前,确保已停止Nebula Graph。执行命令
docker-compose up -d
启动Nebula Graph服务。通过Nebula Console连接Nebula Graph后,分别执行命令
SHOW HOSTS GRAPH
、SHOW HOSTS STORAGE
、SHOW HOSTS 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.6.0
为什么更新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秒)
最后更新: November 2, 2021