Heartbeat daemon, IPv4/IPv6 unicast/broadcast/multicast, application-agnostic
Go to file
2024-09-16 18:51:59 +02:00
.gitignore Client part mostly works 2017-04-23 21:49:26 +02:00
AnnouncementGenerator.py Use 'with' instead of explicit acquire-release on locks 2022-03-13 01:09:36 +01:00
AnnouncementHandler.py Decode vagus_id in python3 2024-09-16 17:53:47 +02:00
ClientInterface.py Python3 support 2022-03-13 01:04:20 +01:00
Config.py Python3 support 2022-03-13 01:04:20 +01:00
details.md Fix typoe: broacast->broadcast 2024-09-16 18:51:59 +02:00
getifaddrs.py Python3 support 2022-03-13 01:04:20 +01:00
install.sh bugfix 2017-04-27 15:11:27 +02:00
InstanceDict.py Python3 support 2022-03-13 01:04:20 +01:00
InstanceRegistry.py Use 'with' instead of explicit acquire-release on locks 2022-03-13 01:09:36 +01:00
LICENSE Updated LICENSE 2024-09-16 18:10:35 +02:00
logging_webserver.conf Made install script 2017-04-27 14:58:05 +02:00
logging.conf Removed references to pika in logging.*.conf (copy-pasted) 2017-04-27 14:06:50 +02:00
logging.dev.conf Removed references to pika in logging.*.conf (copy-pasted) 2017-04-27 14:06:50 +02:00
README.md Reference details.md in README.md 2024-09-16 18:10:21 +02:00
run_webserver.sh Made install script 2017-04-27 14:58:05 +02:00
run.sh Made install script 2017-04-27 14:58:05 +02:00
TCPCommandLineServer.py Python3 support 2022-03-13 01:04:20 +01:00
TCPHandler.py Use 'with' instead of explicit acquire-release on locks 2022-03-13 01:09:36 +01:00
test_client.py Make test_client print out usage if not given arguments 2024-09-16 17:59:12 +02:00
UDPHandler.py Python3 support 2022-03-13 01:04:20 +01:00
UDPMulticastHandler.py Remember announcement source address (for debugging and informational purposes) 2017-04-27 13:05:30 +02:00
vagus_webserver.py Python3 support in webserver 2024-09-16 18:44:33 +02:00
vagus_webserver.service Made install script 2017-04-27 14:58:05 +02:00
vagus.py Python3 support 2022-03-13 01:04:20 +01:00
vagus.service Made install script 2017-04-27 14:58:05 +02:00
VagusRegistry.py Handle instance expiry correctly 2024-09-16 17:48:00 +02:00

Vagus - A heartbeat/keepalive daemon

Vagus is daemon that can exchange alive-information from instances so clients can get an overview of what is alive. It is meant to scale to at least 50 hosts.

It supports:

  • IPv4 and IPv6
  • UDP unicast
  • UDP broadcast
  • UDP multicast
  • Multiple namespaces/clusters

It is not a full-fledged HA system. It merely provides a mechanism for building a HA system.

For configuration details please read details.md

Platforms

Tested on:

  • Python 2.7.6, 2.7.12, 3.6.15, 3.11.9
  • Linux 3.11.10, 4.4.57, 4.4.62, 5.14.21

It will not work on Windows because it needs to discover network interfaces and addresses using the getifaddrs() system call.

Installation

Vagus comes with an install script that installs it as a system service running under systemd.

  1. clone the respository
  2. with root priviliges run install.sh

Done. Vagus has now been installed into /usr/local/vagus, and it is already running. It has a non-mandatory read-only web interface running on port 8724.

Background

It was built for use in https://github.com/privacore/open-source-search-engine

The name Vagus comes from the vagus nerve which partially controls the human heart.