Halo式グローバル入口とは、TCP が張る前にリゾルバ・キャッシュ・自動化が「どの PoP を指すか」を揃える契約です。Split-horizon と GeoDNS はその契約の別レーンを担い、TTL とキャッシュ粘性が、リモートMac 艦隊やCI/CD のアーティファクト回源を切り替えたあと、現実が追いつくまでの上限を決めます。
越境 SSH と大物取得を同一レビューで押さえる向けです。PoP の広い比較は Halo式入口(GeoDNS・SSH)、本稿はリゾルバ挙動・レコード設計・回源 p95 検収に絞ります。日本語トップのほか EN・KO・ZH・TW・DE・FR の地域トップから入口を揃え、下表を監視設計へ写してください。
Split-horizon と GeoDNS の決定マトリクス
Split-horizon は社内/CI VPC で公開とは別応答。GeoDNS(ECS を意識したポリシーが多い)は公開クライアントを地域へ誘導します。置き換えではなく、Split=自動化の一意、GeoDNS=単一名の発見、が定石です。
| 観点 | Split-horizon(内側ビュー) | GeoDNS(公開ビュー) |
|---|---|---|
| 主な利点 | CI/ランナー先を決定的に固定 | 人とノートPC向けに単一グローバル名を維持しやすい |
| TTL の考え方 | 300〜3600 秒が多く、社内リゾルバ支配下なら短くても運用しやすい | 変更窓は 60〜300 秒、定常は地域 A/AAAA で 600〜1800 秒帯が一般的 |
| 粘性リスク | 拠点フォワーダや透過 DNS プロキシの長期キャッシュ | ISP 再帰の ECS 無視、大陸マップの陳腐化、TTL 重複期の部分誘導 |
| SSH 握手 | 踏み台と PoP ID を 1:1 で台帳化しやすい | 握手は「キャッシュされた宛先」に従うため市場ごとに実測が必須 |
| アーティファクト起点 | registry.internal を区内 VIP に固定しやすい |
ALIAS/ANAME や頂点規則が要る。CDN の二重スタック乖離に注意 |
| 典型故障 | 内側台帳と公開マーケ DNS のドリフト | ヘルスフラップと TTL オーバーラップによる揺り戻し |
実行レベルの DNS レコード型(クックブック)
名前を固定したまま切替える最小レコード集合にします。安定オーナー名+CNAME 間接、頂点は ALIAS/ANAME か平坦化 A/AAAA に寄せます。
| レコード | 典型用途 | 選定の目安 |
|---|---|---|
| A / AAAA | SSH 踏み台、レガシー VPN、ベアメタルエッジ | 間接が最少。Mac ビルダは二重スタック両方を対で |
| CNAME | 加重先や CDN 名へのエイリアス | 頂点は平坦化非対応なら不可 |
| ALIAS / ANAME(ベンダ) | 頂点から GeoDNS プールやマネージド GW へ | マーケ用ルートで PoP 集合が頻繁に変わるとき |
| SRV | SSH や内部 gRPC のディスカバリ(対応クライアント前提) | 自動化カタログに強いが、素の OpenSSH はラッパーが要ることが多い |
| TXT | 所有権、ACME、カナリアトークン | 短く。運用状態の詰め込みは避ける |
| NS(委譲) | 地域子ゾーンの SOA 分離 | 法務・請求境界で権威を分けたいとき |
TTL 帯とキャッシュ粘性のプローブ
TTL は再帰キャッシュが尊重する場合の残存上限です。粘性は接続再利用・Happy Eyeballs・CDN 固定でも出るため、TTL と観測残時間を同系列で記録します。
| ライフサイクル | 推奨 TTL レンジ | 意図 |
|---|---|---|
| 本番定常 | 地域 A/AAAA は 600〜1800 秒。プールが動くなら 300〜900 秒 | クエリ負荷を抑えつつ同日中の修正余地を残す |
| 計画移行 | 切替の少なくとも一 TTL 周期前から 60〜120 秒へ | 多くのキャッシュが切替前に失効するようにする |
| 緊急ロールバック | 30〜60 秒はヘルス連動の自動化がある場合のみ | 短 TTL は権威 QPS を増やすので上限監視が必須 |
| 内製 Split ビュー | 300〜3600 秒(DHCP リースとキャンパスフォワーダに合わせる) | 上書き経路を文書化し、粘性の逃げ道を一本残す |
# 公開と社内の応答差分(ZONE/HOST を置換)
dig +ttlunits A ssh.example.com @8.8.8.8
dig +ttlunits A ssh.example.com @10.0.0.2 # 社内リゾルバ例
# CNAME 平坦化を含む連鎖
dig +trace +ttlunits A ssh.example.com
# HTTPS エッジの粘性(TLS+TTFB)。ISP を二系統から繰り返す
curl -sS -o /dev/null -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer}\n' \
https://registry.example.com/v2/
SSH や HTTP プローブと同じタイムスタンプで、dig の残 TTLをログに残してください。DNS を緑にしたのにソウルからバージニアへ落ちるインシデントの多くは BGP ではなくキャッシュ粘性です。
リージョン横断 SSH 握手のプローブ思路
SSH は鍵交換とホスト鍵検証が乗ります。リモートMac 越境では SYN〜初回プロンプトの壁時計を測り、CI サブネットと自宅など GeoDNS が割れる経路の両方から叩きます。
- 握手予算:
time ssh … exitの p50/p95 を週次で保持し、同一 PoP ペアで p95 が前週比 +40% を超えたら調査開始。 - 鍵パス:自動化は
-o BatchMode=yes。PoP ごとにホスト鍵を固定し信頼フラップを避ける。 - MTU/VPN:スプリットトンネル内でも繰り返し。暗号化経路だけブラックホールなら MSS クランプを検討。
# 壁時計 SSH(読み取り専用ユーザー想定)
for i in $(seq 1 30); do
/usr/bin/time -p ssh -o BatchMode=yes -o ConnectTimeout=12 \
-o StrictHostKeyChecking=accept-new user@HOST 'exit' 2>&1 | awk '/^real/{print $2}'
sleep 1
done | sort -n | awk 'NR==1{min=$1} {sum+=$1; a[NR]=$1} END{
print "samples:", NR, "min:", min, "max:", a[NR], "p95:", a[int(0.95*NR)] }'
# 変更窓ごとに一度だけ詳細(ログは鍵伏せが前提)
ssh -vvv -o BatchMode=yes user@HOST true 2>&1 | tee /tmp/ssh-trace.txt
アーティファクト回源 p95 検収チェックリスト
レイヤ取得や LFS は並列 HTTPS・Range・CDN リダイレクトで DNS 負荷の形が変わります。サインオフは CDN 画面だけでなくビルダ NIC の E2E p95を基準にしてください。
| 検査項 | 合格基線(ステージング→本番) | プローブの考え方 |
|---|---|---|
| DNS が PoP と一致 | 定常時、ジョブの 99% 以上が区内ターゲットに解決 | ジョブ開始時に getent 等の解結果をログし許可リストと突合 |
| TLS とリダイレクト深さ | HTTP リダイレクトは 2 回以内。区内 TLS セットアップ p95 ≤ 250 ms | 上記 curl -w に -L --max-redirs を併用 |
| スループット下限 | 500 MB フィクスチャの取得 p95 がチーム基線の 1.25 倍以内 | パイプラインのフィクスチャジョブでタイムスタンプを可観測化 |
| Range/再開 | 中断後に全再取得にならない | 転送途中 kill を注入し、アクセスログの byte range を確認 |
| フェイルオーバ演習 | TTL 周期後、95% 以上のジョブが手動 /etc/hosts なしで副系へ |
加重レコード反転+合成カナリアリージョン |
| IPv6 パリティ | AAAA 経路の p95 が A のみより 20% 以上悪化しない | 対になる curl で -4/-6 を強制 |
免責:数値は検収目安で SLA ではありません。関連:Halo式入口、OpenClaw×MagicDNS。
表と TTL 方針が揃ったらミラーと同都市圏にビルダを寄せ、DNS とバイナリ局所性を同じ変更単位で動かします。vpshalo の月次 リモートMac で PoP を選びます。