株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

VMware Avi Load Balancer:EVHの設定について

皆さん、こんにちは。

 Avi Load Balancer担当です。

 

本記事では前回のSNIに引き続き、Avi Load Balancerの機能である「Enhanced Virtual Hosting(EVH)」の設定についてご紹介します。

 

 

第1章:EVHとは

Enhanced Virtual Hosting(EVH)は仮想ホスティング機能の一つで、柔軟なホストベースのルーティングを可能にする仕組みです。
SNI(Server Name Indication)と同様に一つの仮想IP(VIP)を親Virtual Service(親VS)が持ち、複数の子Virtual Service(子VS)ごとにドメインを利用できますが、子VSごとに証明書を持つSNIとは異なり、EVHでは親VSがHTTPS通信において1つの証明書を使用し、ヘッダー情報に基づいて子VSにリクエストを振り分けます。また、EVHでは暗号化を伴わないHTTP通信でも利用可能です。

そのため、ユーザー向けのマルチテナントに向いているSNIとは異なり、EVHは一つのシステム内のアプリケーションの振り分けなどに活用できます。

似たような機能にHTTP Policyがありますが、アプリケーションごとにVSを管理する事ができるEVHでは、より柔軟な設計が可能となります。

第2章:EVHのアーキテクチャ

EVHの設定では、SNIと同様に一つの親VSと複数の子VSに仮想サービスの構成が分離されます。
親VSがVIPを持ち、子VSにFQDNを設定する構成はSNIと似ていますが、異なる点として、EVHでは親VSがTLS終端を行い、証明書は親VSに設定された1つのみが使用されます。
HTTPリクエストの処理は、リクエストに含まれるヘッダー情報(HostやPath)と一致する設定をもつ子VSが担います。

クライアントからの接続の流れは以下のようになります。

  1. クライアントからのTCPハンドシェイクを親VSが処理
  2. Client Helloを親VSが受信
  3. 親VSがTLS終端を担当し、SSLプロファイルに基づいて接続を許可または拒否し、使用する暗号方式(cipher)を選択する。証明書も親VSに設定されたものを使用
  4. TLS終端後、親VSはHTTPリクエストに含まれるHostやPathなどのヘッダー情報を、子VSに設定された一致条件と照合し、該当する子VSにリクエストを転送
  5. 子VSはバックエンドプールやポリシーに基づいてリクエストを処理

第3章:Avi Web GUIによるEVHの設定手順

AviのWeb UIによるEVHの基本的な設定手順について説明します。ここではAviコントローラのバージョン31.2.1での設定例となります。
AviでEVHを実装するためには親VSと子VSを作成する必要があります。

親VSにはVIP(IPアドレス)および待ち受けポート番号、HTTPS通信の場合はSSL証明書とSSLプロファイルなどを設定し、子VSにはホスト名やPoolなどを設定します。

1:親VSの作成

VSの作成画面に進み、以下の項目を設定します。各項目の詳細な設定方法や、下記の項目以外については、ここでは説明を割愛します。

  1. VSの名前
  2. Virtual Hosting VS を 有効化およびParentを選択
  3. Virtual Hosting はParent、TypeはEnhanced Virtual Hostingを選択
  4. VIP(IPアドレス)
  5. Service Port(待ち受けポート番号)
  6. SSL Profile(TLSバージョンや暗号スイート)
  7. SSL Certificate (SSL証明書)
  8. Pool

必要な設定を入力したら画面下部の「SAVE」をクリックして設定を完了します。

2:子VSの作成
親VS作成後、新たなVSの作成画面に進み、以下の項目を設定します。親VSと同様に、各項目の詳細な設定方法や、下記の項目以外については、ここでは説明を割愛します。

  1. VSの名前
  2. Virtual Hosting VS を 有効化およびChildを選択
  3. Virtual HostingはChild、TypeはEnhanced Virtual Hostingを選択
  4. Virtual Hosting Parentは先ほど作成した親VSを選択
  5. Host(ドメイン名)およびRule
  6. Pool

必要な設定を入力したら画面下部の「SAVE」をクリックして設定を完了します。

子VSは設定したいHostやRuleの数だけ同様の手順で作成します。

設定したVSは「Applications」>「Virtual Services」に一覧表示され、「Health」が赤もしくはグレーアウトしていなければUpした状態となっています。

第4章:通信ログから詳細な通信情報を確認

「Applications」>「Virtual Services」に表示されている子VSの名前をクリックし、Logsタブを開くとクライアントと子VS間の通信ログが表示され、End-to-Endでの通信の詳細を確認できます。



以上となります。