2011年7月13日水曜日

F5 BIG-IP を運用する前に覚えておきたいポイント

BI-IPを運用するうえで必要な最低限の知識をまとめておく。

本blog内のコンテンツは下記の通りである。
  ハードウェア
  各種コマンド
  ログ
  設定
  設定の永続化・同期
  設定のバックアップ
  統計(mib情報)
  TRAP
  はまりどころ

※同様の機能を提供する機器としてA10があるだろう。



 ハードウェア
【目視によるハードウェアの状態確認】
緑:active 橙:standby


【ステータス消しこみ】
active、standbyの切り替わり履歴があると点灯し続ける。

消去手順
1. 前面の☑ボタンを押す
2. clear all warnings alerts?
3. もう一度☑ボタンで実行



 各種コマンド
【停止処理】
● 再起動
reboot
shutdown -r now


【ハードウェア関連】
※tmsh系のコマンドとb系のコマンドをできる限り併記していく。
● バージョン確認
show sys version
b version

● ステータス確認
show sys hardware
b platform show
シリアルナンバーもここから確認できる。

● 解析情報の取得
nice -n 19 qkview
システムに負荷を与えるのでniceを頭につけている。
結果はファイルに吐き出される(1~2分かかる)。

より簡易的なシステム情報を取得するなら下でもよい。
qkview-lite


【リソース】
● CPU、メモリの状態の確認
tmstat

linuxで使えるtopコマンドも利用できるが、
そこで表示されるCPUなどのリソースの見え方に相違がある。
tmmstatコマンドはtmmプロセスの観点でのリソース情報である。
tmmプロセスとはBig-IPのトラフィックを処理しているメインプロセスである。


【ネットワーク】
● インターフェースの確認
show net interface
b interface show

● macアドレステーブルの確認
show net fdb all
b vlan all fdb show

● arpテーブルの確認
show net arp all
b arp show

● ルーティングの確認
show net route all
b route show

● vlanの確認
show net vlan all
b vlan all trunk

● コネクションの確認(全体)
show sys connection
b conn show
linux系のnetstatコマンドでも代用可能。

コネクションをすべて表示するので気をつけること。
show系のコマンドはすべて、ファイルに書き出すことができる。

show ~ save-to-file <ファイル名>

出力が多いものはファイルに吐いた方がいいだろう。
ディフォルトの保存ディレクトリは/shared/配下である。

● LBが保持しているパーシステンステーブルを表示
show ltm persistence persist-records
b persist

また、tmshからpersistenceテーブルを消すこともできる。
既に張られたコネクションには影響は与えない。
delete ltm persistence persist-records

● コネクションの確認(pool単位)
ノードとプールの情報を表示するコマンドからgrepしてもいいだろう。
show ltm pool | grep -e Ltm::Pool -e "Current Connections"
b pool show | grep -e Ltm::Pool -e "Current Connections"

● コネクションの確認(node単位)
show ltm node | grep -e Ltm::Node -e "Current Connections"
b node show | grep -e Ltm::Node -e "Current Connections"

● TCPコネクションテーブルの確認
show sys connection protocol tcp
b conn show


コネクションの推移を動的にモニタリングしたい場合はbigtopが便利だろう。
bigtop -n -delay 10
-n : display ip address in numeric format
-delay value : number of seconds between samples (default: 4)


【ロードバランス】
● active、standbyの状態の確認
show sys failover
b failover show

● active、standbyの状態の詳細な確認
show cm show traffic-group

● active、stanbyの切り替え(failover) ※active側で実施
run sys failover standby
b failover standby

● vertualサーバの確認
show ltm virtual
b virtual show

list ltm virtual
b virtual list
listオプションはコンフィグの情報を表示する。

● poolの確認
show ltm pool
b pool show

list ltm pool
b pool list

● nodeの確認
show ltm node
b node show

list ltm node
b node list

● poolのメンバの切り離し / 組み込み(バージョンにより異なる)
※<>は環境依存部分である(タブで補完可能)
切り離し方法には2通りある。
~user-disabled:新規セッションを受け付けない(persistセッションがあれば受け付ける)
~user-down:新規セッションとpersistセッションを受け付けない

