GeekFactory

int128.hatenablog.com

keepalivedとハードウェアルータでVRRPを構成する

VRRPデフォルトゲートウェイ冗長化で多く使われています。LinuxクラスタミドルであるkeepalivedVRRPに対応しており、ハードウェアルータと組み合わせることができます。

今回はkeepalivedとIX2015でVRRPを構成してみました。といっても特殊な使い方をしているので、ネットワーク構成は参考にならないと思いますw

正常時はLinux Routerをデフォルトゲートウェイにします。Linux Routerに障害が発生した場合はIX2015がデフォルトゲートウェイになります。

本来はIX2015にルートをまとめる方が運用が簡単です。Gigabitでないことや内部トラフィックをIX2015に流さないことが理由でLinux Routerを経由させています。行き帰りのルートが違う時点でダメダメなんですが、今の持ち駒ではこれ以上難しい。。。余剰のノートPCをL3スイッチ代わりにしようかなー。

VRRPの仕組み

生きているルータのうち優先度の最も高いルータが仮想IPを持つようにします。仮想IPは大雑把にいうとNICにもう1つIPを振っているだけです。つまり、正常時はマスタルータのNICに仮想IPに振っておき、障害が発生した時はバックアップルータのNICに仮想IPを振り直すことになります。

ルータ間の死活確認にはマルチキャストを使います。

keepalived

Gentoo Linuxの場合は emerge sys-cluster/keepalived でインストールします。/etc/keepalived/keepalived.conf で設定します。

vrrp_instance VI_1 {
    state BACKUP
    interface bond0
    virtual_router_id 1
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass ********
    }
    virtual_ipaddress {
        172.16.3.254/24
    }
}

IX2015

インタフェースに対してvrrpコマンドを適用します。

VRRPでバックアップルータになっている間もDHCPサーバは有効のままです。DHCPで通知するデフォルトゲートウェイDNSサーバは仮想IPを指定しておきます。

ip dhcp profile homeNetwork
  assignable-range 172.16.3.180 172.16.3.199
  domain-name ***
  default-gateway 172.16.3.254
  dns-server 172.16.3.254
!
interface FastEthernet1/0:1.0
  ip address 172.16.3.251/24
  ip dhcp binding homeNetwork
  vrrp 1 ip 172.16.3.254
  vrrp 1 ip virtual-host
  vrrp 1 authentication ********
  vrrp 1 priority 100
  no shutdown
!
vrrp enable