メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

kemp LoadMasterによる負荷分散設定 - HTTPSサーバ編

飽きずに今回も、Kemp Technologies社のロードバランサ kemp LoadMasterの仮想アプライアンス版いじり。Webサーバ2台の負荷分散設定の後、クライアントからLB間のHTTPSのやりとり(SSLハンドシェイク)をWiresharkで覗いてみた。
4回連続のkemp LoadMasterネタ。
素朴な感じのGUIにはもう慣れた。
ここまで来たらもう「かじってみた」レベルではない熱の入れ様。スペック面で貧弱な自宅環境にてVirtualboxとKemp LoadMasterとWiresharkを同時稼動が可能か心配であったが、問題無く検証出来た。
今後も、みやたひろしさんの参考書(サーバ負荷分散入門、ソフトバンククリエイティブ刊)の内容を基にKemp LoadMasterをいじくり回し、勤務先などでF5 BIG-IP VEやA10 vThunder等と一緒にKemp LoadMasterを提案出来るくらいにまで理解するようにしたい。新人を対象とした教育環境への導入ならLoadMasterで充分な感じがする。予算に余裕が有ってF5 BIG-IP VEのラボライセンス買えるよと言われたら、そっちに流れるかも知れないが。



当方の環境
・ホストOS:Windows7 32bit
・Virtualbox 5.2.32
・ゲストOS:Kemp LoadMaster 7.2.50.0.18765.RELEASE
・Web Server:IWS 07.00 (Android端末2台にインストール)
・WLANでホストOSとAndroid端末3台を接続
・LoadMaster側は既にホスト名とインタフェースの設定は終えている状態
・クライアント機: Windows10 64bit (嫁用)



設定方針
・負荷分散方式は、今回はラウンドロビン
・セッション維持方式は、今回は送信元IPアドレス
・細かな設定値は変更せずデフォルト値のまま
・クライアント~LB間はHTTPS、LB~WEBサーバ間はHTTP通信
・HTTPSサーバと銘打っているが、実際はLBのバーチャルサーバがhttpsの受け口である




SSLの設定
最初にSSLアクセラレーション設定を有効にする。今回はクライアント~LB間はHTTPS通信をする。
SSL Acceleration Enabled:チェックを入れる
Supported Protocols:TSL1.0とTLS1.1とTLS1.2にチェックを入れる
Certificates:今のところオレオレ証明書を使うため、そのまま。※Self Signed Certificate in use.の表示有り
Cipher Set:そのまま
Client Certificates:No Client Certificates requiredのまま
Strict Transport Security Heade:Don't add Strict Transport Security Headerのまま



バーチャルサーバの設定
設定内容は前回とほぼ同じ。

[Basic Properties]
Service TypeをHTTP-HTTP/2-HTTPSに変更すると、[Advanced Properties]の表示内容がHTTP/HTTPSに特化した内容に変わる。
核設定項目から判断すると、F5 BIG-IPで言う「HTTP Profile」に相当するものと思われる。
Service Name:上記で設定したService Nameが表示されている
Alternate Address:空欄
Service Type:HTTP-HTTP/2-HTTPSを選択
Activate or Deactivate Service:チェックを入れる


[Standard Options]
Kemp LoadMasterでは、Persistence(セッション維持)とScheduling Method(負荷分散方式)が同じStandard Option内で設定される。
設定項目およびオプション値は最低限のように見えるが、Persistenceは種類が多い。


Transparency:チェック無し
Subnet Originating Requests:チェック無し
Extra Ports:空欄
Persistence Options Mode:Source IP ddressを選択
Persistence Options Timeout:6 Minutesのまま
Scheduling Methos:round robinを選択
Idle Connection Timeout:空欄
Quarity of Service:Normal-Service


[Advanced Properties]
Content Switching:Disabledのまま
HTTP Selection Rules:そのまま
HTTP Header Modifications:そのまま
Responce Body Modification:そのまま
Port Following:そのまま
Enable HTTP/2 Stack:チェック無し
Enable Caching:チェック無し
Enable Compression:チェック無し
Detect Malicious Requests:チェック無し
Enable Multiple Connect:チェック無し
Add Header to Request:空白
Copy Header in Request:空白
Add HTTP Headers:Legacy Operation(X-Forwarded-For)のまま
"Sorry" Server:http://192.168.3.254 Port 12345 を入力後、Set Server Adderessをクリック



物理サーバの設定
F5 BIG-IPと同様に、バーチャルサーバの次に物理サーバの設定をする。
トラフィックを受け取ったバーチャルサーバは、ラウンドロビンや最小コネクション数など設定された負荷分散方式により、物理サーバにトラフィックを割り振る。
今回の負荷分散設定はラウンドロビン、パーシステンス設定は送信元IPアドレスとした。

