備忘録/にわかエンジニアが好きなように書く

個人的にとりあえず仕組みを知りたいから勉強になる?ってことで、 (利便性無視で)触りたように好きに構築してみる 個人用の備忘録となるので内容の保証はないのでその点はご了承ください。 ※変な内容や間違いを書いているなどありましたらコメントやご指摘いただけると幸いです。

BIGIPの負荷分散設定概要

 

ネットワーク環境

f:id:pocket01:20180812182502p:plain

BIGIP設定イメージ 

f:id:pocket01:20180812200623p:plain

 

動作概要

  • クライアントがVirtualServerにアクセスすると、WebServer1/Webserver2に負荷分散させるが、cookieをInsertすることによりcookieを保持する間は同じサーバーへ振り分けられるようにする。
  • WebServer1/Webserver2の2台ともサービスがダウンしているとソーリーサーバに振り分けを実施する。
  • サーバーとHTTPプロセスをヘルスチェックにて死活監視を行う。

前提構成 

  • BIGIPの初期設定が完了している。
  • WebServerとの疎通性がある。

BIGIP設定

Monitor作成

HTTPモニタ作成

Webサーバのサービス監視用モニタ作成

設定:5秒間隔で監視を行い、16秒間応答がない場合(3回連続でNG)はモニターNGとする。

1.Local Traffic ›› MonitorsからCreateをクリックし設定画面を開く。

2.Type:HTTPを選択を行い、各パラメータを入力後に最下部のFinishをクリックし作成を行う。

Name monitor_HTTP
Type HTTP
Parent Monitor http
Configuration Basic
Interval 5
Timeout 16
Send String GET /index.html HTTP/1.1\r\nHost: host.domain.com\r\nConnection: Close\r\n
Receive String 200 OK

f:id:pocket01:20180813224532p:plain

ICMPモニタ作成

Webサーバのノード監視用モニタ作成

設定:5秒間隔で監視を行い、16秒間応答がない場合(3回連続でNG)はモニターNGとする。

1.Local Traffic ›› MonitorsからCreateをクリックし設定画面を開く。

2.Type:ICMPを選択を行い、各パラメータを入力後に最下部のFinishをクリックし作成を行う

Name moniter_ICMP
Type ICMP
Parent Monitor icmp
Configuration Basic
Interval 5
Timeout 16

f:id:pocket01:20180813224714p:plain

Profile作成

HTTP Profile作成

HTTPヘッダにX-Forwarded-For情報を追加するためにプロファイル作成

1.Local Traffic ›› Profiles ›› Services ›› HTTPからCreateをクリックし設定画面を開く。

2.右端のチェックボックスにチェックを入れ、X-Forwarded-Forの設定後に最下部のFinishをクリックし作成を行う

Name custom_HTTPProfile
Insert X-Forwarded-For Enabled

f:id:pocket01:20180812233416p:plain

cookieによる同じサーバーへ振り分けを行うためにプロファイル作成

1.Local Traffic ›› Profiles ›› Profiles ›› PersistenceからCreateをクリックし設定画面を開く。

2.以下の設定後に最下部のFinishをクリックし作成を行う。

Name custom_cookieProfile
Persistence Type

cookie

f:id:pocket01:20180813001359p:plain

※暗号化等は後述でパケットキャプチャーするため未設定としている。

Nodeデフォルトモニタ変更作成

ノードのデフォルトモニター設定の変更を行う。

1.初期値の private_monitorを削除し monitor_ICMPを追加する。

Health Monitors private_monitor ⇒ monitor_ICMP

private_monitorを選択後 >> で Availableへ移動させる。

f:id:pocket01:20180813224850p:plain

 Availableから monitor_ICMPを選択し、 << でActiveに移動させる。

そのご、Updateで設定を反映させる。

f:id:pocket01:20180813224930p:plain

Pool作成

Local Traffic ›› Pools : Pool List ›› New Pool... に対して以下の設定を行います。

Name pool_HTTP
Health Monitors monitor_HTTP
Load Balancing Method Round Robin   ※デフォルト
Priority Group Activation Less than..  2 Available Member(s)
New Members  
      Node Name/Address/Service Port/Priority Web1 / 172.16.10.110 / 80 / 10
      Node Name/Address/Service Port/Priority Web2 / 172.16.10.120 / 80 / 10
      Node Name/Address/Service Port/Priority Sorry1 / 172.16.10.130 / 80 / 5

f:id:pocket01:20180814213940p:plain

 

登録後、nodeとの疎通が問題ない場合は ステータスが""の表示となる 

Pool状態:Local Traffic ›› Pools : Pool List

f:id:pocket01:20180813232004p:plain

Node状態:Local Traffic ›› Pools : Pool List ›› pool_HTTP :membersタブ

f:id:pocket01:20180813232141p:plain

※LTMログ   /var/log/ltm

