GlusterFSで構築したファイルシステムを2つのNFSサーバーで公開し、Keepalivedを使用してフェイルオーバー機能を実装する方法

Jul 28, 2024, 1:56 PM
前回のブログ「NASを持っていないので、GlusterFSで分散ファイルシステムを構築してNFSとして運用する」で構築したNFS x 2 に Keepalived で 仮想IPを割り振ってフェイルオーバー機能を実装します。

Keepalived をインストールする

NFSサーバー2台でインストール
sudo apt-get install -y keepalived

Keepalived を設定する

1台目のNFS
sudo nano /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
state MASTER
interface enp1s0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
10.0.0.60
}
}

sudo systemctl start keepalived
sudo systemctl enable keepalived

2台目のNFS
sudo nano /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
state MASTER
interface enp1s0
virtual_router_id 51
priority 90
advert_int 1
virtual_ipaddress {
10.0.0.60
}
}

sudo systemctl start keepalived
sudo systemctl enable keepalived

仮想IPアドレスが割り振られているか確認する

1台目
$ ip addr show enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 38:f7:cd:c7:f3:17 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.31/23 metric 100 brd 10.0.1.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet 10.0.0.60/32 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::3af7:cdff:fec7:f317/64 scope link
valid_lft forever preferred_lft forever
enp1s0 に 10.0.0.60 が割り振られています。

2台目
$ ip addr show enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 38:f7:cd:c7:a9:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.32/23 metric 100 brd 10.0.1.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::3af7:cdff:fec7:a956/64 scope link
valid_lft forever preferred_lft forever
1台目が生きているので、2台目には、10.0.0.60 が割り振られていません。

フェイルオーバーのテスト

1第目のkeepalived を落としてみて、2台目に仮想IPが移るか?を確認します。

1台目
$ sudo systemctl stop keepalived
ip addr show enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 38:f7:cd:c7:f3:17 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.31/23 metric 100 brd 10.0.1.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::3af7:cdff:fec7:f317/64 scope link
valid_lft forever preferred_lft forever

2台目
$ ip addr show enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 38:f7:cd:c7:a9:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.32/23 metric 100 brd 10.0.1.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet 10.0.0.60/32 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::3af7:cdff:fec7:a956/64 scope link
valid_lft forever preferred_lft forever

想定通り、2台目に 10.0.0.60 が割り振られています。

1台目を復帰させる
$ sudo systemctl start keepalived
$ ip addr show enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 38:f7:cd:c7:f3:17 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.31/23 metric 100 brd 10.0.1.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet 10.0.0.60/32 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::3af7:cdff:fec7:f317/64 scope link
valid_lft forever preferred_lft forever

2台目
$ ip addr show enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 38:f7:cd:c7:a9:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.32/23 metric 100 brd 10.0.1.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::3af7:cdff:fec7:a956/64 scope link
valid_lft forever preferred_lft forever

こちらも想定通り、1台目に 10.0.0.60 が割り振られています。

とても良い感じに動いてくれています🍻
NASを持っていないので、GlusterFSで分散ファイルシステムを構築してNFSとして運用するNASを持っていないので、GlusterFSで分散ファイルシステムを構築してNFSとして運用する
Kubernetes Dashboard インストール & Unknown error (200): Http failure during parsing for https://xxxx.xx/api/v1/csrftoken/login エラーの原因Kubernetes Dashboard インストール & Unknown error (200): Http failure during parsing for https://xxxx.xx/api/v1/csrftoken/login エラーの原因