VyOS で VRRP を利用する

はじめに

「VyOS ってなに?」
「VRRP って聞いたことあるけどよく分からない」
「どうやって設定するの?」

検証環境などで、VyOS を利用したり、VRRP の動作検証を行うことは少なくないと思います。

本記事では VyOS のデプロイから初期設定、VRRP を利用する手順を紹介しています。

デプロイ

システム要件の要求水準はかなり低いため割り当てるリソースは、vCPU 1、 メモリ 1GB、ディスク 8GB くらいで問題ありません。

検証用で利用する場合は複数のネットワークに足を出すケースが多いと思います。ネットワークアダプタは必要な数だけ追加しておきます。

VRRP を利用するので今回は 2台の仮想マシンを準備しています。

初期設定について

初期ユーザ名・パスワードは vyos/vyos です。

ローカルのディスクからブートするように設定します。

vyos@vyos:~$ install image

最新のローリングバージョンを利用する場合は注意が必要かもしれません。

当時最新の「vyos-1.4-rolling-202110310317-amd64.iso」で作業を進めていたところ、仮想NIC の MACアドレスが正しく認識されなかったり、MAC アドレスの重複が起こったりでかなりハマりました。(おそらく不具合です。)

結局今回はたまたまローカルに残してあった古い 1.3 のバージョンでインストールしています。

基本的になにか設定をしたい場合は conf で設定モードに入ります。

vyos@vyos:~$ configure
[edit]
vyos@vyos#

設定モードからは run show conf で現在の設定値を確認できます。

ホスト名はデフォルトで vyos になっているので変更します。

vyos@vyos# set system host-name vyos01

各インターフェースに IP アドレスを設定します。

vyos@vyos01# set interface ethernet eth0 address 192.168.1.1/24
[edit]
vyos@vyos01# commit
[edit]
vyos@vyos01# save

SSH の設定をします。

vyos@vyos01# set service ssh

NTP の設定をします。

vyos@vyos01# set system ntp server 192.168.x.x/24

デフォルトゲートウェイの設定をします。

 vyos@vyos01# set protocol static route 0.0.0.0/0 next-hop 192.168.0.1

VRRP の構成

そもそもVRRPってなにさ?

VRRP とは

VRRP(Virtual Router Redundancy Protocol)は、その名の通り、ルータの冗長化を目的としたプロトコルです。

ルータ冗長化のためのプロトコルはその他にもありますが、VRRP は IETF が標準化しているプロトコルなのでマルチベンダー環境で利用できるという特性があります。

複数のルータを束ねて、論理的に 1つのルータにみせるような仕組みになっています。

実際にパケットの処理を行うルータはマスタールータと呼ばれ、それ以外のルータはバックアップルータとして、マスタールータがダウンしたときに処理を引き継ぎます。

基本設定方法

基本設定の流れは、以下の通りです。

  1. VRRP グループを作成 (VRID という ID でグループを管理します)
  2. グループにインターフェースを追加
  3. グループに VIP(仮想IPアドレス) を設定

※ クライアントはここで設定した VIP に接続するイメージとなります。
※ VRID は任意の数値を設定してください。グループ名も下記では「mgmt」としていますが、任意のものを設定してください。
※ VRRP に参加する全ての VyOS で設定が必要です。

vyos@vyos01# set high-availability vrrp group mgmt vrid 10
[edit]
vyos@vyos01# set high-availability vrrp group mgmt interface eth0
[edit]
vyos@vyos01# set high-availability vrrp group mgmt virtual-address 172.xx.x.xx/24

run show vrrp で VRRP の状態を確認できます。

commit しないと VRRP のプロセスが開始されないため注意が必要です。

vyos@vyos02# commit
[ high-availability vrrp ]
Starting the VRRP process

[edit]
vyos@vyos02# run sh vrrp
Name    Interface      VRID  State    Last Transition
------  -----------  ------  -------  -----------------
mgmt    eth0             10  BACKUP   5s
Priority の設定

どのルータをマスタルータとするかはプライオリティの値によって決定されます。

プライオリティ値をそれぞれ適切に定義をすることで、VIP ごとにそれぞれのルータで負荷分散を行うことができます。

vyos@vyos01# set high-availability vrrp group mgmt priority 200
ーーー
vyos@vyos02# set high-availability vrrp group mgmt priority 100

今回は VRID が 10,50,30 の VIP 宛の通信は vyos01 、VRID が 20,40 の通信は vyos02 で処理を分散するよう設定してみました。

vyos@vyos01# run sh vrrp
Name     Interface      VRID  State    Last Transition
-------  -----------  ------  -------  -----------------
mgmt     eth0             10  MASTER   13s
n-mgmt   eth1             20  BACKUP   13s
tep      eth4             50  MASTER   13s
vmotion  eth2             30  MASTER   13s
vsan     eth3             40  BACKUP   3s

因みにルータ間のキープアライブはマルチキャストにて行われます。

ユニキャストに変更することも設定次第で可能なようなので、NW環境に合わせて選択することができます。

以上です!