KAI1
2023 年4 月 6 日 08:20
1
背景:
想用docker run的方式,分布式部署nebula
提问参考模版:
nebula 版本:v3.4.0
部署方式:分布式
安装方式: Docker
是否上生产环境: N
硬件信息
问题的具体描述
个人需求原因,需要用docker run的方式而不是docker compose的方式,单独启动metad、graphd、storaged等镜像,因此需要将docker-compose.yaml转化为docker run命令。
请问贵司有这方面的手册可以参考吗?
比如dgrpah提供的这个教程:https://dgraph.io/docs/deploy/installation/single-host-setup/
wey
2023 年4 月 6 日 08:58
2
这个是 compose 文件 nebula-docker-compose/docker-compose.yaml at master · vesoft-inc/nebula-docker-compose · GitHub
@AIBot 请把下边 docker compose 文件写成 docker run 的命令行,给 KAI1 作为参考,谢谢
version: '3.4'
services:
metad0:
image: vesoft/nebula-metad:nightly
environment:
USER: root
TZ: "${TZ}"
command:
- --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
- --local_ip=metad0
- --ws_ip=metad0
- --port=9559
- --ws_http_port=19559
- --data_path=/data/meta
- --log_dir=/logs
- --v=0
- --minloglevel=0
healthcheck:
test: ["CMD", "curl", "-sf", "http://metad0:19559/status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
ports:
- 9559
- 19559
- 19560
volumes:
- ./data/meta0:/data/meta
- ./logs/meta0:/logs
networks:
- nebula-net
restart: on-failure
cap_add:
- SYS_PTRACE
networks:
nebula-net:
AIBot
2023 年4 月 6 日 08:58
3
docker run \
-d \
--name metad0 \
-e USER=root \
-e TZ="${TZ}" \
-p 9559:9559 \
-p 19559:19559 \
-p 19560:19560 \
-v ./data/meta0:/data/meta \
-v ./logs/meta0:/logs \
--network nebula-net \
--restart on-failure \
--cap-add SYS_PTRACE \
vesoft/nebula-metad:nightly \
--meta_server_addrs=metad0:9559,metad1:9559,metad2:9559 \
--local_ip=metad0 \
--ws_ip=metad0 \
--port=9559 \
--ws_http_port=19559 \
--data_path=/data/meta \
--log_dir=/logs \
--v=0 \
--minloglevel=0
KAI1
2023 年4 月 7 日 02:59
4
@wey 感谢回答,使用您转化后的docker-run后,进行了如下操作:
分别用docker-run,启动了metad0、storaged0、graphd。
块引用
docker run
-d
–name graphd
-e USER=root
-e TZ=“${TZ}”
-p 9669:9669
-p 19669:19669
-p 19670:19670
-v /mnt/sdb/docker-deploy-test/data/graphd:/data/graph
-v /mnt/sdb/docker-deploy-test/logs/graphd:/logs
–restart on-failure
–cap-add SYS_PTRACE
vesoft/nebula-graphd:latest
–meta_server_addrs=服务器1IP
:9559,服务器2IP
:9559
–local_ip=服务器1IP
–ws_ip=服务器1IP
–port=9669
–ws_http_port=19669
–log_dir=/logs
–v=0
–minloglevel=0
用studio还是无法连接
查看日志,显示如下:
其中,73是物理机IP
请问,该如何解决,多谢多谢!
wey
2023 年4 月 7 日 06:32
5
你容器用的是容器网络,不是 host net,无法 bind 在 host 网卡 ip 的,还是写 graphd 吧
KAI1
2023 年4 月 7 日 06:47
6
@wey 感谢回复,不知道是否方便,您能多解释下,我对这方面研究不深,感谢!
wey
2023 年4 月 7 日 06:53
7
这里的 my_ip 填写的 ip 或者域名,在服务启动的时候会把 host 绑定在上边,服务进程在绑定之前会检查可以绑定的地址,这个地址你可以等价地用 shell 命令查询,比如 ip a
或者 ifconfig
,在容器内部(非 host-net 的容器)网络是隔离在不同的网络命名空间的,这里查到的 ip 地址是不包括你宿主机的 ip 的。
这里你无需修改,写成和容器同名的就可以,所有容器在同一个容器网络内部,彼此用容器名字作为域名是可以解析的。
而 graphd 给的9669:9669 的port设定使得它可以被暴露出来绑定到所有 host ip 上,所以 studio 也是能够访问的。
KAI1
2023 年4 月 7 日 07:10
8
@wey
非常感谢,我之前可能没表述清楚,由于我们这边特殊原因,没有办法使用docker-compose或者docker-swarm。如果按照您说的这个方法,可能没法实现不同host之间服务的通信。我目前是想用docker run的方式分布式部署nebula到三台物理机
wey
2023 年4 月 7 日 07:25
9
实际上是可以的,你可以把网络模式改成 host net,你去 google 一下。
再就是, compose 和 run 是可以一一对应的,你这个需求用 compose 、swarm 都可以表达。
KAI1
2023 年4 月 7 日 07:28
10
@wey 好的,感谢,我去Google下,不懂再来请教您
wey
2023 年4 月 7 日 07:36
11
对了,官方就有一个 swarm 的分支哈,可以参考一下呢,就是给多机部署用的
KAI1
2023 年4 月 14 日 02:56
12
@wey 好的,根据您的建议,docker run已经跑起来了,但是通过studio创建schema失败,显示-1005,Host not enough!我打算用docker run运行console,然后通过add host的方式解决。不知道是否正确。
@AIBot 请把下边 docker compose 文件写成 docker run 的命令行,谢谢
console:
image: vesoft/nebula-console:latest
entrypoint: ""
command:
- sh
- -c
- |
for i in `seq 1 60`;do
var=`nebula-console -addr graphd -port 9669 -u root -p nebula -e 'ADD HOSTS "storaged0":9779,"storaged1":9779,"storaged2":9779'`;
if [[ $$? == 0 ]];then
break;
fi;
sleep 1;
echo "retry to add hosts.";
done && tail -f /dev/null;
depends_on:
- graphd
networks:
- nebula-net
KAI1
2023 年4 月 14 日 03:00
14
@AIBot 请把下边 docker compose 文件写成 docker run 的命令行,谢谢
console:
image: vesoft/nebula-console:latest
entrypoint: ""
command:
- sh
- -c
- |
for i in `seq 1 60`;do
var=`nebula-console -addr graphd -port 9669 -u root -p nebula -e 'ADD HOSTS "storaged0":9779,"storaged1":9779,"storaged2":9779'`;
if [[ $$? == 0 ]];then
break;
fi;
sleep 1;
echo "retry to add hosts.";
done && tail -f /dev/null;
depends_on:
- graphd
networks:
- nebula-net
wey
2023 年4 月 14 日 05:14
16
在 studio 的 console 里执行 add hosts 就可以
system
关闭
2023 年5 月 14 日 05:15
17
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。