在线扩充机器(docker swarm部署的方式)

docker swarm部署的集群,如何在线扩充机器。我现在有个三台机器的集群A,现在已经存入数据了,集群A在正常使用了。后来我们又搞来了一台机器,想将这台机器加入到集群A中,将集群A变成四台机器的集群。
我看了一下这个文档:https://docs.nebula-graph.com.cn/manual-CN/3.build-develop-and-administration/5.storage-service-administration/storage-balance/
文档好像只是说了,三台机器的集群变成8台机器的集群之后,数据如何做负载均衡,没有说如何加机器到集群里面去这一步操作
请问如何操作?

四台机器,meta还是配置成奇数三台,新增的机器应该是storage。

执行下面操作前先做好数据备份,我还没测试过

1、将新的机器加入swarm集群
docker swarm join xxxx
2、修改docker-stack.yml
新增storage4到新机器上

3、启动集群
docker stack deploy nebula -c docker-stack.yml

4、执行balance

1 个赞

在docker-stack.yml里面只需要添加新机器到storage 3,其他的需要变化吗?
这么使用不会重新启动docker容器吗?如果重新启动docker容器,容器里面的数据会不会就丢失了啊


docker-stack.yml改成这个吗?新添加一个storage 3

这个样子吗?这样不会重启所有机器上的docker容器吗?如果重启的话,会不会造成数据都是啊(重启容器之后,里面的数据就都没有了啊)

不应该是storage4? 按道理讲数据应该不会丢,数据是持久化到磁盘上的,不过建议还是在其他机器上先实验下

1 个赞

这种玩法的数据不是只是挂载在容器内的吗,这个一旦重启数据应该就没有了啊,测试很简单就直接把你的集群rm然后重新deploy一下就知道了吧。建议还是直接把数据挂载在数据盘上就行了。

我这边storage是从0开始的。
宿主机上没有看到持久化的数据。
还是感觉这么一搞,数据会丢失。我搭建一个小集群测试一下吧,请问有谁试过这种方式吗?

docker volume ls

我可以将meta和graphd也加到里面,可以吗?

docker inspect volume xxxx
可以看到持久化的目录

meta建议还是奇数graphd可以加到里面

看到本地持久化的目录了

这四个步骤搞完后给个反馈

好的

我现在使用henson的方法,可以添加storage到集群中了,数据也没有丢失。我如果将meta和graphd都在新机器上添加,好像没有可以,是吧。
请问如何下机器了?

1 个赞

:expressionless: 下机器么,这得官方来回复下

metad 一个进程一份全量元数据拷贝,全集群3个就行了。graphd无状态,随便上下搞。
storaged这个下机器呢,1.X就有点暴力了。。。

我目前尝试了:
1 更改docker-stack.yml配置文件,好像无效。
2 直接下线机器,并在swarm里面取出该节点,并更改docker-stack.yml配置文件,似乎也不好使。
3 使用docker stop直接停止容器,show hosts时,节点还是online
 ̄□ ̄||

因为缓存和心跳的原因,看上去还是online

目前版本下storage

机器的话数据会出现丢失问题,对么