[Real Servers]
Add Newをクリック

Please Specify the Parameters for the Real Serverの画面にて
Allow Remote Addresses:チェック無し
Real Server Address:HTTPSサーバのIPアドレスを入力
Port:12345
Forwarding method:nat
Weight:1000のまま
Connection Limit:空欄
Add This Real Serverをクリックし設定を保存。
Backをクリック
負荷分散対象のFTPサーバの台数分、Real ServerをAdd Newから作成する
自分の環境では、2台(192.168.3.25と192.168.3.26)を作成


Real Serversの欄に戻り
Real Server Check Method:HTTP Protocolを選択
Checked Port:12345
URL:空白
Status Codes:空白
Use HTTP/1.1:チェック無し
HTTP Method:HEADのまま
Reply 200 Pattern:空白
Custom Header:空白
Enhanced Options:チェック無し

全て設定が終わったら Backをクリック



監視間隔の設定
[Rules & Checking]
今までに居た案件の値を参考に設定した。監視間隔5秒、リトライ3回、タイムアウト16秒。
前回のHTTP負荷分散の際に指摘したとおり、GUI画面ではリトライとタイムアウトの単語がテレコになっている。

Check Parameters - Service Check Parameters
Check Interval(sec):16
Connect Timeout(sec):5
Retry Count:3

当項目の設定保存は、Virtual ServicesやReal Servers等他の設定項目をクリックする事で実行される。
また、当項目で設定した値は、HTTP/HTTPS/FTP...負荷分散対象サーバ/サービス問わず共有されるようだ。



ステータスの確認
[Virtual Services]
View/Modify Servicesをクリックすると、バーチャルサーバおよび物理サーバのステータスを確認する事が出来る。
上記の設定が正常に完了出来たなら、各Real ServerのステータスはUpの状態(緑色の丸)になっている。
※赤丸のステータスはFTPサーバとHTTPサーバ用の設定。今回は未使用につき赤で問題無し。




HTTPSのやりとりの確認
この状態で、クライアントからHTTPSサーバ192.168.3.32:12345にアクセス。
Wiresharkを立ち上げパケットキャプチャ可能な状態にしてから、WebブラウザでHTTPSサーバにアクセス。
Webブラウザ(Google Chrome)のURL窓左側の赤三角アイコンをクリックし証明書を選択すると、Kemp LoadMasterのオレオレ証明書(自己署名証明書)を見る事が出来る。




その際のWiresharkを覗いてみると、クライアント~LB(Kemp LoadMasterに設定されたバーチャルサーバ)間のHTTPSのやりとり、SSLハンドシェイクの一連の流れを見る事が出来る。
サーバ負荷分散入門(みやたひろし著,ソフトバンククリエイティブ刊)のP164~167の記載内容と若干異なる部分が有るが、これは機器の違いによるものと推測。

下のWireSharkの画面内、No.121にてクライアントからLBにClientHelloを送信。
No.123にてLBからクライアントにServer Helloを送信。
No.124にてLBからクライアントにCertificate(Server Certificate)、Server Key Exchange、Server Hello Doneを送信。ここでサーバ証明書と鍵交換メッセージを送信している。
No.126にてクライアントからLBにClient Key Exchange、Change Cipher Spec、Encrypted Handshake Messageを送信。ここではクライアント証明書と無暗号通信の終了を示すエンドマークを送信している。ここから先は、クライアントからLBの通信は暗号化通信となる。
No.127にてクライアントからLBにApplication Dataを送信。
No.129にてLBからクライアントにChange Cipher Spec、Encrypted Handshake Messageを送信。ここから先は、LBからクライアントの通信は暗号化通信となる。
No.131と132にてLBからクライアントにApplication Dataを送信。

SSLハンドシェイクは正常に実行されているようだ。




https://debslink.hatenadiary.jp/entry/20200614/1592115319 前回:kemp LoadMasterによる負荷分散設定 - HTTPサーバ編
https://debslink.hatenadiary.jp/entry/20200613/1592014142 前々回:kemp LoadMasterによる負荷分散設定 - FTPサーバ編
https://debslink.hatenadiary.jp/entry/20200612/1591889920:kemp LoadMasterをかじってみた
https://freeloadbalancer.com/ Free LoadMaster Load Balancer
https://kemptechnologies.com/ Kemp Technologies
https://kemptechnologies.com/ja/ Kemp Technologies Inc.日本語サイト
https://support.kemptechnologies.com/hc/en-us/categories/200294835-Documentation ドキュメント