#amazon(4873110653)
#amazon(4797368535)
#contents
#br
#adsense(728x90)
#br
* 概要 [#s260af0c]
- Virtual Server へのアクセスを、Pool Member にバランシングする
- Virtual Server の IP アドレスは、必ずしも BIG-IP の直接接続セグメントである必要はない
- Pool Member も BIG-IP の直接接続セグメントにいる必要はない
** コンフィグ構造 [#d9435ccd]
&ref(images/bigip-config.png,around,nolink);
* 仮想サーバ [#pe571ff5]
** 設定 [#oe7991d2]
#pre(soft){{
[root@bigip:Active] config # bigpipe virtual '''server-name''' '{
destination '''ip-addr''':'''port'''
pool '''pool-name'''
ip protocol tcp
profile '''profile-name'''
persist '''persist-name'''
rule '''rule-name'''
}'
}}
-- '''ip-addr''':'''port'''
--- Virtual Server の IP アドレス、ポート番号 (必須)
-- '''pool-name'''
--- 使用するプール名 (必須)
-- '''profile-name'''
--- 適用する プロファイル名
-- '''persist-name'''
--- 適用する パーシステンス プロファイル名
-- '''rule-name'''
--- 適用する iRule 名
** 確認 [#odafc244]
* プールとバランシング方式 [#ade3e68b]
** 概要 [#ra82a5f4]
- Static
-- Round robin
--- 均等にバランシングする
-- Ratio
--- サーバ性能に合わせて、バランシングの比率を調整する
- Dynamic
-- Least connections
--- 現在のコネクション数が一番少ないものに、転送される
--- ノードを追加した場合、トラフィックが集中する可能性があるので注意
-- Fastest (v9.4~)
--- レスポンスタイムが一番早いものに優先的にバランシングする
-- Observed (v9.4~)
--- コネクションとレスポンスタイムの組み合わせだが、Fastest 同様 Least connectionsになる
-- Predictive (v9.4~)
- 障害時
-- Priority group activation
--- ノードをグルーピングし、Priority をつける
** 設定 [#y9963525]
*** プールの作成 [#s6758c3f]
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' {
lb method '''method'''
persist_mode '''mode'''
min active members 2
member '''ip-addr''':'''port''' [ratio '''ratio'''] [priority '''priority''']
member '''ip-addr''':'''port''' [ratio '''ratio'''] [priority '''priority''']
}
}}
-- '''method'''
--- バランシング モードの指定
--- rr、ratio、priority...
-- '''mode'''
--- パーシステンス モードの設定
--- cookie、simple、ssl、sticky
-- '''ip-addr''':'''port'''
--- Pool Member の IP アドレス、ポート番号
-- '''ratio'''
--- Pool Member ごとの比率
--- バランシング モードが ratio の場合に設定
-- '''priority'''
--- Pool Member ごとの優先度
--- 設定すると Priority group activation が有効になる
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' { \
lb method member ratio \
min active members 2
member 172.16.20.1:80 ratio 4 priority 2
member 172.16.20.2:80 ratio 2 priority 2
member 172.16.20.3:80 }
}}
*** プール メンバーの追加 [#pd901d07]
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' add { '''ip-addr''':'''port''' ['''option'''] }
}}
*** プール メンバーの削除 [#tf92d301]
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' delete { '''ip-addr''':'''port''' ['''option'''] }
}}
*** 比率の変更 [#y7d0f90d]
#pre(soft){{
[root@bigip:Active] / # bigpipe ratio '''ip-addr''' ['''ip-addr'''...] '''ratio'''
}}
** 操作 [#ue2dd92f]
*** プール メンバーの切り離し [#b8f70bd5]
- A
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' member '''ip-addr:port''' session disable
}}
- B
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' member '''ip-addr:port''' down
}}
*** プール メンバーの戻し [#nafdcfd7]
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' member '''ip-addr''':'''port''' up session enable
}}
** 確認 [#ecfd73a5]
*** 設定情報を出力 [#g79b57ef]
#pre(soft){{
[root@bigip:Active] / # bigpipe pool ['''pool-name'''] list
pool '''pool-name''' {
monitor http
member 192.160.0.32:80
member 192.160.0.33:80
member 192.160.0.34:80
}
}}
* モニタ [#ae5abcf7]
** 概要 [#p8621934]
- プール メンバーに対しヘルスチェックを行い、異常なサーバをバランシング対象から外す機能
- 複数のプールでプール メンバーが重複している場合、ヘルスチェックは 1 度しか行われない
*** アドレス チェック (L3) [#gc822493]
- IP アドレスのみのチェック
- Ping でチェック
- ICMP などで利用
*** サービス チェック (L4) [#f84670cf]
- IP アドレス、ポート番号をチェック (TCP のみ)
- 3 Way Handshake によるオープン、クローズでチェック
*** コンテンツ チェック (L7) [#ca99ff52]
- レスポンスの内容をチェック
- リクエストををして、特定の文字列が含まれているかチェック
- HTTP などで利用
*** インタラクティブ チェック (L7+α) [#yfd337f9]
- 双方向の通信でチェック
- FTP、SQL などで利用
** 設定 [#fc77c607]
*** モニタの作成 [#p4a489f4]
#pre(soft){{
[root@bigip:Active] / # bigpipe monitor '''monitor-name''' '{
defaults from '''tepmlate-name'''
[interval '''interval-time''']
[timeout '''timeout-time''']
[dest '''ip-addr:port''']
[send \"(GET|POST) '''path'''\"
recv \"'''receive-text'''\"]
}'
}}
-- '''monitor-name'''
--- 任意の名前
-- '''tepmlate-name'''
--- 標準テンプレートの名前
--- icmp … アドレス チェック
--- tcp … サービス チェック
--- http … コンテンツ チェック
--- ftp … インタラクティブ チェック
-- '''interval-time'''
--- チェックする間隔
-- '''timeout-time'''
--- タイムアウト値
--- 3 * '''interval-time''' + 1 を推奨 (Interval が 5 秒なら、16 秒)
-- '''ip-addr:port'''
--- チェックする対象
-- '''path'''
--- GET、POST するパス
-- '''receive-text'''
--- GET、POST に対する期待値
--- この文字列が帰ってこない場合は、ダウンとみなされる
ex) L7 レベルのチェック (HTTP のコンテンツ)
#pre(soft){{
[root@bigip:Active] / # bigpipe monitor http_mon '{
defaults from http
interval 5
timeout 16
dest *:80
send \"GET /\"
recv \"Server\"
}'
}}
ex) L3 レベルのチェック (Ping の応答)
#pre(soft){{
[root@bigip:Active] / # bigpipe monitor icmp_mon '{
defaults from icmp
interval 15
timeout 46
}'
}}
*** モニタの関連付け [#n606880f]
- プールへの関連付け
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' '{
monitor all '''monitor-name'''
}'
}}
- ノードへの関連付け
#pre(soft){{
[root@bigip:Active] / # bigpipe pool '''pool-name''' '{
member '''ip-addr:port''' monitor '''monitor-name'''
}'
}}
- あ
#pre(soft){{
[root@bigip:Active] / # bigpipe node all '{
monitor icmp_mon
}'
}}
ex) プールへの関連付け
#pre(soft){{
[root@bigip:Active] / # bigpipe pool http_pool '{
monitor all http_mon
}'
}}
ex) ノードへの関連付け
#pre(soft){{
[root@bigip:Active] / # bigpipe pool https_pool '{
member 172.16.20.1:443 monitor https_mon
}'
}}
ex)
#pre(soft){{
[root@bigip:Active] / # bigpipe node all '{
monitor icmp_mon
'}
}}
* ノード [#x7f63f24]
** 概要 [#v83b8c62]
- 必須の設定ではない
- ノード セクションがなくても、ノード単位の切り離しなどは可能 (session disable、down の場合は自動でノード セクションが作られる)
** 設定 [#n715b143]
#pre(soft){{
[root@bigip:Active] / # bigpipe node '''ip-addr''' {
screen '''screen-name'''
}
}}
-- '''screen-name'''
--- 表示名
--- ホスト名などをつける
** 操作 [#x6381219]
*** ノードの切り離し [#x16287b3]
- ノードを切り離せば、プール メンバーからも切り離される
- A
#pre(soft){{
[root@bigip:Active] / # bigpipe node '''screen-name''' session disable
}}
- B
#pre(soft){{
[root@bigip:Active] / # bigpipe node '''screen-name''' down
}}
*** ノードの戻し [#s90c2b51]
#pre(soft){{
[root@bigip:Active] / # bigpipe node '''screen-name''' up session enable
}}
** 確認 [#e960aac5]
*** ステータスの出力 [#m5f0e74a]
#pre(soft){{
[root@bigip:Active] / # bigpipe node '''screen-name''' show
NODE 192.168.0.32 UP SESSIONS ENABLED
| conns (cur, max, limit, tot) = (0, 100, 0, 46.95M)
| (pkts,bits) in = (320.5M, 630.0G), out = (375.1M, 1.858T)
| requests (total) = 46.95M
}}
*** 設定情報の出力 [#afcf0a8f]
#pre(soft){{
[root@bigip:Active] / # bigpipe node '''screen-name''' list
node 192.168.0.32 {
screen web01
}
node 192.168.0.33 {
screen web02
}
node 192.168.0.34 {
screen web03
}
}}
* プロファイル [#w5a11ba3]
- トラフィックの処理方法を定義したもの
- デフォルトのプロファイルは /config/profile_base.conf に保存されている
- サービス プロファイル
-- HTTP
-- FTP
- パーシステンス プロファイル
-- パーシステンス
- プロトコル プロファイル
-- Fast L4
-- TCP
-- UDP
-- OneConnect
-- Stream
- SSL プロファイル
-- クライアント SSL
-- サーバ SSL
- 認証プロファイル
-- 認証
* パーシステンス プロファイル [#z60c86b9]
** 説明 [#t7477be1]
- クライアント、サーバに持続的な関係を持たせる機能
- 通常、クライアントからのリクエストは複数のサーバにバランシングされるが、この機能を使うことでクライアント、サーバ間の組み合わせを固定することが出来る
- ソース IP アドレス パーシステンス
-- ソース IP アドレスに基づき、組み合わせを固定
-- 全てのプロトコルで使用可能
- Cookie パーシステンス
-- Cookie 情報に基づき、組み合わせを固定
-- HTTP プロファイルが必須
-- SSL の場合、そのままでは Cookie が見えないため、クライアント SSL プロファイルが必須
-- Insert mode (デフォルト)
-- Rewrite mode
-- Passive mode
-- Hash mode
- SSL セッション ID パーシステンス
** 設定 [#e880dcbd]
#pre(soft){{
[root@bigip:Active] config # bigpipe profile persist src_addr_persist {
defaults from source_addr
mode source addr
mask 255.255.255.255
timeout 20
}
}}
#pre(soft){{
[root@bigip:Active] config # bigpipe virtual vs_http {
persist src_addr_persist
}
}}
* サービス プロファイル (HTTP) [#f3525d59]
** 説明 [#r2848c3a]
-- Fallback host
--- ノードがすべてダウンした場合、代替サーバに転送する
** 設定 [#sd291ebd]
#pre(soft){{
profile http '''name''' {
defaults from http
fallback "http://'''sorry-url'''"
}
}}
* クライアント SSL プロファイル [#v3fe223b]
** 説明 [#h28f0d0f]
- クライアント → BIG-IP 間は暗号化、BIP-IP → サーバ間は復号化
** 設定 [#xeef19e8]
#pre(soft){{
profile clientssl '''profile-name''' {
defaults from clientssl
key "'''key-filename'''"
cert "'''cert-filename'''"
ca file "'''ca-filename'''"
}
}}
-- "'''key-filename'''"
--- 秘密鍵のファイル名
-- "'''cert-filename'''"
--- サーバ証明書のファイル名
-- "'''ca-filename'''"
--- 中間証明書のファイル名
* iRule [#e268f306]
** 説明 [#t7324f54]
- レイヤ 7 の内容に基づくバランシング
** 設定 [#o141d7e2]
ex) URI に txt を含むものは、rule_pool に、それ以外は http_pool にバランシングする
+ ルールの作成
#pre(soft){{
[root@bigip:Active] config # bigpipe rule text_rule {
when HTTP_REQUEST {
if {[HTTP::uri] contains \"txt\"} {
pool rule_pool
}
else {
pool http_pool
}
}
}
}}
+ ルールの関連付け
#pre(soft){{
[root@bigip:Active] config # bigpipe virtual vs_text {
profile http
rule text_rule
}
}}
* その他 [#jbe5f095]
** ステータス [#b80b8e63]
#pre(soft){{
[root@bigip:Active] config # bigtop
| bits since | bits in prior | current
| MMM DD HH:MM:SS | 5 seconds | time
BIG-IP ACTIVE |---In----Out---Conn-|---In----Out---Conn-| HH:MM:SS
bigip 372.5G 1.356T 125.6M 94424 64568 19
VIRTUAL ip:port |---In----Out---Conn-|---In----Out---Conn-|-Nodes Up--
10.0.0.32:http 1.575G 47.59G 23307 21072 13616 1 3
10.0.0.32:https 7.325G 21.14G 578740 0 0 0 3
NODE ip:port |---In----Out---Conn-|---In----Out---Conn-|--State----
192.168.0.32:http 1.575G 47.59G 23244 21072 13616 20 UP
192.168.0.33:http 7.374G 21.63G 580135 0 0 0 DOWN
192.168.0.34:http 280.7M 11.89G 741 21129 12098 23 UP
192.168.0.34:https 3.195G 7.839G 63973 0 0 0 UNCHECKED
192.168.0.34:https 311.0M 1.296G 25066 0 0 0 UNCHECKED
192.168.0.34:https 390.8M 752.1M 23582 0 0 0 UNCHECKED
}}
#br
#adsense(728x90)
#br