Uriel Fanelli 0e5f76f9bd | ||
---|---|---|
vendor | ||
.gitignore | ||
LICENSE | ||
README.md | ||
arp.go | ||
conf.go | ||
go.mod | ||
go.sum | ||
interface.go | ||
main.go | ||
memory.go | ||
multicast.go | ||
orchestrator.go | ||
types.go | ||
zoreide.json |
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.