MinIO permite replicación multi-site a dos niveles:
A nivel de bucket: Donde es necesario configurar la replicación de cada bucket https://blog.min.io/minio-multi-site-active-active-replication/. Este tipo de replicación no es apta para Onesait Platform, ya que los bucket se crean automáticamente para cada usuario dinámicamente, por lo que implicaría estar configurando la replicación cada vez que se añadiera un bucket (y aunque se podría automatizar, el siguiente nivel que veremos ya lo cubre).
A nivel de Cluster: Donde se configura que todo el cluster tendrá replicación en otro sitio, de manera que cada bucket/objeto que se añada o modifique se verá reflejado en el sitio replicado. A nivel de infraestrucutra, el despliegue sería el siguiente
Los requisitos necesarios para configurar la replicación a nivel de cluster son:
Tener vacio de usuarios, buckets y objetos el Site donde se hará la réplica.
Publicar en todos los Sites (o abrir a VPN) el puerto del servicio “minio” en Kubernetes. Este puerto es el que balancea entre los Minio-server que se tengan desplegados. Por ejemplo con un Ingress al puerto 9000 del servicio, utilizando un nombre FQDN:
Si el servicio “minio” se ha expuesto en cada Site utilizado FQDNs que no están en un DNS, indicar en Kubernetes a todos los statefulset de Minio-Console y Minio-Server como resolverlos:
En el Site principal, entrar en la consola de administración de Minio utilizando el usuario onesaitMinio. La consola de administración se expone siempre a traves del loadbalancer bajo el FQDN: https://minioadmin-<dominio>
Localizar en la consola principal la opción de menú Administrator > Site Replication y pulsar Add Replication Site. Configurar en esta pantalla el Site principal y los Sites replicados. En nuesto caso, como expusimos el servicio “minio” a través de un Ingress y mapeamos sus FQDN en los Host Aliases, podemos utilizar dichas urls para configurar la replicación.
Una vez hecho esto, se compia todo automáticamente y se tiene sincronización bidireccional entre ambos sitios.
Incluso si son instancias de plataforma diferentes, conforme los usuarios se crean en la instancia del Site replicado y entran a su bucket, lo encontrarán poblado con los ficheros del Site principal.