Ubuntu 22.04
Sponsored Link

Keepalived : インストール2023/10/11

 

VRRP (Virtual Router Redundancy Protocol) プロトコルを使用した高可用性を実装可能な Keepalived のインストールです。

当例では以下のような環境で、シンプルな仮想 IP アドレスの冗長構成の設定をします。

                            VIP:10.0.0.30
+----------------------+          |          +----------------------+
|  [node01.srv.world]  |10.0.0.51 | 10.0.0.52|  [node02.srv.world]  |
|     Keepalived#1     +----------+----------+     Keepalived#2     |
|                      |                     |                      |
+----------------------+                     +----------------------+

[1] 全ノードで Keepalived をインストールします。
root@node01:~#
apt -y install keepalived
[2] プライマリーとするノードでの設定です。
root@node01:~#
vi /etc/keepalived/keepalived.conf
# 新規作成
global_defs {
    # ホスト名を設定
    router_id node01
}

vrrp_instance VRRP1 {
    # プライマリーノードは [MASTER]
    # バックアップノードは [BACKUP]
    # 全ノードで [BACKUP] + [nopreempt] 指定した場合 自動フェイルバックしない
    state MASTER
    # 自動フェイルバックしない場合は [BACKUP] と合わせて指定
    # nopreempt
    # 仮想 IP を割り当てるインターフェース
    interface enp1s0
    # 各 VRRP インターフェースで一意の ID を指定
    # 同一 VRRP インターフェースでは同じ ID を指定
    virtual_router_id 101
    # [Master] > [BACKUP] な任意の値
    priority 200
    # VRRP 通知インターバル (秒)
    advert_int 1
    # 仮想 IP アドレス
    virtual_ipaddress {
        10.0.0.30/24
    }
}

root@node01:~#
systemctl restart keepalived
root@node01:~#
ip address show enp1s0

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:35:69:7c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.51/24 brd 10.0.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet 10.0.0.30/24 scope global secondary enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe35:697c/64 scope link
       valid_lft forever preferred_lft forever
[3] バックアップとするノードでの設定です。
root@node02:~#
vi /etc/keepalived/keepalived.conf
# 新規作成
global_defs {
    router_id node02
}

vrrp_instance VRRP1 {
    state BACKUP
    # nopreempt
    interface enp1s0
    virtual_router_id 101
    priority 100
    advert_int 1
    virtual_ipaddress {
        10.0.0.30/24
    }
}

root@node02:~#
systemctl restart keepalived
[4] 以上で設定完了です。プライマリーノードでリンクを落とす等して、仮想 IP アドレスがバックアップノードに切り替わるか確認しておきます。
# プライマリーノードでリンクダウン

root@node01:~#
ip address show enp1s0

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:35:69:7c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.51/24 brd 10.0.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet 10.0.0.30/24 scope global secondary enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe35:697c/64 scope link
       valid_lft forever preferred_lft forever
root@node01:~#
ip link set down enp1s0
# バックアップノード

root@node02:~#
ip address show enp1s0

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:7d:c5:e7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.52/24 brd 10.0.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet 10.0.0.30/24 scope global secondary enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe7d:c5e7/64 scope link
       valid_lft forever preferred_lft forever
# 仮想 IP アドレスが割り当てられている

# プライマリーノードでリンクアップ

root@node01:~#
ip link set up enp1s0

root@node01:~#
ip address show enp1s0

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:35:69:7c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.51/24 brd 10.0.0.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet 10.0.0.30/24 scope global secondary enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe35:697c/64 scope link
       valid_lft forever preferred_lft forever
# 自動フェイルバックした
関連コンテンツ