BIG-IP FIP(floating IP)の設定

スポンサーリンク

BIG-IPでfloating IPを設定する方法をまとめます。floating IPはBIG-IPのActive機側に付与されるIPアドレスで障害発生時は旧Standby機側にIPアドレスが引き継がれます。floating IP向けに通信を発生させる事によって、障害が発生してもサービスを継続する事ができます。

動作確認の構成

構成図

以下の構成で動作確認をします。pipは「physical ip(物理IPアドレス)」、fipは「floating ip」の略称です。

+----------------+                    +----------------+
| (RockyLinux84) |                    | (RockyLinux84) |
|    Client50    |                    |    Client51    |
|                |                    |                |
+-------+--------+                    +-------+--------+
 ens192 | .50       (vlan50 tagged)    ens192 | .51
        |           192.168.50.0/24           |
        +-------------------------------------+
        |                                     |
        | fip:.200                            | fip:.200
    1.2 | pip:.101 (vlan100 untagged)     1.2 | pip:.102
+-------+--------+  192.168.100.0/24  +-------+--------+
|                | .1              .2 |                |
|     BIG-IP     +--------------------+     BIG-IP     |
|    (bigip01)   | .1.3          .1.3 |    (bigip02)   |
+-------+--------+                    +-------+--------+
    1.1 | pip:.101                        1.1 | pip:.101
        | fip:.200  (vlan10 tagged)           | fip:.200
        |           192.168.10.0/24           |
        +-------------------------------------+
        |                                     |
 ens192 | .10                          ens192 | .11
+-------+--------+                    +-------+--------+
|                |                    |                |
|    Server10    |                    |    Server11    |
| (RockyLinux84) |                    | (RockyLinux84) |
+----------------+                    +----------------+

初期設定

BIG-IP VLANとIPアドレスの設定」と「BIG-IP Active Standby構成の構築」を併用した状態を初期設定とします。前述の構成図でFIP(floating IP)以外の設定が完了している状態とします。

bigip01 : BIG-IP 16.1.0
net vlan VLAN0010 {
    fwd-mode l3
    if-index 256
    interfaces {
        1.1 {
            tagged
        }
    }
    tag 10
}
net vlan VLAN0050 {
    fwd-mode l3
    if-index 272
    interfaces {
        1.2 {
            tagged
        }
    }
    tag 50
}
net vlan VLAN0100 {
    fwd-mode l3
    if-index 240
    interfaces {
        1.3 { }
    }
    tag 100
}
net self SelfIP_VLAN0010 {
    address 192.168.10.101/24
    allow-service all
    traffic-group traffic-group-local-only
    vlan VLAN0010
}
net self SelfIP_VLAN0050 {
    address 192.168.50.101/24
    allow-service all
    traffic-group traffic-group-local-only
    vlan VLAN0050
}
net self SelfIP_VLAN0100 {
    address 192.168.100.1/24
    allow-service all
    traffic-group traffic-group-local-only
    vlan VLAN0100
}
bigip02 : BIG-IP 16.1.0
net vlan VLAN0010 {
    fwd-mode l3
    if-index 256
    interfaces {
        1.1 {
            tagged
        }
    }
    tag 10
}
net vlan VLAN0050 {
    fwd-mode l3
    if-index 272
    interfaces {
        1.2 {
            tagged
        }
    }
    tag 50
}
net vlan VLAN0100 {
    fwd-mode l3
    if-index 240
    interfaces {
        1.3 { }
    }
    tag 100
}
net self SelfIP_VLAN0010 {
    address 192.168.10.102/24
    allow-service all
    traffic-group traffic-group-local-only
    vlan VLAN0010
}
net self SelfIP_VLAN0050 {
    address 192.168.50.102/24
    allow-service all
    traffic-group traffic-group-local-only
    vlan VLAN0050
}
net self SelfIP_VLAN0100 {
    address 192.168.100.2/24
    allow-service all
    traffic-group traffic-group-local-only
    vlan VLAN0100
}
BIG-IP Active/Standby間で同期される設定
ltm virtual VS_ALL {
    destination 0.0.0.0:any
    mask any
}

動作確認 (1) FIPのみの設定

FIPの設定

「Network」「Self IPs」の順に画面遷移し、「Create」を押下します。

BIG-IP FIPの設定 01

「Name」「IP Adress」「Netmask」「VLAN / Tunnel」を入力します。

「Traffic Group」はfloatとなるものを指定します。floatとなるtraffic-groupは「BIG-IP Active Standby構成の構築」の操作の過程で作成されます。デフォルトでは「traffic-group-1」という名前です。

以上の入力が完了したら「Finished」を押下します。

BIG-IP FIPの設定 02

コマンドラインで操作する場合は以下の通りです。

create net self SelfIP_FIP1_VLAN0010 address 192.168.10.200/24 vlan VLAN0010 allow-service all traffic-group traffic-group-1
create net self SelfIP_FIP1_VLAN0050 address 192.168.50.200/24 vlan VLAN0050 allow-service all traffic-group traffic-group-1

floating IPの設定はActive/Standby間で同期されます。もし、自動同期しない設定にしている場合は手動で同期してください。

BIG-IP FIPの設定 03

コマンドラインで操作する場合は以下の通りです。

run cm config-sync to-group <デバイスグループ名>

疎通確認

Server10からFIPへ、Client50からFIPへping応答がある事を確認します。この確認はBIG-IPの片系障害が発生しても疎通は継続されます。

[server10:RockyLinux8.4]
[root@server10 ~]# ping -c 3 192.168.10.200
PING 192.168.10.200 (192.168.10.200) 56(84) bytes of data.
64 bytes from 192.168.10.200: icmp_seq=1 ttl=255 time=0.446 ms
64 bytes from 192.168.10.200: icmp_seq=2 ttl=255 time=2.65 ms
64 bytes from 192.168.10.200: icmp_seq=3 ttl=255 time=0.394 ms