modify ltm pool <pool> members modify { [pool <node:port>] { session user-disabled / user-enabled } }
もしくは
modify ltm pool <pool> members modify { [pool <node:port>] { state user-down / user-up } }
b pool <pool> member <ip:port> down / up
b pool <pool> member <ip:port> session user disabled / enabled
b pool <pool> member <ip:port> session disable / enable

● ノードの切り離し / 組み込み(バージョンにより異なる)
modify ltm node <node> session user-disabled / user-enabled
もしくは
modify ltm node <node> state user-down / user-up
b node <ip> down / up
b node <ip> session user disable / enabled
b node <ip> session disable / enable


【その他】
● ヘルスチェック(health check)の設定確認
list ltm monitor



 ログ
● ログの確認
tail -f /var/log/ltm
show sys log all
show sys log ltm lines 100



 設定
【snmp周り】
● 設定ファイル
普通のLinuxのsnmpdと同じ設定でいける。
/config/snmp/snmpd.conf

● 再起動
bigstart restart snmpd
tmsh restart sys service snmpd
コンフィグの同期ではsnmpの設定は反映されない。


【最大コネクション数の設定変更例】
● 設定変更
modify ltm node <node> connection-limit <number>


【healthチェックの設定例】
● 設定追加
create ltm monitor http /Common/TCP80 {
  debug no
  defaults-from /Common/http
  destination *:80
  domain example.com
  interval 5
  time-until-up 0
  timeout 16
}


【リアルサーバの設定例】
● 設定追加
create ltm node /Common/test_node1 {
  address 192.0.2.1
  connection-limit 5000
  monitor /Common/icmp
}


【サービスグループの設定例】
● 設定追加
create ltm pool /Common/web_pool {
  members add {
    /Common/test_node1:80 {
      address 192.0.2.1
    }
    /Common/test_node2:80 {
      address 192.0.2.2
    }
  }
  monitor /Common/tcp_half_open
}


【vipの設定例】
● 設定追加
create ltm virtual /Common/web_vip_80 { 
  destination /Common/192.168.2.3:80
  ip-protocol tcp
  mask 255.255.255.255
  profiles {
    /Common/tcp { }
  }
  source 0.0.0.0/0
  translate-address enabled
  translate-port enabled
}

● 設定確認
list ltm virtual
b node all monitor show

● 状態確認
show ltm virtual



【iRulesを使ったIPリストによる振り分けルール】
iRulesを使い、接続元のIPアドレスを元に振り分けるサーバを
制御している場合もあるだろう。
そのIPリストを更新する手順を残しておく。

IPリスト例
network x.x.x.0/24,
network y.y.y.0/24,
network z.z.z.0/24

1. IPリストを配置する
アクティブ、スタンバイ両系にscp等でリストを配布する。
今回は新規に"ip_list_yyyymmdd"に入れ替えるとする。

/var/tmp/datagroup/ip_list_yyyymmdd

以下操作はアクティブ系のみで実施する。
2. IPリストの参照先を入れ替える
tmsh
modify ltm data-group external ip_list source-path file:/var/tmp/datagroup/ip_list_yyyymmdda
コマンド実行後すぐに、新しいIPリストが適用される。

3.新IPリストの確認
・CLIで確認する場合
edit sys file data-group ip_list

編集モードでしか確認できないので確認観点では若干不便である。
ファイル名を直接参照したほうがいいだろう。
リスト名はシステマティックに決められる。
cat /config/filestore/files_d/Common_d/data_group_d/~ip_list~

・GUIで確認する場合
Mainメニュー ⇒ System ⇒ File Management ⇒ Data Group File List
ip_list"を選択 ⇒ Definitionボックス内に表示されるIPリストから確認できる。

4.コンフィグ同期
既記述例の通りである。
コンフィグの保存は不要である。


【フィルタの設定】
● フィルタの追加
1. GUIでアクティブ側のBIG-IPにログイン
2. Network→Packet Filterを選択
3. Rulesボタンを選択後、Create ボタンを選択
4. Configurationで必要項目の設定
 Name:名前の設定
 Order:追加行の入力順序を指定
  First:Filterの一番最初に追加
  Last:Filterの一番最後に追加
  After:特定のFilter Ruleの後に追加
     Afterを選択すると右に設定欄が出てくるので、
     この右欄でどのFilter Ruleの後に適用するか決定
  Action:Accept /Discardから選択
  Apply to VLAN:適用するVLANを指定
 設定例
  Name →  FL-1
  Order →  Firstを選択
  Action → Acceptを選択
  Apply to VLAN → SCを選択

