PR
スポンサーリンク
スポンサーリンク
スポンサーリンク

Virtual-Serverを作成するためのフローを解説(GUI編)

スポンサーリンク
スポンサーリンク
スポンサーリンク
記事内に広告が含まれています。
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク

はじめに

この記事は、以下を実現するために作成しました。

  • VMware WorkStation ProでBIG-IPを冗長構成で構築する。
  • BIG-IPを利用した実サーバ(リアルサーバ)へのアクセスを実現する。
  • 2点を実現することで、本格的なロードバランサーの学習環境を提供する。

この記事で解説していること

Virtual-Serverを作成するまでに必要なステップを網羅しました。

GUIで設定します。

前回の記事

BIG-IP VMを使用したロードバランサーの検証環境構築~リアルサーバの準備~[VMware Workstation Pro]
はじめにこの記事は、以下を実現するために作成しました。 VMware WorkStation ProでBIG-IPを冗長構成で構築する。 BIG-IPを利用した実サーバ(リアルサーバ)へのアクセスを実現する。 2点を実現することで、本格的な...

検証環境の構成図をおさらい

次の図となります。

この記事では、ロードバランサーの中核機能となる負荷分散を実現するために、Virtual-Serverを作成する方法について、順を追って解説します。設定項目が多岐に渡るので、馴染みが無いと情報量が多くて大変だと思われます。

今回の要件

以下の通りです。小難しいものは省きます。

①node
 zabbix-01:172.16.4.81
 zabbix-02:172.16.4.82
②使用するポート
 http(TCP 80)
③X-Forwarded-For:使用します。
④Cookie:Insert-Cookie方式を使用します。
⑤irule:今回は使用しません。
⑥Virtual-ServerのIPアドレス:192.168.1.1
⑦SNATのIPアドレス:192.168.2.1

表示画面の修正

System > Preferencesをクリックします。

以下の2つを修正します。

  • Records Per Screen:1000へ変更。リストに一度に表示されるオブジェクトを増やすためです。
  • Idle Time Before Automatic Logout:86400へ変更。時間経過によるログアウトを極力防ぐためです。

Monitorの作成

Local Traffic > Monitorsを選択します。

右上にあるCreateをクリックします。

Nameには『monitor-http』と入力してください。

Typeには『HTTP』を選択することで、HTTP Monitorの設定画面が表示されます。Parent Monitorを選択することで、指定したmonitorの設定を継承することができます。ここではデフォルトで作成されているhttpを選択します。

Configurationでは次のように設定します。

[説明]
zabbixのdashboardへGETメソッドでアクセス。HTTP Responseとして200(正常)を受け取れば、ヘルスチェックが成功したと判断させます。
WebサーバはTCP:80(HTTP)でリッスンさせているので、Alias Service Portには80を指定します。
5秒間隔でアクセス。16秒間にHTTP Response Code 200を受けることができないと、ヘルスチェック失敗と判定します。
・Interval:5
・Timeout:16
・Send String:GET /zabbix.php?action=dashboard.view&dashboardid=1\r\n
・Receive String:200
・User Name:Admin
・Password:zabbix
・Alias Service Port:80

Nodeの作成

Local Traffic > Nodes を選択します。

右上にあるCreateをクリックします。

次のように入力します。

[説明]
BIG-IP側でリアルサーバを認識させる必要があります。このために作成するのがNodeです。
NodeのIPアドレスはリアルサーバのIPアドレスとなります。
ただし、今回はVDOMを使用しているので、%"VDOMのID"をIPアドレスの末尾に付与する必要があります。
Nodeのヘルスチェックを行うことが可能です。複数のヘルスチェックを組み合わせることも可能です。
今回は、ICMPによるレイヤー3までの疎通確認を行うため、gateway_icmpを選択しています。icmpでも同様です。
・Name:172.16.4.81%10
・Description:zabbix-01
・Address:172.16.4.81%10
・Health Monitors:Node Specific
・Select Monitors:gateway_icmp

2号機(zabbix-02)も同様に作成します。IPアドレスのみ変更してください。

作成が完了したらリストに2台とも表示されることを確認します。

また、ステータスが正常、つまりBIG-IPのInternalのインタフェースからPINGが通ることも確認します。この時点でエラーですと、次のPOOLでもステータスが正常となりません。

Poolの作成

Local Traffic > Pools を選択します。

右上にあるCreateをクリックします。

次のように入力します。