--- 192.168.10.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.394/1.163/2.650/1.051 ms
[root@server10 ~]# 

[client50:RockyLinux8.4]
[root@client50 ~]# ping -c 3 192.168.50.200
PING 192.168.50.200 (192.168.50.200) 56(84) bytes of data.
64 bytes from 192.168.50.200: icmp_seq=1 ttl=255 time=0.875 ms
64 bytes from 192.168.50.200: icmp_seq=2 ttl=255 time=0.475 ms
64 bytes from 192.168.50.200: icmp_seq=3 ttl=255 time=0.424 ms

--- 192.168.50.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2031ms
rtt min/avg/max/mdev = 0.424/0.591/0.875/0.202 ms
[root@client50 ~]# 

動作確認 (2) virtual serverの併用

virtual serverの設定

virtual serverのDestinationをFIP(floating IP)にする事で障害発生後も通信を継続させる事ができます。

以下のようなDestinationをFIP(floating IP)とするvirtual serverの設定を作成します。以下の設定をload sys config from-terminal mergeなどのコマンドを使用して流し込みます。

ltm node 192.168.10.10 {
    address 192.168.10.10
}
ltm node 192.168.10.11 {
    address 192.168.10.11
}
ltm pool pool01 {
    members {
        192.168.10.10:any {
            address 192.168.10.10
        }
        192.168.10.11:any {
            address 192.168.10.11
        }
    }
    monitor gateway_icmp
}
ltm virtual VS_01 {
    destination 192.168.50.200:any
    mask 255.255.255.255
    pool pool01
}

疎通確認

サーバ側のデフォルトゲートウェイがFIP(floating IP)に向いている事を確認します。

[server10:RockyLinux8.4]
[root@server10 ~]# ip route
default via 192.168.10.200 dev ens192 proto static metric 100 
192.168.10.0/24 dev ens192 proto kernel scope link src 192.168.10.10 metric 100 
[root@server10 ~]# 

[server11:RockyLinux8.4]
[root@server11 ~]# ip route
default via 192.168.10.200 dev ens192 proto static metric 100 
192.168.10.0/24 dev ens192 proto kernel scope link src 192.168.10.11 metric 101 
[root@server11 ~]# 

server10とserver11に大きなファイルを配置し、長時間ダウンロードの疎通確認ができるようにします。以下はCentOS7のイメージを/var/www/html配下に配置する例です。

[server10:RockyLinux8.4]
[root@server10 ~]# ls -l /var/www/html/
total 811008
-rwxr-xr-x 1 root root 830472192  9月  4 16:17 CentOS-7-x86_64-Minimal-1708.iso
[root@server10 ~]# 

[server11:RockyLinux8.4]
[root@server11 ~]# ls -l /var/www/html/
total 811008
-rwxr-xr-x 1 root root 830472192  9月  4 16:15 CentOS-7-x86_64-Minimal-1708.iso
[root@server11 ~]# 

この状態で、clientからserverへのHTTP download処理を発生させてみましょう

[client50:RockyLinux8.4]
[root@client50 ~]# wget -O /dev/null http://192.168.50.200/CentOS-7-x86_64-Minimal-1708.iso

ダウンロード発生中にActive機となるbigipを再起動させます。

[bigip01:BIG-IP 16.1.0]
[root@bigip01:Active:In Sync] config # reboot
Connection to 192.168.2.31 closed by remote host.
Connection to 192.168.2.31 closed.

再起動すると、以下のようにダウンロード処理がハングアップしています。これはwgetコマンドのタイムアウトがデフォルトの900秒だからです。

アプリケーションが適切なエラーハンドリングをしていれば業務停止する事はないのですが、以下スクリーンショットのように十分なエラーハンドリングをしてない場合は、業務が止まってしまいます。

エラーハンドリングのないダウンロード処理 01

このような状況はセッションレプリケーションと呼ばれる機能を用いて、BIG-IPのActive/Standby間でセッション情報を共有すれば通信断を避ける事ができます。

動作確認 (3) connection mirror

connection mirrorの設定

connection mirrorはvirtual serverに対して設定します。リスクの大きな設定ですので、Basicの設定画面では表示されません。

「Configuratoin」欄を「Advanced」に変更します。

connection mirrorの設定01

画面を下の方にスクロールさせ「Connection Mirro」にチェックを入れます。注意書き「May degrade performance when enable」とあるように、性能劣化を引き起こすのでイタズラに有効化して良い設定ではありません。アプリケーション側でエラーハンドリングできない特段の事情(殆どの場合は契約や予算)がある かつ 業務上の影響が大きくてダウンタイムを最小化したい場合のみに有効化する設定です。

connection mirrorの設定02

この設定をload sys config from-terminal mergeで反映させる場合は以下の通りです。

ltm virtual VS_01 {
    destination 192.168.50.200:any
    mask 255.255.255.255
    mirror enabled
    pool pool01
}

疎通確認

この状態で、clientからserverへのHTTP download処理を発生させてみましょう

[client50:RockyLinux8.4]
[root@client50 ~]# wget -O /dev/null http://192.168.50.200/CentOS-7-x86_64-Minimal-1708.iso

ダウンロード発生中にActive機となるbigipを再起動させます。

[bigip02:BIG-IP 16.1.0]
[root@bigip02:Active:In Sync] config # reboot
Connection to 192.168.2.32 closed by remote host.
Connection to 192.168.2.32 closed.

以下スクリーンショットのように障害発生後も問題なくダウンロード処理が継続されています。

エラーハンドリングのないダウンロード処理 02

タイトルとURLをコピーしました