5. Filter Expression MethodよりEnter Expression Textを選択
  Filter ExpressionにFilterを記述
  設定例
  filter { ( proto TCP ) and ( src net 192.0.2.0/24 ) and \
( dst host 198.51.100.1 ) and ( dst port 80) }

6. Finished を選択

7. 全てのFilter追加が終了した後、active系で設定を保存し、

 スタンバイ側へ情報を同期させる(◆ 設定の保存 にて説明)


● フィルタの削除
1. Network→Packet Filterを選択
2. Rulesボタンを選択
3. 削除したいFilterにチェックを入れ、Deleteボタンを選択
4. 全てのFilter追加が終了した後、10.3 config同期方法を実施し、スタンバイ側へ情報を反映させる




 設定の永続化・同期
● 保存
アクティブ側でまず設定保存。
save sys config partitions all
b save all

その後スタンバイには同期をかければよい。
● 同期
acvive機にてactiveのコンフィグをstandby側へ反映させる。
(CUI)
run cm config-sync to-group <DEVICEGROUPNAME> ※v11系
デバイスグループ名はタブで保管できる
run sys config-sync ※v10系
b config sync
※Sync失敗時はLBの時刻を要確認
 時刻が30秒以上ずれていると同期ができない

(GUI)
1. GUIでアクティブ側のBIG-IPにログイン

2. Device Management→Overviewを選択(Ver 11)
  System→High Availability→ConfigSyncを選択(Ver 10)

3. DeviceにてActive機器を選択(Ver 11)
  Synchronize TO Peerを選択(Ver 10)
   Sync OptionにてSync Device to Groupを選択
   Overwrite Configurationにチェックを入れ、
   Syncボタンにてsyncを実行

4. ログが出力されるので、ログにエラー情報が出力されていないことを確認しOKを選択




 設定のバックアップ
【テキスト】
● 保存
設定自体をファイルに保存するにはこのコマンドが使える。
save sys config file ファイル名.scf


【UCS】
● UCSファイルへの保存
(CUI)
save sys ucs ファイル名
b config save ファイル名
※/var/local/ucs/に保存される

(GUI)
UCSファイルは、BIG-IPの設定情報をtarで固めたファイルになる
1. GUIでBIG-IPにログインする
2. System→Archivesを選択し、Createボタンを押す
3. バックアップファイル名を入力し、Finishedボタンを押す
4. ログが表示されるので、OKボタンを押す
5. 作成されたUCSファイルを選択する
6. Downloadボタンを押し、ローカルに保存する

● UCSファイルの確認
(CUI)
show sys ucs

● UCSファイルからのリカバリ
(CUI)
load sys ucs <file name>
b config install <file name>

(GUI)
1. GUIでBIG-IPにログインする
2. System→Archivesを選択し、Restoreボタンを押す
3. Archive List からリストアしたいUCSファイルを指定する
4. OKボタンを押す

● UCSファイルの削除
最新のUCSファイルを作成後は旧世代のものを削除する
1. GUIでBIG-IPにログインする
2. System→Archivesを選択し、削除対象選択肢、Deleteボタンを押す
3. 選択したFile Nameだけが表示されるので確認し、削除する



 統計(mib情報)
【リソース】
● memory(system)
・利用可能なメモリ容量
F5-BIGIP-SYSTEM-MIB::sysMultiHostTotal
.1.3.6.1.4.1.3375.2.1.7.4.2.1.2

・利用しているメモリ容量
F5-BIGIP-SYSTEM-MIB::sysMultiHostUsed
.1.3.6.1.4.1.3375.2.1.7.4.2.1.3
TMM Free + TMM Used + Other Used / Total Memory の値??

● memory(tmm)
・TMMの一覧 
F5-BIGIP-SYSTEM-MIB::sysTmmStat
.1.3.6.1.4.1.3375.2.1.8.2