# cat /var/log/ltm
Aug 14 08:16:49 bigip01 notice mcpd[4564]: 01070728:5: Node /Common/Sorry1 address 172.16.10.130 monitor status up. [ /Common/monitor_ICMP: up ] [ was unchecked for 0hr:0min:2sec ]
Aug 14 08:16:49 bigip01 notice mcpd[4564]: 01070728:5: Node /Common/Web1 address 172.16.10.110 monitor status up. [ /Common/monitor_ICMP: up ] [ was unchecked for 0hr:0min:2sec ]
Aug 14 08:16:49 bigip01 notice mcpd[4564]: 01070728:5: Node /Common/Web2 address 172.16.10.120 monitor status up. [ /Common/monitor_ICMP: up ] [ was unchecked for 0hr:0min:2sec ]
Aug 14 08:16:49 bigip01 notice mcpd[4564]: 01070727:5: Pool /Common/pool_HTTP member /Common/Sorry1:80 monitor status up. [ /Common/monitor_HTTP: up ] [ was unchecked for 0hr:0min:2sec ]
Aug 14 08:16:49 bigip01 notice mcpd[4564]: 01070727:5: Pool /Common/pool_HTTP member /Common/Web1:80 monitor status up. [ /Common/monitor_HTTP: up ] [ was unchecked for 0hr:0min:2sec ]
Aug 14 08:16:49 bigip01 notice mcpd[4564]: 01070727:5: Pool /Common/pool_HTTP member /Common/Web2:80 monitor status up. [ /Common/monitor_HTTP: up ] [ was unchecked for 0hr:0min:2sec ]

 System ›› Logs : Local Traffic

f:id:pocket01:20180813232513p:plain

VirtualServer作成

 Local Traffic ›› Virtual Servers : Virtual Server List ›› New Virtual Server...に対して以下の設定を行う。

Name VS_HTTP
Destination Address/Mask 172.16.20.80
Service Port 80
Protocol TCP
Protocol Profile (Client) tcp
HTTP Profile custom_HTTPProfile
Default Pool pool_HTTP
Default Persistence Profile custom_cookieProfile

f:id:pocket01:20180814002525p:plain

 

Virtual Server状態:Local Traffic ›› Virtual Servers : Virtual Server List

f:id:pocket01:20180814003210p:plain

※LTMログ   /var/log/ltm

# cat /var/log/ltm
Aug 14 09:24:32 bigip01 notice mcpd[4564]: 01071681:5: SNMP_TRAP: Virtual /Common/VS_HTTP has become available
Aug 14 09:24:32 bigip01 notice mcpd[4564]: 010719e7:5: Virtual Address /Common/172.16.20.80 general status changed from BLUE to GREEN.

 System ›› Logs : Local Traffic

f:id:pocket01:20180814003306p:plain

動作確認① Cookieパーシステンスの動作

アクセス確認

クライアントからVIPに対してブラウザから複数回連続アクセスを行う。

f:id:pocket01:20180814003554p:plain

カウンタ確認

”Statistics ›› Module Statistics : Local Traffic” から”Statistics Type:Pools”から pool_HTTPのカウンタがWebServer1”のみカウントアップしていることが分かる。

connectionsからもWevServer1のみカウントしていることが分かる。

f:id:pocket01:20180814005907p:plain

 

クラアントでのキャプチャー実施結果

1回目以降のアクセス

■HTTPリクエストの内容

cookieの情報が無いこと分かる。

f:id:pocket01:20180814005149p:plain

■HTTPレスポンスの内容

Set-Cookieでcookie情報が付与されたことが分かる。

f:id:pocket01:20180814005239p:plain

2回目以降のアクセス

■HTTPリクエストの内容

cookieの付与された値が含まれること分かる。

f:id:pocket01:20180814005601p:plain

■HTTPレスポンスの内容

Set-Cookieの情報が含まないことが分かる。

f:id:pocket01:20180814005707p:plain

動作確認② ロードバランサ機能

アクセス確認

複数のブラウザを使用してアクセスし、WebServer1.WebServer2へアクセスできることを確認する。

f:id:pocket01:20180814010411p:plain

動作確認③ XFFの確認

TCPDUMPの準備

BIGIPのInternal側インターフェースに流れるパケットをキャプチャーする。

※ヘルスモニターのパケットもキャプチャーできるのでいい感じでフィルタするか

 Wiresharkなどでフィルタして表示させる。

キャプチャー確認

■HTTPリクエスト

ヘッダ情報で、以下のことが確認できた。

 ・XFFが付与された

 ・cookieパーシステンスの情報は削除された

f:id:pocket01:20180814215927p:plain

 

 ■レスポンス

f:id:pocket01:20180814220007p:plain

 

サーバ負荷分散技術

サーバ負荷分散技術

  • 作者: トニーブルーク,Tony Bourke,鍋島公章,横山晴庸,上谷一
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2001/12
  • メディア: 単行本
  • 購入: 6人 クリック: 195回
  • この商品を含むブログ (20件) を見る
 
サーバ負荷分散入門

サーバ負荷分散入門

  • 作者: みやたひろし
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2014/10/05
  • メディア: オンデマンド (ペーパーバック)
  • この商品を含むブログを見る