Multi-node Docker deployments
This document provides a sample approach to set up the database and other infrastructure for a multi-node Release deployment using Docker Compose.
The production setup for Release, as described here, can be implemented using Docker Compose as outlined below.
- For production deployments, it is recommended to use Kubernetes to orchestrate the deployment of applications. Docker Compose is not ideal for production. Proceed at your own risk.
- For HA setup, mount a license file or provide an environment variable
XL_LICENSE
containing a base64-encoded license text for the Release instances. - The folders you mount must be owned by user
10001
. For example, runsudo chown -R 10001 xl-release
if you are mounting directories under$PWD/xl-release
.
Setup
- Load balancer with HAProxy
- PostgreSQL database (single-node setup)
- Release nodes
Limitations
- At least three Release nodes are required to form a valid cluster.
- PostgeSQL database is used for illustrative purposes. Use your own or an external database for production.
- The MQ setup is for demo purposes. Use your own or an external MQ for production.
- The HAProxy setup is for demo purposes. Use your own for production.
Steps
Follow these steps to deploy the sample:
-
Download the Docker Compose sample to your working directory and modify as needed.
-
(Optional) Download the run.sh script and update passwords as required.
-
Start the containers using Docker Compose:
docker-compose -f docker-compose-xlr-ha.yaml up --scale xl-release-master=2 -d
This command will start all services in detached mode and scale the
xl-release-master
service to 2 instances. Adjust the scale as needed for your setup. -
(Optional) To check the status of the running containers:
docker-compose -f docker-compose-xlr-ha.yaml ps
-
View logs of individual containers:
docker logs <container_name> -f
-
Access the Release UI at: http://localhost:8081
-
To shut down the setup, run:
docker-compose -f docker-compose-xlr-ha.yaml down
For upgrade procedures, see Upgrading Multi-Node Docker Deployments.