PulseHA is a active-passive high availability cluster daemon that uses GRPC and is written in GO.
___ __ __ _____
/ _ \__ __/ /__ ___ / // / _ |
/ ___/ // / (_-</ -_) _ / __ |
/_/ \_,_/_/___/\__/_//_/_/ |_|
PulseHA is an active-passive cluster communications manager (CCM) daemon written in GO that provides a means of communication and membership monitoring within a network cluster. By utilising Remote Procedure Calls (RPC) using Google’s GRPC, PulseHA provides a reliable method of communication to ensure network high availability.
PulseHA attempts to solve high availability with a more simple approach but without restricting functionality with the use of additional custom plugins.
First you will need to clone this repository into $GOPATH/src/github.com/Syleron/PulseHA
and execute the following command(s):
$ sudo make
...
Lastly, you can install PulseHA by executing the following:
$ sudo make install
...
Cluster status
$ pulsectl status
Create a cluster
$ pulsectl create <bind ip> <bind port>
Join a cluster
$ pulsectl join -bind-ip=<bind ip> -bind-port=<bind port> -token=<cluster token> <dest ip> <dest port>
Leave a cluster
$ pulsectl leave
Remove from a cluster
$ pulsectl remove <member hostname>
Promote cluster member to become active
$ pulsectl promote <member hostname>
Generate new cluster token
$ pulsectl token
Create Floating IP Group
$ pulsectl -name=<group name> new
Delete Floating IP Group
$ pulsectl -name=<group name> delete
Assign Floating IP Group
$ pulsectl -name=<group name> -node=<member hostname> -iface=<net iface> assign
Un-assign Floating IP Group
$ pulsectl -name=<group name> -node=<member hostname> -iface=<net iface> unassign
Add Floating IP to a Floating IP Group
$ pulsectl groups -name=<group name> -node=<member hostname> -ips=<ip CIDR> -iface=<net iface> add
Remove Floating IP to a Floating IP Group
$ pulsectl groups -name=<group name> -node=<member hostname> -ips=<ip CIDR> -iface=<net iface> remove
Re-generate TLS certificates
$ pulsectl cert <bind ip>
Update/Change config value
$ pulsectl config <config key> <config value>
Re-sync network interfaces
$ pulsectl network resync
Pulsectl help
$ pulsectl help
Pulsectl version
$ pulsectl version
PulseHA offers a plugin system to extend the built in functionality available.
Each plugin with configurable options will be stored as part of the main PulseHA config.
The following types of plugins are currently available:
PulseHA requires a networking plugin for any floating address fencing.
The default networking plugin can be built using the following command:
$ sudo make netcore
...
Use the following command to install the plugin:
$ sudo install plugin-netcore
...
There are no configurable options for this plugin.
The email alerts plugin offers email notifications upon failover.
Use the following command to build this plugin:
$ sudo make genemailalerts
...
Use the following command to install the plugin:
$ sudo install plugin-genemailalerts
...
The following are configurable options:
The Ping Groups plugin offers you to configure a single or group of network addresses as ICMP health checks.
Note: Currently ONLY has IPv4 support.
Use the following command to build this plugin:
$ sudo make hcping
...
Use the following command to install the plugin:
$ sudo install plugin-hcping
...
The following are configurable options:
The Serial plugin offers serial as an additional method of communication.
Use the following command to build this plugin:
$ sudo make hcserial
...
Use the following command to install the plugin:
$ sudo install plugin-hcserial
...
The following are configurable options:
Thank you to all authors who have and continue to contribute to this project.
PulseHA source code is available under the AGPL License which can be found in the LICENSE file.
Copyright (c) 2017-2022 Andrew Zak [email protected]