機能

GTMトリガーとフォワーダー

GTMはDNS応答を生成するだけではありません — ヘルス状態が変化すると外部トリガーを発火し、DNSクエリを適切なフォワーダーにルーティングします。

TR7 GTMトリガーとフォワーダーは、グローバルトラフィック管理を受動的なDNS応答を超えて引き上げます。ヘルスチェックシナリオがアクティブまたはパッシブ状態に遷移すると、HTTP/HTTPSまたはOracle DBトリガーが発火できます — フェイルオーバー、DR、監査、ランブック、外部監視システムが自動的に行動する機会を与えます。 トリガーはturnおよびreturn方向のために別々に定義されます。シナリオが有効化されるとtriggerTurnActionsチェーンが順番に実行され、通常に戻るとtriggerReturnActionsチェーンが実行されます。HTTP/HTTPSトリガーはステータスコード、ヘッダー、ボディ、JSONataコンテンツチェックに対して検証でき、Oracleトリガーはデータベース接続とシナリオステップ配列で動作します。 フォワーダーレイヤーはDNSクエリの送信先を制御します。特定のドメインは異なる上流DNSターゲットに導かれ、TR7自身の権威ゾーンはlocalhostに転送でき、ECS情報は保持されるためジオルーティング判断が壊れません。 結果として、TR7 GTMはDNS解決を超えて — ヘルス状態の変化を外部システムに反映するトリガーチェーンと、選択的DNS転送を提供するフォワーダーレイヤーを提供します。

2
トリガータイプ: HTTP/HTTPSおよびOracle DB
24時間
最大トリガータイムアウト上限
5
フォワーダー統計: queries、answers_bytes、cache_hit、cache_miss、latency

GTMがフェイルオーバーすると、組織の残りもそれを知る必要があります。

GTMアーキテクチャでは、ヘルスチェック状態の変化がDNS応答を変えることがあります — しかし運用はDNS応答だけにとどまることはほとんどありません。データセンターがオフラインになると、アラームシステム、チケッティングシステム、DR自動化、監査パイプライン、アプリケーションチーム全員が知る必要があります。その接続なしでは、GTMが判断を行う一方で、組織の残りの運用チェーンはそれを遅すぎて知ることになります。

これを別のオーケストレーションレイヤーで解決することは可能ですが、それは新しいサービス、新しい認証情報、新しい監視、新しい障害ポイントを意味します。ヘルスチェックはすでにGTM内で実行されており、状態変化を外部システムに伝搬することは同じプラットフォームから管理されるべきです。

DNS転送側でも問題は同様です。一部のドメインは内部DNSに、一部は外部リゾルバーに、一部はTR7自身の権威ゾーンに属します。単純なフォワーダーがすべてを単一の宛先に送ると、スプリットDNS、内部ゾーン、パートナードメイン、ジオルーティング動作が衝突します。

ECS情報が失われると問題は深まります。ジオおよびトポロジーベースの判断はクライアントネットワークコンテキストに依存します。フォワーダーがそのコンテキストをドロップすると、上流の地理ルーティングが間違ったロケーションに対して行われる可能性があります。フォワーダーは単にクエリを運ぶだけでなく、判断コンテキストも保持すべきです。

TR7 GTMトリガーとフォワーダーは、ヘルスチェック状態変化をHTTP/HTTPSまたはOracle DBアクションチェーンにバインドし、選択的ドメイン転送、localhostゾーン転送、ECSパススルーを通じてDNS転送を運用可能にします。

当社のアプローチ

TR7はGTMを単にクエリに応答するDNSエンジンとしてではなく、ヘルス状態に反応してコンテキストに従ってDNSクエリを転送するアクティブな運用レイヤーとして設計します。

ヘルスチェック状態変化がトリガーチェーンを開始

HCシナリオのベース状態が変化すると、turnまたはreturnアクションが実行できます。シナリオが有効化されるとtriggerTurnActionsが順番に実行され、通常に戻るとtriggerReturnActionsが順番に実行されます。

HTTPおよびHTTPSトリガーが応答コンテンツを検証可能

HTTP/HTTPSトリガーはメソッド、URI、ヘッダー、ボディ、想定ステータスコード、タイムアウトで定義されます。応答ボディはJSONataまたは基本コンテンツチェックで検証して、アクションが成功したかを判断できます。