[説明]
リアルサーバをグループ化して、ヘルスチェックや負荷分散などの機能を提供します。
この時、Node+ポート番号の組み合わせのことを、プールメンバーと言います。
今回の場合、プールメンバーは2つ存在し、両方ともTCP:80(HTTP)がサービスポートとなります。
ヘルスチェックには、先ほど作成したmonitor-httpを指定することで、zabbixのdashboardへのアクセス可否を確認します。
負荷分散方式はデフォルトはRound Robinとなります。非常に種類が多いので詳細は割愛。
・Name:POOL
・Description:zabbix
・Health Monitors:monitor-http
・Load Balancing Method:Round Robin
・New Members:Node Listから先ほど作成したnodeを選択し、Service Portに80を入力してAddを押す。

作成直後は、ステータスが以下の様になります

POOLをクリックして、Availabilityで緑マークが表示されていれば、無事にmonitor-httpによるヘルスチェックが成功しています。

BIG-IP - バーチャルサーバ、プール、ノードの関係、バーチャルサーバのタイプの説明
BIG-IP - バーチャルサーバ、プール、ノードの関係、バーチャルサーバのタイプの説明。

SNAT Poolの作成

Local Traffic > Address Translation > SNAT Pool List を選択します。

右上にあるCreateをクリックします。

次のように入力します。

[説明]
VDOMを使用してルーティングするため、SNATのセグメントから割り当てたIPアドレスの末尾に%IDを付与します。
・Name:192.168.2.1%10
・IP Address:192.168.2.1%10 を入力後、Addをクリック。

TCP Profileの作成

Local Traffic > Profiles > Protocol > tcp を選択します。

今回は検証用途のため新規作成しません。デフォルトのtcpプロファイルの中身を確認してみます。これを後で使用します。

見てもらうとわかりますが、設定可能な項目数が非常に多いです。

この中でも、Timer ManagementのIdle Timeoutは修正する機会が多いと思われます。気になる方は全ての項目について調べてみてください。TCPというプロトコルについて深い知見が得られます。

Connection SetupではデフォルトでTCP Fast Openが有効化されていることも確認できます。

TCP 高速オープン |Junos OS |ジュニパーネットワークス
TCP Fast Open (TFO) は TCP の更新プログラムであり、TCP セッション中の標準の 3 方向接続ハンドシェイクよりも最大 1 つの完全なラウンドトリップ タイム (RTT) を節約します。TFO は MS-MPC およ...
TCP Fast Open入門 遅延を劇的に削減する新技術のすべて
TCP Fast Openについての質問と回答 ITの初心者 TCP Fast Openは本当にウェブサイトの読み込みを早くするのですか?その仕組みを教えてください。 IT・PC専門家 はい、TCP Fast Openはウェブサイトの読み込

Data Transferを確認すると、Delayed Acksが有効化されています。性能を求めるのであれば、こちらは無効化推奨です。Nagle’s Algorithmはデフォルトで無効化されていることも確認できます。

TCP遅延ACK - Wikipedia
TCP ACK を制御するための新しいレジストリ エントリ - Windows Server
TCP 受信確認 (ACK) の数を決定する新しいレジストリ エントリである TcpAckFrequency を導入します。
3.7. TCP の遅延 ACK タイムアウトの削減 | チューニングガイド | Red Hat Enterprise Linux for Real Time | 7 | Red Hat Documentation
3.7. TCP の遅延 ACK タイムアウトの削減 | チューニングガイド | Red Hat Enterprise Linux for Real Time | 7 | Red Hat Documentation

Congestion Controlは基本触ることないと思います。ただし、ここでは、任意の輻輳制御アルゴリズムをプルダウンから選択することが可能です。明示的輻輳通知(ECN)についても、デフォルトで有効化されています。Slow Startも有効化されています。

第1回 TCPの輻輳制御とは何か | gihyo.jp
今回は、初学者向けにTCPの輻輳制御の基本的な考え方や仕組みを概説します。
TCP各バージョンの輻輳制御の観察
【図解】TCPのフロー制御と輻輳制御とその違い 〜スライディング ウィンドウ サイズ, スロースタート, AIMD〜
TCP のフロー制御の実装TCP ではデータ (セグメント) を受信したことを ACK で相手に知らせますが、TCP セグメントを受信するたびに ACK を返していては効率が悪いので、TCP では、規定の量の TCP セグメントを受信するま...

HTTP Profileの作成

Local Traffic > Profiles > Services > HTTP を選択します。

