このセクションでは、カスタム 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 スクリプトでは、次の機能をサポートします。
マルチ VIP 機能
マルチ FQDN 機能
すべての仮想サービス タイプ(V4 タイプ、V6 タイプ、V4_V6 タイプなど)
このバージョンより前に作成されたカスタム DNS プロファイル スクリプトも、引き続きサポートされます。ただし、新しく追加された機能を利用するには、最新バージョンのスクリプトを使用する必要があります。
スクリプトには、必要とされる関数と例外クラスがすべて定義されている必要があります。そうしないと、DNS プロファイルの作成時に次のエラー メッセージが表示されます。
“Custom DNS profile script is missing required functions/exception classes {function_or_exception_names}.”
スクリプトの新しいバージョンに必要とされる関数は次のとおりです。
CreateOrUpdateDnsRecords
DeleteDnsRecords
スクリプトの新しいバージョンに必要とされる例外クラスは次のとおりです。
CustomDnsAuthenticationErrorException
CustomDnsRecordNotFoundException
CustomDnsRecordAlreadyExistsException
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 ワークフローは次のようになります。
スクリプト オブジェクトを作成します。
[作成] をクリックして、CRUD の関数を含む python スクリプトを DNS プロバイダにアップロードします。
の順に移動し、必要とされる [スクリプト パラメータ] を追加します。たとえば、ユーザー名、パスワード、API のバージョン、プロバイダのサーバ アドレスなどです。
DNS プロファイルを作成します。
[作成] をクリックします。
の順に移動し、タイプが [カスタム DNS] の DNS プロファイルを作成します。
手順 1 で作成したスクリプト オブジェクトをアタッチします。
usable_domain
を追加します。
DNS プロファイルをクラウドにアタッチします。
状態ベースの DNS 登録の ControlScript
ControlScript は、アラート アクションによって開始されます。トリガするのはシステム内のイベントです。
DNS レコードを登録または登録解除する関数を定義する python スクリプトは、VIP 操作状態に基づいています。
Infoblox の ControlScript では、次の関数を定義します。
register_dns_records
—VIP_UP
アラートがトリガされると、VIP の DNS レコードを登録します。deregister_dns_records
—VIP_DOWN
アラートがトリガされると、VIP の DNS レコードの登録を解除します。
ControlScript のクラウド レベルの隔離:
ControlScript のデフォルト動作は、すべてのクラウドにわたって定義した仮想サービスすべてで呼び出されます。
カスタム DNS プロファイルがアタッチされている特定のクラウドの ControlScript を使用するには、回避策として、次に示すように、ControlScript で定義されている cloud_uuid 変数を、特定のクラウド UUID に設定できます。
cloud_uuid = <cloud_uuid>
たとえば、
cloud_uuid = "cloud-5581b2a1-222f-4b0e-b657-2d9668091f29"
デフォルトで、cloud_uuid は None です。
クラウド UUID は次の方法で取得できます。
CLI - show_cloud
REST API - /api/cloud
既知の遅延時間 90 秒に、イベント生成とアラート トリガとの間の処理時間が加算されます。
ControlScript のワークフロー
ControlScript のワークフローは次のとおりです。
ControlScript のアップロード
[作成] をクリックしてスクリプトをアップロードします。
の順に移動し、
アラート オプションの設定
[作成] をクリックします。
の順に移動し、[ControlScript] フィールドで、手順 1 で作成したスクリプト オブジェクトを選択します。
[アラート構成] を設定します。
[作成] をクリックします。
の順に移動し、次のように詳細を指定します。
アラート構成の [名前] を指定します(例:
operstate_customdns_ib_vip_down
)。[スロットル アラート](デフォルトは 600 秒)を [0] に設定します。値 0 は、時間ベースのスロットルがないということを示します。アラートは、指定された期間内に 1 回だけトリガされます。
[イベントの発生] を [VIP 停止] に設定します。
手順 2 で作成したアラート アクションを [アラート アクション] で選択します。
[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 |