・TMMが利用可能なメモリ容量
F5-BIGIP-SYSTEM-MIB::sysTmmStatMemoryTotal
.1.3.6.1.4.1.3375.2.1.8.2.3.1.31

・TMMが利用しているメモリ容量
F5-BIGIP-SYSTEM-MIB::sysTmmStatMemoryUsedKb
.1.3.6.1.4.1.3375.2.1.8.2.3.1.32

● cpu
・cpu利用率
F5-BIGIP-SYSTEM-MIB::sysMultiHostCpuUsageRatio
.1.3.6.1.4.1.3375.2.1.7.5.2.1.11


【コネクション】
● virtual
・virtual server名
F5-BIGIP-LOCAL-MIB::ltmVirtualServStatName
.1.3.6.1.4.1.3375.2.2.10.2.3.1.1

・max
F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientMaxConns
.1.3.6.1.4.1.3375.2.2.10.2.3.1.10

・current
F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientCurConns

.1.3.6.1.4.1.3375.2.2.10.2.3.1.12

● pool
・pool member名
F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatPoolName
.1.3.6.1.4.1.3375.2.2.5.4.3.1.1

・pool member node名
F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatNodeName
.1.3.6.1.4.1.3375.2.2.5.4.3.1.28

・max
F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerMaxConns
.1.3.6.1.4.1.3375.2.2.5.4.3.1.9

・current
F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerCurConns
.1.3.6.1.4.1.3375.2.2.5.4.3.1.11


【インターフェース】
・interface名
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatName
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.1

・interface別 packetsIn 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatPktsIn
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.2

・interface別 packetsIn Bytes
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatBytesIn
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.3

・Interface別 packetsOut 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatPktsOut
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.4

・Interface別 packetsOut Bytes
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatBytesOut
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.5

・Interface別 ErrorsIn 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatErrorsIn
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.8

・Interface別 ErrorsOut 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatErrorsOut
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.9

・Interface別 DropsIn 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatDropsIn
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.10

・Interface別 DropsOut 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatDropsOut
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.11

・Interface別 Collisions 数
F5-BIGIP-SYSTEM-MIB::sysInterfaceStatCollisions
.1.3.6.1.4.1.3375.2.1.2.4.4.3.1.12



 TRAP
【snmptrapの定義ファイル】
/etc/alertd/alert.conf


【trap内容】
発報メッセージ                                   OID                        内容
通信影響 あり
BIGIP_SOD_SODERR_SOD_STANDBY                  .1.3.6.1.4.1.3375.2.4.0.14  Standbyになった
BIGIP_SOD_SODERR_SOD_ACTIVE                   .1.3.6.1.4.1.3375.2.4.0.15  Activeになった
BIGIP_SOD_SODERR_SOD_UNIT                     .1.3.6.1.4.1.3375.2.4.0.16  FailOverした


通信影響 なし
BIGIP_HA_TABLE_HA_TABLE_ERR_FEATURE_ONLINE    .1.3.6.1.4.1.3375.2.4.0.18  HAリンク復帰
BIGIP_FFLAG_ERR_VALIDATE                      .1.3.6.1.4.1.3375.2.4.0.19  ライセンスが確認できない
BIGIP_FFLAG_ERR_LICENSE_EXPIRED               .1.3.6.1.4.1.3375.2.4.0.20  ライセンスが確認ができた
BIGIP_DOSPROTECT_DOSPROTECT_AGGRREAPER        .1.3.6.1.4.1.3375.2.4.0.22  DoSアタックをブロック
BIGIP_AUTH_FAIL                               .1.3.6.1.4.1.3375.2.4.0.27  ログイン失敗
BIGIP_SSHD_FAIL                               .1.3.6.1.4.1.3375.2.4.0.27  ログイン失敗
BIGIP_GUI_FAIL                                .1.3.6.1.4.1.3375.2.4.0.27  ログイン失敗


