tiangolo / dockerswarm.rocks

Docker Swarm mode rocks! Ideas, tools and recipes. Get a production-ready, distributed, HTTPS served, cluster in minutes, not weeks.
https://dockerswarm.rocks/
1.1k stars 125 forks source link

Persistent storage / replicated volume recommendation for docker swarm mode in 2020 #50

Closed OCram85 closed 11 months ago

OCram85 commented 4 years ago

Hi, It would be awesome to have a guide or a recommendation what kind of solutions could be used to set up replicated volumes. I recently looked into solutions like GlusterFS, Ceph, REX-Ray...

tiangolo commented 4 years ago

Yeah, the thing is that I don't have a recommendation for that. I don't think any of the currently available tools solve all the related problems.

For example, you probably wouldn't put the files of a SQL DB in one of those systems.

They would work best for binary files stored as blobs that can be retrieved and saved, etc. But not constantly updated, indexed, etc. And in those cases, I would think MinIO could work better.

OCram85 commented 4 years ago

You're absolutely right. I think it would be helpful to compare some current solutions with your mentioned use cases. It seems to be a good starting point for new docker swarm users which are looking for best practice implementation. As a beginner it's quite hard to find a simple route in 2020 for replicated volumes.

Maybe it would also help to list the mostly used products in 2020 and describe some implemtations for some use cases?

ramonck commented 4 years ago

Hey,

Maybe Galera is a good approach? I have not tested just found it in my searches. Insteresting because of the realtime round-robin thing so if falls in real-time another DB takes over due to the realtime replication no loss, sounds interesting. Not sure how it works in practice. https://blog.ruanbekker.com/blog/2019/05/10/running-a-ha-mysql-galera-cluster-on-docker-swarm/

Looking at the Galera site, MercadoLivre uses Galera.. they're the eBay of Latin America: https://galeracluster.com/

This looks like a paid product and they say to have a free version: https://severalnines.com/product/clustercontrol

ramonck commented 4 years ago

https://docs.docker.com/engine/examples/couchdb_data_volumes/

MichaelLeeHobbs commented 4 years ago

We use swarm in production with 80+ containers. In our environment ie AWS we use EFS for persistence. We have EFS mounted to all the swarm nodes and the docker files map the volumes to the efs mount. Works well for the small amount of persistence we need. EFS is expensive so if you had a large volume of data that needed persistence I'd use something else. As a general note, we will be moving to k8s so I'm not sure what we will do in the future. Overall, some sort of NFS mount has worked well in my experience. It's also simple to use once setup.

pascalandy commented 3 years ago

I use Resilio at the moment. But I'm about to switch to this.

To be clear, this has nothing to do with Swarm. It's just a folder that syncs between my nodes.

Ivanello commented 3 years ago

guys, what can You say about this option? https://github.com/vieux/docker-volume-sshfs

yolombana commented 3 years ago

Hola yo utilizo una infraestructura de almacenamiento distribuido con glusterfs replicado en 6 maquinas generando 6 volúmenes replicados con un quórum del 48% y funcionado en un cluster de docker swarm. Funciona bien. Solo debes tener cuidado con el cerebro dividido

decentral1se commented 2 years ago

https://github.com/moby/moby/issues/39624

tiangolo commented 11 months ago

I should let you know, that I had to deprecate this website and ideas, I would no longer recommend Docker Swarm Mode for new projects: https://dockerswarm.rocks/swarm-or-kubernetes/ 🥲

OCram85 commented 11 months ago

Thanks for the update on this.

Btw, I decided using NFS for volumes and still using docker swarm in production ;).