/pcs

pcs docker image with pacemaker and corosync

Primary LanguageShellGNU General Public License v2.0GPL-2.0

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:

pcs

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.

Example usage

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).