High Availability daemon to share an IP around N servers.
Go to file
Uriel Fanelli 0e5f76f9bd Using UUID instead of int64 2023-08-14 19:51:04 +02:00
vendor Using UUID instead of int64 2023-08-14 19:51:04 +02:00
.gitignore Initial commit, plus re-creating the repo 2023-08-09 16:25:40 +02:00
LICENSE Add 'LICENSE' 2023-08-09 16:52:18 +02:00
README.md Update 'README.md' 2023-08-10 22:31:27 +02:00
arp.go Some more useful logs, to troubleshoot. 2023-08-12 23:49:38 +02:00
conf.go Using UUID instead of int64 2023-08-14 19:51:04 +02:00
go.mod Using UUID instead of int64 2023-08-14 19:51:04 +02:00
go.sum Using UUID instead of int64 2023-08-14 19:51:04 +02:00
interface.go Using UUID instead of int64 2023-08-14 19:51:04 +02:00
main.go Truncation error in int64 numbers fixed 2023-08-13 10:54:00 +02:00
memory.go Using UUID instead of int64 2023-08-14 19:51:04 +02:00
multicast.go Added ARP Management. You know, cisco FA 2023-08-10 22:15:08 +02:00
orchestrator.go Using UUID instead of int64 2023-08-14 19:51:04 +02:00
types.go Using UUID instead of int64 2023-08-14 19:51:04 +02:00
zoreide.json Using UUID instead of int64 2023-08-14 19:51:04 +02:00

README.md

ZOREIDE

High Availability daemon to share an IP around N servers.

Zoreide is a daemon service you can use to share an IP among N servers. If the server owning the IP is down, another one will replace it. Differently than Keepalived, it allows N servers instead of just 2. Perfect for docker-swarm arrays.

The daemon uses Multicast in order to elect the node which will have the IP configured.

To use it, you need:

  • root access to the servers
  • a valid multicast IP address in your network. (otherwise you can use the ones in zoreide.json)
  • linux servers under the same router.

To compile it , you need:

  • golang compiler 1.21 or superior.
  • git , to download this repo.
  • write "go build"
  • ./zoreide &

Configuration contains:

{
  "MulticastConfig": {
    "MIpAddr": "239.0.0.19",
    "MPort": "9898",
    "MaxDatagramSize": 18
  },
  "InterfaceConfig": {
    "ExistingInterface": "eth0",
    "BridgeIpCIDR": "10.0.1.1/24"
  },
  "debug": false
  }

Where:

  • MIpAddr is the multicast address all the nodes will use to align.Must be the same on all nodes.

  • Mport: Multicast port to subscribe. Must be the same on all nodes.

  • MaxDataGramSize : obsolete, will be removed soon.

  • ExistingInterface: the name of your ingress interface (eth0, eno0 , enps18, whatever your system is using. This may be different node by node)

  • BridgeIpCidr: the IP address and mask you want to share among servers.

  • wether you want debug logs or not.

FAQ

  • why? Keepalived wasn't enough?

  • VRRP is ok, but it has just two states, active and passive. I want to have as much as nodes as I want.

  • why you need more than one server to share the IP?

  • because 6 is better than 2 for HA.

  • MetalLb under Kubernetes can achieve the same.

  • Nobody really needs kubernetes with less than 20 servers. I want a floating , HA IP without this.