This is a light proxy which checks locally cluster (mariadb, percona, mysql, rabbitmq) and returns http code based on current status:
- 200 - Everything is fine. Node in cluster
- 503 - Node is out of sync
Intention of this service is to check consistency of a cluster.
If node gets another state but synced, this daemon will return 5xx to a http request from haproxy, keepalived or another service.
This will let you to exclude node from LBpool.
- Edit configuration file /etc/clusterhc/clusterhc.toml
- Run service
- Connect configure your LBpool to check localBind/(galera|rabbimq)
- Install go https://golang.org/doc/install
- Make a proper structure of directories:
mkdir -p /opt/go/src /opt/go/bin /opt/go/pkg - Setup g GOPATH variable:
export GOPATH=/opt/go - Clone this project to src:
go get github.com/leoleovich/clusterhc - Fetch dependencies:
cd /opt/go/github.com/leoleovich/clusterhc && go get ./... - Compile project:
go install github.com/leoleovich/clusterhc - Copy config file:
mkdir /etc/clusterhc /var/log/clusterhc && cp /opt/go/src/github.com/leoleovich/clusterhc/clusterhc.toml /etc/clusterhc/ - Run it
/opt/go/bin/clusterhc
- Create systemd service:
cp /opt/go/src/github.com/leoleovich/clusterhc/clusterhc.service /usr/lib/systemd/system - Reload systemd:
systemctl daemon-reload - Start clusterhc service:
systemctl start clusterhc.service - Check status:
systemctl status clusterhc.service