このセクションでは、カスタム DNS の AWS マルチ アベイラビリティ ゾーンのサポートについて説明します。

Infoblox DNS プロファイルでは、AWS AZ 全体に定義した仮想サービスで複数のレコードの追加をサポートしており、HA を維持するには状態ベースの登録も必要とします。これは次によって行います。

  • カスタム DNS - マルチ VIP とマルチ FQDN のサポート

  • ControlScript - 動作状態ベースの DNS 登録

カスタム IP アドレス管理/DNS プロファイル

NSX Advanced Load Balancer では、カスタム IP アドレス管理/DNS プロファイル機能によってカスタム IP アドレス管理/DNS スクリプトを活用することで、API 駆動のサードパーティ IP アドレス管理/DNS プロバイダとの統合ができます。カスタム IP アドレス管理/DNS を使用すると、ユーザーによるカスタマイズが可能なスクリプトによって全体を駆動できるため、柔軟性が向上します。

新しい仮想サービスの作成で、カスタム IP アドレス管理/DNS プロファイルとスクリプトが使用されると、IP アドレス管理/DNS プロバイダによって IP アドレス管理/DNS レコードが自動的に作成されます。

詳細については、「NSX Advanced Load Balancer のカスタム DNS プロファイル」を参照してください。

カスタム DNS スクリプト

Infoblox DNS プロバイダのカスタム DNS スクリプトでは、次の機能をサポートします。

  1. マルチ VIP 機能

  2. マルチ FQDN 機能

  3. すべての仮想サービス タイプ(V4 タイプ、V6 タイプ、V4_V6 タイプなど)

注:

このバージョンより前に作成されたカスタム DNS プロファイル スクリプトも、引き続きサポートされます。ただし、新しく追加された機能を利用するには、最新バージョンのスクリプトを使用する必要があります。

スクリプトには、必要とされる関数と例外クラスがすべて定義されている必要があります。そうしないと、DNS プロファイルの作成時に次のエラー メッセージが表示されます。

“Custom DNS profile script is missing required functions/exception classes {function_or_exception_names}.”

スクリプトの新しいバージョンに必要とされる関数は次のとおりです。

  • CreateOrUpdateDnsRecords

  • DeleteDnsRecords

スクリプトの新しいバージョンに必要とされる例外クラスは次のとおりです。

  1. CustomDnsAuthenticationErrorException

  2. CustomDnsRecordNotFoundException

  3. CustomDnsRecordAlreadyExistsException

  4. CustomDnsGeneralException

スクリプトのログの記録には、(auth_params の)logger_name を使用することが推奨されます。テナント固有のデバッグ ログ ファイルが作成され、スクリプトからのログ ステートメントが保存されます。

  • 管理テナントの場合 — /var/lib/avi/log/custom_dns_script.log

  • 管理テナント以外の場合 — /var/lib/avi/log/custom_dns_script_<tenant_name>.log

カスタム DNS プロファイルの NSX Advanced Load Balancer ログのある場所は、/opt/avi/log/portal-webapp.log です。

カスタム DNS ワークフロー

カスタム DNS ワークフローは次のようになります。

  1. スクリプト オブジェクトを作成します。

    1. [テンプレート ] > [カスタム IP アドレス管理/DNS] の順に移動し、[作成] をクリックして、CRUD の関数を含む python スクリプトを DNS プロバイダにアップロードします。



    2. 必要とされる [スクリプト パラメータ] を追加します。たとえば、ユーザー名、パスワード、API のバージョン、プロバイダのサーバ アドレスなどです。

  2. DNS プロファイルを作成します。

    1. [テンプレート ] > [IP アドレス管理/DNS プロファイル] の順に移動し、[作成] をクリックします。



    2. タイプが [カスタム DNS] の DNS プロファイルを作成します。

    3. 手順 1 で作成したスクリプト オブジェクトをアタッチします。

    4. usable_domainを追加します。

  3. DNS プロファイルをクラウドにアタッチします。



状態ベースの DNS 登録の ControlScript

ControlScript は、アラート アクションによって開始されます。トリガするのはシステム内のイベントです。

DNS レコードを登録または登録解除する関数を定義する python スクリプトは、VIP 操作状態に基づいています。

Infoblox の ControlScript では、次の関数を定義します。

  • register_dns_recordsVIP_UP アラートがトリガされると、VIP の DNS レコードを登録します。

  • deregister_dns_recordsVIP_DOWN アラートがトリガされると、VIP の DNS レコードの登録を解除します。

ControlScript のクラウド レベルの隔離

ControlScript のデフォルト動作は、すべてのクラウドにわたって定義した仮想サービスすべてで呼び出されます。

カスタム DNS プロファイルがアタッチされている特定のクラウドの ControlScript を使用するには、回避策として、次に示すように、ControlScript で定義されている cloud_uuid 変数を、特定のクラウド UUID に設定できます。

cloud_uuid = <cloud_uuid>

たとえば、

cloud_uuid = "cloud-5581b2a1-222f-4b0e-b657-2d9668091f29"

デフォルトで、cloud_uuidNone です。

クラウド UUID は次の方法で取得できます。

  1. CLI - show_cloud

  2. REST API - /api/cloud

注:

既知の遅延時間 90 秒に、イベント生成とアラート トリガとの間の処理時間が加算されます。

ControlScript のワークフロー

ControlScript のワークフローは次のとおりです。

  1. ControlScript のアップロード

    1. [テンプレート ] > [スクリプト ] > [ControlScript] の順に移動し、[作成] をクリックしてスクリプトをアップロードします。



  2. アラート オプションの設定

    1. [操作 ] > [アラート アクション] の順に移動し、[作成] をクリックします。

    2. [ControlScript] フィールドで、手順 1 で作成したスクリプト オブジェクトを選択します。



  3. [アラート構成] を設定します。

    1. [操作 ] > [アラート構成] の順に移動し、[作成] をクリックします。

    2. 次のように詳細を指定します。

      1. アラート構成の [名前] を指定します(例:operstate_customdns_ib_vip_down)。

      2. [スロットル アラート](デフォルトは 600 秒)を [0] に設定します。値 0 は、時間ベースのスロットルがないということを示します。アラートは、指定された期間内に 1 回だけトリガされます。

      3. [イベントの発生][VIP 停止] に設定します。

      4. 手順 2 で作成したアラート アクションを [アラート アクション] で選択します。



    3. [VIP 稼動中] イベントでこの手順を繰り返します。

注:

イベントが生成された後にアラート アクションが実行されるまでに、90 秒の遅延が予想されます。

スクリプト パス

このファイルにアクセスするには、SSH または SCP を使用してコントローラからファイルをプルします。

スクリプト

ワークフロー

場所

マルチ VIP とマルチ FQDN サポートの ControlScript

カスタム DNS ワークフロー

/opt/avi/python/lib/custom_dns/custom_dns_script_infoblox.py

状態ベースの DNS 登録の ControlScript

ControlScript のワークフロー

/opt/avi/python/lib/custom_dns/operstate_controlscript_infoblox.py

コントローラへの SSH 接続の詳細については、「 NSX Advanced Load Balancer CLI へのアクセスの FAQ」を参照してください。