BIG-IP Active Active構成

スポンサーリンク

BIG-IPでActive/Active構成を実装する方法を説明します。このActive/Activeは言葉のあや(限りなく詐欺に近い)セールストークで、実態はtraffic-groupを2つ作成し、それぞれ別の機器をActiveに振り分ける事で実現します。お客様がActive/Activeという言葉に過度の期待を抱かれると、落とし所を見るけるのが非常に大変な設計ポイントのひとつです。

動作確認の構成

構成図

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

+----------------+                    +----------------+
| (RockyLinux84) |                    | (RockyLinux84) |
|    Client50    |                    |    Client51    |
|                |                    |                |
+-------+--------+                    +-------+--------+
 ens192 | .50       (vlan50 tagged)    ens192 | .51
        |           192.168.50.0/24           |
        +-------------------------------------+
        |                                     |
        | fip:.220                            | fip:.220(active)
        | fip:.200(active)                    | 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 (active)                   | fip:.200
        | fip:.220                            | fip:.220(active)
        |           (vlan10 tagged)           | 
        |           192.168.10.0/24           |
        +-------------------------------------+
        |                                     |
 ens192 | .10                          ens192 | .11
+-------+--------+                    +-------+--------+
|                |                    |                |
|    Server10    |                    |    Server11    |
| (RockyLinux84) |                    | (RockyLinux84) |
+----------------+                    +----------------+

初期設定

BIG-IP FIP(floating IP)の設定 (いまここ)」が完了した状態を初期設定とします。

既に1つのtraffic-groupに対して2個のFIPが付与されています。この状態から、traffic-groupを1つ追加して計2個にして、さらに新たに追加されたtraffic-groupに対して2個のFIPを追加し合計4個のFIPが存在する状態にします。

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
}
ltm virtual VS_ALL {
    destination 0.0.0.0:any
    mask any
}
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間で同期される設定
net self SelfIP_FIP1_VLAN0010 {
    address 192.168.10.200/24
    traffic-group traffic-group-1
    vlan VLAN0010
}
net self SelfIP_FIP1_VLAN0050 {
    address 192.168.50.200/24
    traffic-group traffic-group-1
    vlan VLAN0050
}
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
}
ltm virtual VS_ALL {
    destination 0.0.0.0:any
    mask any
}

動作確認 (1) traffic-gropuとfloating IP

2つ目のtraffic-groupの作成

「Device Management」「Traffic Group」の順に画面遷移し、「Create」を押下します。

BIG-IP Active/Active設定のためのトラフィックグループ作成 01

「Name」欄に何か分かりやすいトラフィックグループ名を入力し、「Create Traffic Group」を押下します。

「Name」以外のパラメタは高可用性に関するチューニングです。詳しくは「BIG-IP Active Standby構成のチューニング」を参照ください。

BIG-IP Active/Active設定のためのトラフィックグループ作成 02

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

create cm traffic-group <トラフィックグループ名>

トラフィックグループの設定はActive/Standby間で同期されます。もし、自動同期しない設定にしている場合は手動で同期してください。

BIG-IP Active/Active設定のためのトラフィックグループ作成 03

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

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

Active/Active設定

今現在の状態では、trafiic-group-1とtrafiic-group-2の両方がbigip01をActiveとしています。trafiic-group-1とtrafiic-group-2が別々の機器をActiveとするように設定します。

「Device Management」「Traffic Group」の順に画面遷移し、「trafiic-group-2」を押下します。

BIG-IP Active/Active 設定 01

「Force to Standby」を押下します。その後、確認メッセージが表示されるので、もう一度「Force to Standby」を押下します。

BIG-IP Active/Active 設定 02

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

run sys failover standby traffic-group traffic-group-2 

traffic-group-1とtraffic-group-2が、それぞれ異なる機器をActiveとしているのを確認します。

BIG-IP Active/Active 設定 03

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

root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# show cm traffic-group

--------------------------------------------------------------------------------
CentMgmt::Traffic-Group 
Name                      Device              Status   Next    Previous  Active
                                                       Active  Active    Reason
--------------------------------------------------------------------------------
traffic-group-1           bigip01.gokatei.go  active   false   false     peer-offline
traffic-group-1           bigip02.gokatei.go  standby  true    false     -
traffic-group-2           bigip01.gokatei.go  standby  true    true      -
traffic-group-2           bigip02.gokatei.go  active   false   false     peer-forced-standby
traffic-group-local-only  -                   -        -       -         -

