Alpine / OpenRC デプロイ
Alpine Linux では routerd は OpenRC を service manager として扱います。 one-shot apply は routerd 管理のローカルサービスまで含めて自己完結します。
routerd validate --config /usr/local/etc/routerd/router.yaml
routerd plan --config /usr/local/etc/routerd/router.yaml
routerd apply --config /usr/local/etc/routerd/router.yaml --once
mode: vrrp の VirtualAddress がある場合、
routerd は /etc/keepalived/keepalived.conf を render し、OpenRC の
keepalived init script を導入し、rc-update で有効化します。config
変更は daemon mode と同じ VRRP controller 経路で適用し、daemon が稼働中なら
rc-service keepalived reload、必要な場合は restart に fall back します。
生成 script は起動前に keepalived --config-test --use-file /etc/keepalived/keepalived.conf を実行します。
routerctl show vrrp の role は live interface state から観測します。
Linux/OpenRC では ip addr show で VIP を持っている node を master、
持っていない peer を backup と判定します。
LAST_TRANSITION は routerd または routerctl show vrrp がその node の
role 変化を最後に観測した時刻です。keepalived 単独の failover では、CLI が
次に live VIP ownership を読んだタイミングで更新されます。
host を変更せず Alpine 向け出力を確認するには次を使います。
routerd render alpine --config /usr/local/etc/routerd/router.yaml
VRRP VIP を含む config では OpenRC init script と keepalived.conf が
preview に含まれます。Kubernetes API VIP で、同じ VIP 上に DNS port 53
と API ingress port 6443 を併用する例は
examples/k8s-routerd-vip-alpine.yaml を参照してください。
Live ISO では /usr/local/etc/routerd/router.yaml が存在する場合、ログイン
時の wizard は起動しません。boot command line に次を入れても抑止できます。
routerd.skip-wizard=1
どちらの条件も満たさない場合、Live ISO はログイン時に 5 秒だけ wizard の
開始入力を待ちます。入力が無ければ wizard 経路を終了し、ephemeral mode の
まま動きます。後から開始する場合は
/usr/share/routerd/install.sh configure を実行します。
Live ISO は autostart 経路で udhcpc を常駐 DHCP client として起動し、
boot 後も lease の renew/rebind を継続します。DHCP hostname は
routerd.hostname=、routerd.live_hostname=、top-level Router の
metadata.name、または MAC address 由来の fallback から決めます。既定では
DHCP option 61 は送らないため、Ethernet MAC で client を識別する DHCP server
では同じ client identity のまま扱われます。明示的な DHCP client ID が必要な
場合だけ、hex 値を routerd.dhcp_client_id= で指定します。
Kubernetes VIP example のように advertInterval が 1 秒の構成では、active
node の keepalived を停止すると、おおむね数秒で backup へ VIP が移ります。
keepalived の検出窓は概ね advertInterval * 3 です。高 priority node への
reclaim は、設定した preemptDelay と次の advert convergence window の後に
進みます。