Hi!
I’m trying to come up with a design for a initially small-medium infrastructure that uses docker and shared multi-host storage, but I’m not entirely sure which option would suite best or be the most feasible…
The idea is to setup a Docker infrastructure with access to a shared storage on which all images, data and shared configuration files are to be stored.
Initially we would have 4 hosts, in two different locations/DCs (two hosts in each DC), and maybe in the future we’d add more. And we need all 4 hosts and all containers on these to have access to the same storage (using Data Volumes).
This storage is to store the following:
- Docker images. The idea is to have one image on the storage, and be able to deploy multiple containers from the same image, avoiding the need to create the image multiple times.
- Common/Static config files. The idea is that for some apps and containers running the same app, we have one set of configuration files on the storage, and all apps on the containers read the configuration from there. This way if we need to do a change to the configuration, we can change it just once to affect all apps on all containers.
- Application Data. The idea is that Data generated by/within the apps is also stored on the shared storage, and accessible by other containers running the same app.
We’ve thought of two different ways of doing this:
Using a High Availability (HA) NFS server.
The idea would be to have either A) one NFS server in each DC, making one primary and replicating it on the other one, or B) two NFS servers in each DC, were Server A replicated Server B in DC1, and this is replicated to DC2.
Using Ceph
The idea would be to have either A) the Docker hosts setup as described initially, and another set of servers across the DCs to run Ceph, and have the Docker hosts and containers mount the location, or B) configure the Docker hosts to also run Ceph on a separate disk/partition.
The Ceph Option B is the one which seems best to us.
Ceph Option B (Link to image)
The storage would be setup in the following way:
Ceph Option B Storage Design (Link to image)
What do you guys think? Do you believe this is a viable option? Any better idea? Has anyone tried/done something like this?
Any comment/suggestion will be appreciated!
Thanks,
Kevin.