Oracle DBトリガーがデータベースシナリオを実行

Oracleトリガーは接続文字列とシナリオステップ配列で動作します。waitおよびexecuteCmdステップがデータベースに対してチェックまたはアクションを実行でき、想定行数または想定テキスト値を検証できます。

DNSフォワーダーがドメインベースルーティングとECS保持を提供

フォワーダーは特定のドメインを特定のDNSターゲットに送信でき、ルートドメインにデフォルトターゲットを定義できます。ECSパススルーがクライアントサブネットコンテキストを保持するため、ジオルーティング判断が壊れません。

機能

GTMトリガーとフォワーダーは、ヘルスチェックアクション、HTTP/HTTPSおよびOracle検証、チェーン化されたトリガーフロー、選択的DNS転送を単一の管理モデルに統合します。

HTTPトリガーはメソッド、URI、ヘッダー、ボディで構成

HTTPトリガーは宛先アドレス、ポート、リクエストメソッド、URI、ヘッダーリスト、リクエストボディで定義されます。想定ステータスコードのリストが呼び出しが成功したかを判断します。タイムアウトが長時間実行される外部システム呼び出しを制限します。DRランブック、監査エンドポイント、アラームシステムなどのHTTPベースターゲットはすべてこのモデルで発火できます。

HTTPSトリガーは証明書検証制御による安全な呼び出しを実行

HTTPSトリガーはHTTPと同じリクエストモデルをTLS上で適用します。verifyCertificateフラグがターゲット証明書が検証されるかを決定します。本番では証明書検証を有効に保つことが推奨されます。このパターンはGTMシナリオ変化を安全な外部アクションシステムに配信するために使用されます。

JSONataコンテンツチェックが応答ボディ検証を柔軟にする

HTTP/HTTPSトリガー応答はJSONまたはXMLとして解析され、JSONata式で検証できます。式コンテキストにはbody、bodyRaw、headers、statusが含まれます。例えば、外部ランブックシステムが200を返しても、応答ボディ内のsuccess=trueフィールドを別途チェックできます。これにより、ステータスコードのみに依存しないより堅牢なトリガー検証が可能になります。

基本コンテンツチェックが単純な部分文字列検証を提供

JSONataが不要な場合、基本コンテンツチェックを使用できます。応答ボディは.includes()セマンティクスを使用して特定の文字列の存在をテストされます。これは小さな統合、レガシーシステム、単純なヘルス応答を返すエンドポイントには十分です。運用者は複雑な式を書かずに迅速に検証できます。

Oracle DBトリガーがデータベース接続とシナリオステップを実行

Oracleトリガーはユーザー、パスワード、接続文字列でデータベースに接続します。シナリオステップにはwaitおよびexecuteCmd操作が含まれます。executeCmdからの想定行数または想定テキスト値を検証できます。このモデルはアプリケーションデータベース状態のクロス検証や、データベース側で制御されたアクションを実行するために使用されます。

トリガーチェーニングが複数のアクションを順番に実行

triggerTurnActionsとtriggerReturnActions配列は複数のトリガーIDを順番に実行します。1つのアクションが失敗するとチェーンが切れ、後続のアクションは実行されません。これにより、依存するランブックステップが制御されずに進むことを防ぎます。最初に監査エンドポイントに書き込み、次にDRジョブを開始するようなフローをこの方法で構築できます。

turnとreturn方向がシナリオ遷移を別々に処理

turnはシナリオが有効化される瞬間を表し、returnは非有効化されて通常に戻る瞬間を表します。各方向に別々のトリガーリストと条件を定義できます。フェイルオーバー中と復旧中に異なるアクションを発火できます。この分離により運用フローのよりクリーンな設計が可能になります。

アクティブトリガークリーンアップが古いトリガープロセス衝突を防ぐ

新しいグループキーが到着すると、古いトリガープロセスを停止できます。トリガーライフサイクルはstarted、succeeded、failedログエントリで追跡され、短い遅延後にactiveTriggerイベントがクリアされます。この動作により、ヘルス状態変化が急速に連続して発生したときに古いアクションが新しいフローと衝突する可能性が低減されます。メインサービスはトリガーフォークから隔離されます。

トリガー実行はマスターノードに限定

