NSX Advanced Load Balancer は、GUI、CLI、または API を使用して直接構成されます。ただし、ネイティブの機能セットには、特定の使用事例に対応するのに十分な堅牢性がない場合があります。この目的のために、NSX Advanced Load Balancer は、NSX Advanced Load Balancer 機能に大幅な拡張性を追加できる Lua ベースのスクリプト環境である DataScript を提供します。

DataScript はポリシーの高度なバージョンであり、クライアントとサーバのトラフィックに対して検査と操作を可能にします。DataScript は、クライアント HTTP 要求またはサーバ HTTP 応答を検査し、コンテンツ スイッチング、リダイレクト、ヘッダーの操作、ログ作成などを実行するために使用されます。DataScript のスクリプト言語は、組み込みの Lua インタープリタ上に構築され、その機能を拡張するために NSX Advanced Load Balancer 固有のライブラリが追加されています。基本的な DataScript 構文は Lua に基づいており、NSX Advanced Load Balancer 固有のタスクに使用できる、関数と呼ばれるコマンドが追加されています。Lua スクリプトの構文と使用方法の詳細については、www.lua.org を参照してください。

DataScript は、DataScript が適用されている仮想サービスをホストするサービス エンジンのデータ プレーン内で実行されます。DataScript は、制御プレーンを自動化するための Python ベースのスクリプト ツールである ControlScript とは異なります。このツールは、NSX Advanced Load Balancer Controller から実行されます。一般的な DataScript は、通常、ポリシーの一致/アクション ロジックと似た、if/then ロジックの形式を取ります。

path = avi.http.get_path()
if string.beginswith(path, "/docs/") then
   avi.redirect("http://docs.avinetworks.com/index.html")
end
注:

NSX Advanced Load Balancer では、IPv6 はまだ DataScript でサポートされていません。

  • DataScript のイベント:各 DataScript は、イベントがトリガされると実行されます。thezxz 仮想サービスが HTTP 要求または HTTP 応答を受信した場合などです。DataScript は、1 つ以上のイベント内で実行する必要があります。

  • DataScript の構成:演算子:DataScript は、リレーショナル、論理、または算術などの演算子を使用できます。

  • DataScript 関数:関数は、HTTP リダイレクトやクライアント接続の終了など、NSX Advanced Load Balancer 固有のコマンドです。

    DataScript には、レイヤー 4 DataScript 関数とレイヤー 7 DataScript 関数の 2 種類の関数が含まれています。

  • 実行の優先順位:DataScript は、NSX Advanced Load Balancer 内の他の機能との間に複雑な関係があります。複数の DataScript が仮想サービスに適用されている場合、またはポリシーやその他の機能が DataScript と競合する場合は、実行の優先順位を理解することが重要です。

  • トラブルシューティング:構成時に DataScript の保存またはロードに失敗したり、問題なく作成されてもトラフィックに適用すると実行に失敗したりすることがあります。