通信影響 可能性あり
BIGIP_SYSTEM_CHECK_E_CPU_FAN_SPEED_LOW        .1.3.6.1.4.1.3375.2.4.0.5   CPU FANが遅い
BIGIP_SYSTEM_CHECK_E_CPU_FAN_SPEED_BAD        .1.3.6.1.4.1.3375.2.4.0.6   CPU FANの応答がない
BIGIP_SYSTEM_CHECK_E_CHASSIS_TEMP_HIGH        .1.3.6.1.4.1.3375.2.4.0.7   シャーシ温度高
BIGIP_SYSTEM_CHECK_E_CHASSIS_FAN_BAD          .1.3.6.1.4.1.3375.2.4.0.8   シャーシFANの反応がない
BIGIP_SYSTEM_CHECK_E_CHASSIS_POWER_BAD        .1.3.6.1.4.1.3375.2.4.0.9   電源故障
BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS     .1.3.6.1.4.1.3375.2.4.0.10  プールメンバステータス変更
BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS_UP  .1.3.6.1.4.1.3375.2.4.0.11  プールメンバステータスUP
BIGIP_MCPD_MCPDERR_NODE_ADDRESS_MON_STATUS    .1.3.6.1.4.1.3375.2.4.0.12  ノードステータス変更
BIGIP_MCPD_MCPDERR_NODE_ADDRESS_MON_STATUS_UP .1.3.6.1.4.1.3375.2.4.0.13  ノードステータスUP
BIGIP_HA_TABLE_HA_TABLE_ERR_FEATURE_FAILS     .1.3.6.1.4.1.3375.2.4.0.17  HAリンクの疎通が取れない
BIGIP_MCPD_MCPDERR                            .1.3.6.1.4.1.3375.2.4.0.19  ヘルスモニターデーモンで異常
BIGIP_ARP_ARPERR_CONFLICT                     .1.3.6.1.4.1.3375.2.4.0.23  自身のIPのARPを受け取り(IPのデュプリケート)
BIGIP_NET_NETERR_LINK_DOWN                    .1.3.6.1.4.1.3375.2.4.0.24  内部Link(IFとCPUを繋げるリンク)がDown
BIGIP_DMON_ERR_DMON_ALERT                     .1.3.6.1.4.1.3375.2.4.0.25  ディスクモニターでエラーを検出
BIGIP_DMON_ERR_DMON_WARN                      .1.3.6.1.4.1.3375.2.4.0.25  ディスクモニターでエラーを検出
BIGIP_DMON_ERR_DMON_GROWTH                    .1.3.6.1.4.1.3375.2.4.0.26  ディスクモニターでエラーを検出
BIGIP_SHELL_BP_CONFIGURATION_LOADED           .1.3.6.1.4.1.3375.2.4.0.28  コンフィグを読み込み反映
BIGIP_IP_REJECT_CONN_LIMIT                    .1.3.6.1.4.1.3375.2.4.0.34  MAX CONに到達
BIGIP_BCM56XXD_BCM56XXDERR_LINKSTATUS         .1.3.6.1.4.1.3375.2.4.0.37  外部IF(1.1~1.8)でLinkStatusが変わった
BIGIP_KERNEL_IO_ERROR                         .1.3.6.1.4.1.3375.2.4.0.38  kernelのIOエラーを検出
BIGIP_SOD_SODERR_STANDBY_FAILS                .1.3.6.1.4.1.3375.2.4.0.75  Standbyがいなくなった
BIGIP_LOG_EMERG "^[0-9a-f]{8}:0: (.*)"        .1.3.6.1.4.1.3375.2.4.0.29  syslogにEMERGログ
BIGIP_LOG_ALERT "^[0-9a-f]{8}:1: (.*)"        .1.3.6.1.4.1.3375.2.4.0.30  syslogにALERTログ
BIGIP_LOG_CRIT "^[0-9a-f]{8}:2: (.*)"         .1.3.6.1.4.1.3375.2.4.0.31  syslogにCRITログ
BIGIP_LOG_ERR "^[0-9a-f]{8}:3: (.*)"          .1.3.6.1.4.1.3375.2.4.0.32  syslogにERRログ
BIGIP_LOG_WARNING "^[0-9a-f]{8}:4: (.*)"      .1.3.6.1.4.1.3375.2.4.0.33  syslogにWARNINGログ
BIGIP_TS_TS_REQUEST_BLOCKED                   .1.3.6.1.4.1.3375.2.4.0.38  トラフィックシールドでブロック
BIGIP_RAID_DISK_FAILURE                       .1.3.6.1.4.1.3375.2.4.0.96  ディスク故障