クラスタでは、トリガーはマスターノード上でのみ実行されます。同じヘルス状態変化を見る他のノードは外部アクションを再発火しません。これによりWebhookまたはDBアクションの二重発火を防ぎます。クラスタ動作はより決定論的になります。

PowerDNS Recursorフォワーダーは独自のポートで別のプロセスとして実行

フォワーダーレイヤーは別のRecursorプロセスとして位置付けられます。forwarderInnerPort範囲でDNSクエリを受信し、定義された上流ターゲットに転送します。権威DNSとRecursor転送動作は分離されます。この分離により、TR7は同じアーキテクチャ内で自身のゾーンと外部DNS解決を制御された方法で管理できます。

選択的ドメイン転送がドメインごとに異なるターゲットを定義

domainBasedForwardingリストにより、特定のドメインを特定のDNSアドレスに導けます。内部ドメインは企業DNSに行き、他のクエリはデフォルトの上流リゾルバーに行けます。この設計はスプリットDNSおよびハイブリッドDNSアーキテクチャに重要です。すべてのクエリを単一の宛先に送る粗いフォワーダーを超えます。

ECSパススルーがジオ判断のためにクライアントコンテキストを保持

フォワーダーはECS情報を上流リゾルバーに渡し、クライアントサブネットコンテキストで判断できるようにします。ECS動作はecs-ipv4-bits、ecs-add-for、許可リスト設定で制御されます。このコンテキストはジオルーティングまたはトポロジーベースの上流判断に重要です。ECSがドロップされると、地理ルーティングが間違ったリゾルバーロケーションに対して行われる可能性があります。

運用の深さ

GTMトリガーとフォワーダーは、タイムアウト動作、ライフサイクル追跡、子プロセス隔離、解析優先順位、転送ゾーン順序、メタデータラインと共に運用されます。

01

トリガータイムアウト動作

HTTPトリガーのデフォルトタイムアウトは120秒です。Oracleトリガーは自身の処理時間に応じてより長く実行されることがあります。全体的なトリガープロセスは24時間で上限を設定でき — 長いランブックやマルチステップデータベースシナリオに重要な上限です。

02

再試行動作

トリガーチェーンには自動再試行はありません。トリガーが失敗するとチェーンが切れ、後続のアクションは実行されません。したがってターゲットシステムは冪等で信頼性のあるものに設計されるべきです。

03

トリガーライフサイクルロギング

トリガーはstarted、succeeded、failed状態でログに記録されます。これらのレコードは、フェイルオーバーまたは復旧イベント中にどのアクションが実行されたかを示します。アクティブトリガー状態は短い遅延後にクリアされます。

04

別プロセス実行

トリガー実行は別の子プロセスとして実行できます。このモデルにより、メインGTMサービスが長時間実行される外部呼び出しやDB操作の影響を受けることを防ぎます。失敗するトリガーがメインサービスを停止させることはありません。

05

応答解析優先順位

HTTP応答ボディはコンテンツタイプに基づいて、最初にJSONとして、次にXMLとして解析されます。いずれも成功しない場合、生の文字列フォールバックが使用されます。JSONata式はこのコンテキストに対して評価されます。

06

転送ゾーン順序

forward-zones-recurseラインは定義された順序で生成されます。最初のドメイン転送定義はプライマリラインとして書かれ、後続の定義は追加ラインとして書かれます。この順序は選択的転送動作のクリーンな適用に重要です。

07

フォワーダーメタデータ

forwarder.metaDataフィールドは追加のRecursor構成ラインを運びます。カスタムキャッシュ、ポリシー、運用設定のための拡張ポイントを提供します。使用中のメタデータラインは慎重に検証されるべきです。

使用場面

プライマリデータセンターがダウンしたときのWebhookアラーム

ヘルスチェックシナリオが有効化されると、HTTP POSTトリガーが発火します。アラームまたはインシデント管理システムがデータセンターダウン通知を受け取ります。DNSフェイルオーバー判断は同じ瞬間に外部運用システムに見えるようになります。

DRシナリオ有効化時の自動ランブック起動

DRシナリオが有効化されると、HTTPSトリガーが自動化プラットフォームでジョブを開始できます。最初のトリガーは監査レコードを作成し、2つ目のトリガーはDR起動ジョブを実行します。トリガーチェーンが失敗した場合、次のステップは制御されずに進むことはありません。

