Fork of pschiffe/pcs
this image is modified to start pcs directly without running systemd.
You can also specify the password as an environment variable.
docker run .. -e PCS_PASS=secret ...
And a list of nodes with their IP addresses
PCS_NODES="node-a:10.0.0.1 node-b:10.0.0.2"
The /etc/hosts file will be patched
Original README:
Docker image with Pacemaker and Corosync managed by pcs.
To get this image, pull it from docker hub:
docker pull pschiffe/pcs
If you want to build this image yourself, clone the github repo and in directory with Dockerfile run:
docker build -t <username>/pcs .
To run the image:
docker run -d --privileged --net=host -p 2224:2224 -v /sys/fs/cgroup:/sys/fs/cgroup -v /etc/localtime:/etc/localtime:ro -v /run/docker.sock:/run/docker.sock -v /usr/bin/docker:/usr/bin/docker:ro --name pcs pcs
Pacemaker in this image is able to manage docker containers on the host - that's why I'm exposing docker socket and binary to the image (don't expose if not needed). Cgroup fs and privileged mode is required by the systemd in the container and --net=host
is required so the pacemaker is able to manage virtual IP.
Pcs web ui will be available on the https://localhost:2224/. To log in, you need to set password for the hacluster
linux user inside of the image:
docker exec -it pcs bash
passwd hacluster
Then you can use hacluster
as the login name and your password in the web ui.
You can create cluster in the web ui, or via cli. Every node in the cluster must be running pcs docker container and must have setup password for the hacluster
user. Then, on one of the nodes in the cluster run (modify pieces in []):
docker exec -it pcs bash
pcs cluster auth -u hacluster -p [hapass] [master1 master2 master3] # master[1-3] are hostnames of nodes in your cluster
pcs cluster setup --name [master] [master1 master2 master3]
pcs cluster start --all
pcs cluster enable --all
Create virtual ip:
pcs resource create virtual-ip IPaddr2 ip=[192.168.92.3] --group [master-group]
Define docker resource image:
pcs resource create [docker-master] ocf:heartbeat:docker image=[docker-master] reuse=1 run_opts='[-p 8080]' --group [master-group]
Disable stonith (this will start the cluster):
pcs property set stonith-enabled=false
You can view and modify your cluster in the web ui even when you created it in cli, but you need to add it there first (Add existing).