確認中
BIGIP_IP_REJECT_LIMIT                         .1.3.6.1.4.1.3375.2.4.0.34
BIGIP_IP_REJECT_NO_ROUTE                      .1.3.6.1.4.1.3375.2.4.0.34    
BIGIP_TAMD_TAMDALERT_TRAP                     .1.3.6.1.4.1.3375.2.4.0.21  
BIGIP_IP_REJECT_SNAT_ANYIP                    .1.3.6.1.4.1.3375.2.4.0.34
                                              .1.3.6.1.4.1.3375.2.4.0.34    
                                              .1.3.6.1.4.1.3375.2.4.0.34    
BIGIP_DEFLATE_DEFLATEERR_LICENSE_EXCEEDED     .1.3.6.1.4.1.3375.2.4.0.35    
                                              .1.3.6.1.4.1.3375.2.4.0.36




 はまりどころ
【特定のプールメンバにトラフィックが流入してこない
(事象)
ratioとpersistでプールメンバを構成している状態で、
新規にトラフィックを流したところ、
特定のサーバにしかトラフィックが流れてこなかった。

ヘルスチェックは通っていた。


(原因)
事前に試験のため、同一のソースIPアドレスからアクセスさせていた。
persist設定が効いているため、特定のサーバのカウンタ(lb_value値)が上昇していた。
そのため新規トラフィックは、設定したratioになるように
そのサーバ以外のカウンタが小さいサーバのみに振り分けをしばらく続けていた。


(対策)
lb_value値のリセット。下のどちらの手順でも対応可能である。
・該当プールのratio値の変更
・プールメンバののDown、Up



【big-ipとその配下のサーバ側のセッション数の違い】
(事象)
big-ip側とその配下のサーバ側でセッション数が異なる事象が続いていた。

サーバ側(node1)のセッション数を確認する。
[node1] # netstat -an | egrep ":XXXXX|:YYYYY" | wc 
16064

内訳

10748 ESTABLISHED
 5316 ESTABLISHED 以外

l4のセッション数を確認。

# show ltm node node1
  Current Connections       31.0K

セッション比率 

l4 : サーバ
2  : 1


(原因)

予備知識として、TCPの状態遷移図を復習しておいてほしい。
http://www.atmarkit.co.jp/ait/articles/0401/29/news080_3.html
http://www.atmarkit.co.jp/ait/articles/0402/13/news096_3.html

サーバーからのFINに対し、クライアントはACKだけを返し、

FINを送出していない状況があった。
例えばクライアントが携帯などの移動端末であれば普通に考えられることだろう。

server         client


FIN     ->

        <-     ACK
        <-     FIN ※このFINを返さない(そして継続処理は働かない)
ACK     ->

big-ipでは正常にFINできなかったセッションを切断するまでの

ディフォルト時間(FIN-WAIT)が120sec。
サーバはそれよりも短くしていた。その差のためであった。

ちなみに、A10ではFINが届いた段階で、

msl-timeに従い(デフォルト2秒)セッションを削除する。

そのためl4とサーバ側で大きな差はないはずである。

big-ipとa10の挙動の差を埋める手段として2つ考えられる。

1. big-ip側を短くしてa10側にあわせる
big-ipではディフォルト時間(FIN-WAIT)が120secだったが、

サーバ側のFIN-WAITの時間以上という条件がつくため、こちらも変更は難しいだろう。


2. a10側を長くしてbig-ip側にあわせる
40sが最大であるが。
(config)#slb msl-time ?
  <1-40>  1-40 seconds, default is 2 seconds

ただし、
〜4way closeが正常に終わった場合〜
設定時間までセッションを残してしまう。
big-ipではセッションを保持しないため逆にA10側が増える可能性がある。

4way closeが正常に行われない場合
適用しているテンプレート(TCPまたはTCPプロキシ)の設定に依存する。
120秒と設定していれば、ハーフクローズという扱いになるため、
最初のFINパケットから120秒後に削除する。

ハーフクローズの時の設定をしていないのであれば、
アイドルタイムアウト値と同じ値が使用され削除される。


現実的に1も2も対応は難しいだろう。
仕様の違いとして受け入れるしかないか。


0 件のコメント:

コメントを投稿