ヘルスチェック変化を監査エンドポイントに書き込み

各turnおよびreturnイベントで、HTTPトリガーが監査エンドポイントにイベントレコードを送信できます。どのゾーン、どのシナリオ、いつ変化が発生したかの情報が外部ログシステムにプッシュされます。GTM判断は監査可能になります。

Oracleトリガーによるアプリケーションデータベース状態のクロス検証

アプリケーションハートビートが失敗すると、Oracleトリガーが独立したDBチェックを実行できます。想定行数またはテキスト値が返されると、イベントはクロス検証されます。これによりHTTPヘルスチェック結果のみに依存しない、より強力な判断シグナルが生成されます。

内部ドメインクエリを企業DNSに転送

internal.example.comのようなドメインは、domainBasedForwardingを介して企業DNSターゲットに転送できます。他のクエリはデフォルトの上流DNSに行きます。TR7自身の権威ゾーンはlocalhost経由でローカルDNSプロセスに転送できます。

スプリットホライズンDNSアーキテクチャでの選択的フォワーダー使用

内部クライアントは企業Recursorを介して内部アプリケーションドメインを解決でき、外部クライアントはTR7 GTM権威応答を受け取れます。選択的転送とECSパススルーを共に使用すると、内部と外部の解決動作が分離されます。DNSアーキテクチャは単一方向の転送に縛られません。

よくある質問

GTMはどのトリガータイプをサポートしますか?
TR7 GTMは2つのトリガータイプを提供します: HTTP/HTTPSおよびOracle DB。HTTP/HTTPSトリガーはメソッド、URI、ヘッダー、ボディ、想定ステータスコードで構成され、応答ボディはJSONataまたは基本コンテンツチェックで検証できます。Oracle DBトリガーは接続文字列とシナリオステップで動作し、データベース側でチェックまたはアクションを実行します。
トリガーチェーンが1つのアクションで失敗するとどうなりますか?
triggerTurnActionsまたはtriggerReturnActions配列内のアクションが失敗すると、その時点でチェーンが切れ、後続のアクションは実行されません。自動再試行はありません。したがってターゲットシステムは冪等で信頼性のあるものに設計されるべきです。トリガー結果はstarted、succeeded、failedとして記録されます。
クラスタではどのノードがトリガーを実行しますか?
クラスタでは、トリガーはマスターノード上でのみ実行されます。同じヘルス状態変化を観測する他のノードは外部アクションを再発火しません。このメカニズムによりWebhookまたはDBアクションの二重発火を防ぎ、クラスタ動作をより決定論的にします。
DNSフォワーダーはECS情報をどう保持しますか?
フォワーダーレイヤーはECSパススルーを介してクライアントサブネット情報を上流DNSに渡します。ECS動作はecs-ipv4-bits、ecs-add-for、edns-subnet-allow-list設定で制御されます。ECSがドロップされると、ジオルーティングまたはトポロジーベースの上流判断が間違ったリゾルバーロケーションに対して行われる可能性があり — ジオ認識アーキテクチャではECSパススルーが重要です。
選択的ドメイン転送はどう構成されますか?
domainBasedForwardingリストにより、特定のドメインを特定のDNSアドレスに導けます。ドメインごとに別々のターゲットを定義でき、マッチするエントリのないクエリはデフォルトの上流リゾルバーに行きます。TR7自身の権威ゾーンはlocalhost経由でローカルDNSプロセスに転送できます。この設計はスプリットDNSおよびハイブリッドDNSアーキテクチャに適しています。
HTTP/HTTPSトリガー応答検証はどう機能しますか?
トリガー呼び出しが完了すると、応答ボディは最初にJSONとして解析され、次にXMLとして解析されます。両方が失敗すると生の文字列として扱われます。JSONataコンテンツチェックモードでは、式はこのコンテキストに対して評価されます。基本コンテンツチェックモードでは、応答ボディ内の特定の文字列の存在が.includes()セマンティクスでテストされます。応答コンテンツ — ステータスコードだけでなく — が検証範囲に含まれます。

GTMフェイルオーバー判断を外部システムに接続する

HTTP/HTTPSおよびOracle DBトリガーチェーン、選択的DNS転送、ECS認識Recursor。ご自身の環境でライブセットアップをご案内します。