今回は検証用途のため新規作成しません。デフォルトのhttpプロファイルの中身を確認してみます。ただし、一部の設定を変更します。これを後で使用します。

こちらもTCPプロファイル同様に設定項目が多岐にわたります。

この中でも、Insert X-Forwarded-ForはEnabledにされているところが多いと思われます。

そうしないと、リアルサーバ側で本当の送信元のIPアドレスを認識できません。Virtual-Serverを通過する際にアドレス変換されるためです。

※ただし、構成次第ではアドレス変換しないケースもあるので、必ずしも有効化する必要はないです。

XFF(X-Forwarded-For)とは
XFF(X-Forwarded-For)とは

Enforcementはデフォルトのままで問題ありません。

sFlowもデフォルトで問題ありません。

HTTP Strict Transport SecurityもHTTPを使用しているため、デフォルトのままにします。

HTTPSを使用してVirtual-Serverへアクセスする場合は有効化しておいた方が無難です。

ApacheでHSTSを設定する方法と具体的な手順を徹底解説 | IT trip
HSTS(HTTP Strict Transport Security)は、Webサイトのセキュリティを強化するために設計された重要なセキュリティ機能です。HSTSを有効にすると、ブラウザがそのサイトへの接続を自動的にHTTPSで行うよう強

Persistence Profileの作成

Local Traffic > Profiles > Persistence を選択します。

今回は検証用途のため新規作成しません。デフォルトのcookieプロファイルの中身を確認してみます。

Cokkie methodを確認すると、『HTTP Cookie Insert』がデフォルトで選択されています。

負荷分散をする際に、同一ユーザーが初回にアクセスしたサーバと継続的に通信するために必要です。

BIG-IP - パーシステンス : Cookie Insert
BIG-IP - パーシステンス : Cookie Insert、設定方法、確認方法、セッション維持

また、HTTPOnly属性やSecure属性についても、デフォルトで有効化されていることを確認できます。

HTTPOnlyとSecure属性で実現する安全なクッキー管理 - 株式会社iTech
本記事は、HTTPOnly属性の詳細なメカニズムと、その実装がどのようにWebセキュリティを強化するかを深堀りする、少々レベルの高い技術解説となっています。基本的なクッキーの知識は既にお持ちの方を対象に、HTTPOnly

Virtual-Serverの作成

Local Traffic > Virtual Servers を選択します。

右上にあるCreateをクリックします。

次のように入力します。

Name:Virtual-Server
Description:zabbix
Source Address:0.0.0.0%10/0
Destination Address/Mask:192.168.1.1%10 ※図が誤ってます。
Service Port:80

Protocol:デフォルトのTCP。TCP ProfileやHTTP ProfileはデフォルトではClient側もServer側も同様のプロファイルが使用されます。
HTTP Profile(Client):httpに変更します。

HTTPSをリッスンポートとしてVirtual-Serverを作成する場合には、SSL Profile(Client)の設定が必須です。外部からの通信~Virtual-Serverの通信の暗号化が必要だからです。

また、Virtual-Server~リアルサーバの通信を暗号化する場合には、SSL Profile(Server)の設定が必須です。今回は、HTTPを使用するため、このままで問題ありません。

VLAN and Tunnel Trafficは、Enabled onを選択します。

VLANs and Tunnelsには、ExternalとInternalをSelectedに格納されている状態にします。

これにより、このVirtual-Serverが使用するセグメントはExternal(172.16.2.0/24)、Internal(172.16.3.0/24)となります。

また、Source Address Translationでは、SNATを選択します。SNAT Poolでは、先ほど作成した192.168.2.1%10を選択します。

Resourceでは以下を設定します。

Default Pool:POOLを選択します。
Default Persistence Profile:cookieを選択します。
また、実運用ならばiRules、Policies、Fallback Persistence Profileも設定することが多いですが、検証用途なのでしません。

完了したら、Finishedをクリックします。

図の様にステータスが緑であることを確認します。

同期されているため2号機に自動的に設定が反映されます。

次に、検証用端末の準備と、VIrtual-Serverを経由した通信・挙動の確認を行います。

次の記事

BIG-IP VMを使用したロードバランサーの検証環境構築~検証用端末の準備・検証~[VMware Workstation Pro]
はじめにこの記事は、以下を実現するために作成しました。 VMware WorkStation ProでBIG-IPを冗長構成で構築する。 BIG-IPを利用した実サーバ(リアルサーバ)へのアクセスを実現する。 2点を実現することで、本格的な...

コメント

タイトルとURLをコピーしました