HA setup
Simple docker-compose deployment to experiment with Cells v4 Clustering model.
It uses pydio/cells:unstable
docker image, use whatever image by editing the docker-compose.yml file.
Preparing dependencies
HA deployments relies on external dependencies to make Cells image fully stateless. This sample creates the following images : MySQL, MongoDB, NATS.io, ETCD, Hashicorp Vault and Redis.
This Vault requires a manual preparation for a specific key/value store (see below)
cd <this folder>
# start all third-party services
docker-compose up -d mysql mongo nats etcd vault redis minio caddy
# create buckets in minio
docker-compose up createbuckets
# Create a dedicated kvstore for certificates in Vault (configured in DEV mode with a preset VAULT_TOKEN, this should not be the case in production)
docker-compose exec -e VAULT_ADDR=http://localhost:8200 -e VAULT_TOKEN=secret_vault_token vault vault secrets enable -version=2 -path=caddycerts kv
Starting Cells Nodes
# Start one node, then open https://localhost:8080 to perform the install, it will read the conf/install-conf.yaml file
docker-compose up -d cells1; docker-compose logs -f cells1
Now you can spin more cells nodes:
# Once install is finished, start other nodes
docker-compose up -d cells2 cells3; docker-compose logs -f cells2 cells3
Caddy LoadBalancer Access
Caddy load balancer is configured in self-signed mode. This requires adding localhost => caddy domain name to your local /etc/hosts file.
Once started, it will monitor cells instances on /pprofs endpoint to automatically enable/disable upstreams.
Access https://caddy:8585/ to access Cells. Enjoy!
Stopping cluster
# To clean everything
docker-compose down -v --remove-orphan
Clean jwt table
docker exec -i pydio_mysql mysql -u pydiouser -pcellspasswrd cells < clean-jwt.sql
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE hydra_oauth2_trusted_jwt_bearer_issuer;
TRUNCATE hydra_jwk;
SET FOREIGN_KEY_CHECKS = 0;