Bisher hatte ich immer gedacht, es wäre gar nicht möglich, IP-Failover mit keepalived in Triton zu konfigurieren. Es ist aber (vermutlich aus guten Gründen) nur für den Normaluser nicht möglich. Mit Admin-Unterstützung kann man bhyve-Instanzen erzeugen, die mit Hilfe einer "Service IP" z. B. einen hochverfügbaren Loadbalancer bereitstellen.
Der Administrator kann über das Admin-UI Instanzen erzeugen, denen IP-Adress- und MAC-Adress-Spoofing erlaubt sind:
Für meine bhyve-Instanz sieht die entsprechende Konfiguration dann z. B. so aus:
! Configuration File for keepalived
vrrp_instance VI_1 {
state MASTER
interface net0
virtual_router_id 101
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.65.69.45
}
}
Die andere Instanz bekommt z. B. die virtual_router_id 100
und eine höhere oder niedrigere priority
. Danach übernimmt die Instanz mit der höheren Priorität automatisch die IP-Adresse:
Sep 28 09:13:21 localhost systemd[1]: Started Keepalive Daemon (LVS and VRRP).
Sep 28 09:13:21 localhost Keepalived_vrrp[8710]: (VI_1) received lower priority (100) advert from 10.65.69.158 - discarding
Sep 28 09:13:24 localhost Keepalived_vrrp[8710]: message repeated 3 times: [ (VI_1) received lower priority (100) advert from 10.65.69.158 - discarding]
Sep 28 09:13:24 localhost Keepalived_vrrp[8710]: (VI_1) Entering MASTER STATE
[...]
2: net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:b8:d0:6a:c3:d2 brd ff:ff:ff:ff:ff:ff
altname enp0s6f0
inet 10.65.69.109/24 brd 10.65.69.255 scope global net0
valid_lft forever preferred_lft forever
inet 10.65.69.45/32 scope global net0
valid_lft forever preferred_lft forever
inet6 fe80::92b8:d0ff:fe6a:c3d2/64 scope link
valid_lft forever preferred_lft forever
[...]
Die Service IP bzw. virtual_ipaddress
muß man natürlich vorher in der Admin-UI reservieren:
Jetzt muß man nur noch einen Dienst konfigurieren, der diese Funktion benutzt.