root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# 

FIPの作成

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

BIG-IP Active/Active構成向けのFIP追加 01

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

「Traffic Group」は、先ほど新規作成した「traffic-group-2」を指定します。

以上の入力が完了したら「Finished」を押下します。この操作を繰り返し、構成図に記載されたFIP 2つを作成します。

BIG-IP Active/Active構成向けのFIP追加 02

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

create net self SelfIP_FIP2_VLAN0010 address 192.168.10.220/24 vlan VLAN0010 allow-service all traffic-group traffic-group-2
create net self SelfIP_FIP2_VLAN0050 address 192.168.50.220/24 vlan VLAN0050 allow-service all traffic-group traffic-group-2

動作確認 (2) virtual serverの併用 – 誤設定例の紹介

Active/Active構成を採用する場合は、サーバからの戻りパケットに配慮した設定が必要です。以下、動作原理を理解するために、Source NATの設定を漏らした場合の挙動を紹介します。

virtual serverの設定

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

ltm virtual VS_02 {
    destination 192.168.50.220:any
    mask 255.255.255.255
    pool pool01
}

この設定は「BIG-IP FIP(floating IP)の設定」で作成したものと比較すると、destination以外のパラメタで差分はありませんが、設定投入時に以下のような警告メッセージが出力されます。

[bigip01:BIG-IP 16.1.0]
root@(bigip01)(cfg-sync Changes Pending)(Active)(/Common)(tmos)# load sys config from-terminal merge 
Enter configuration. Press CTRL-D to submit or CTRL-C to cancel.
ltm virtual VS_02 {
    destination 192.168.50.220:any
    mask 255.255.255.255
    pool pool01
}
Loading configuration...
There were warnings:
Virtual address (/Common/192.168.50.220) shares address with floating self IP (/Common/SelfIP_FIP2_VLAN0050), so traffic-group is being kept at (/Common/traffic-group-2).
root@(bigip01)(cfg-sync Changes Pending)(Active)(/Common)(tmos)# 

疎通確認

clientからserverへの疎通確認を試みます。HTTPによる疎通が成功しません。

[client50:RockyLinux8.4]
[root@client50 ~]# wget -O /dev/null http://192.168.50.220/CentOS-7-x86_64-Minimal-1708.iso
--2021-09-04 17:21:01--  http://192.168.50.220/CentOS-7-x86_64-Minimal-1708.iso
Connecting to 192.168.50.220:80... failed: Connection refused.
[root@client50 ~]# 

疎通不能となるのはクライアントとサーバ間の通信について、往路と復路で経路が異なるためです。往路はtraffic-group-2がActiveであるbigip02経由になりますが、サーバのデフォルトゲートウェイはtraffic-group-1を向いているため、往復で異なる経路になります。

通信経路説明 01

動作確認 (3) virtual serverの併用 – Source NAT配慮済

virtual serverの設定

往復で同じ通信経路になるようにBIG-IPを経由する時にSource NATします。つまり以下のような通信経路を実現します。

通信経路説明 02

Source NATを設定するにはvirtual serverの設定画面で、「Source Address Translation」を「Auto Map」にします。この設定によって、FIPでSource NATされるようになります。

Source NAT設定

この設定をload sys config from-terminal mergeで流し込む場合は以下の通りです。

ltm virtual VS_01 {
    destination 192.168.50.200:any
    mask 255.255.255.255
    pool pool01
    source-address-translation {
        type automap
    }
}
ltm virtual VS_02 {
    destination 192.168.50.220:any
    mask 255.255.255.255
    pool pool01
    source-address-translation {
        type automap
    }
}

疎通確認

clientからserverへの疎通確認を試み、成功する事を確認します。

[client50:RockyLinux8.4]
[root@client50 ~]# wget -O /dev/null http://192.168.50.220/CentOS-7-x86_64-Minimal-1708.iso
--2021-09-04 17:22:11--  http://192.168.50.220/CentOS-7-x86_64-Minimal-1708.iso
Connecting to 192.168.50.220:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 830472192 (792M) [application/octet-stream]
Saving to: ‘/dev/null’

/dev/null             0%[                    ] 529.97K   115KB/s    eta 1h 56m ^C
[root@client50 ~]# 
タイトルとURLをコピーしました