多くのチームは、Cloud SQL のプライベート IP は VPC の内部からしか機能しないと考えています。その信念が生き残るのは、失敗がデータベースの問題に見えるからです。Google は Cloud VPN や Cloud Interconnect で接続したネットワークからのアクセスを文書化しています。それらのネットワークに必要なのは特別なデータベース機能ではなく、中途半端に放置しやすい二つのルート交換です。トンネルは上がり、コンピュートインスタンスは応答し、データベース接続はタイムアウトします。これは人を間違ったコンソールへ送る典型的な組み合わせです。

誤解:プライベート IP は VPC に対してプライベートという意味

プライベート サービス アクセスは、あなたのネットワークと Google が所有するプロデューサー ネットワークの間の VPC ピアリングです。サービスに割り当てられた範囲はプロデューサー側にあり、インスタンスのアドレスはその中にあります。このピアリングがあるため、プロジェクト内のデータベースは、あなたの明示的なサブネットに含まれていなくても、VPC が経路を持つアドレス上に置けます。

ピアリングである以上、ピアリングの振る舞いも持ちます。カスタムルートが自動的に越えない部分もその一つです。

誤解:動くトンネルはデータベースのルートも運ぶ

二つの範囲がこの旅を生き延びなければなりません。一つ目はクライアント接頭辞です。オンプレミスのネットワークは具体的な接頭辞で Cloud Router に知られている必要があります。既定ルートでは、プロデューサー ネットワークが戻り道に必要とするインポートを供給できないからです。二つ目は割り当てられたサービス範囲で、外部側がこれを学習しないと、データベース宛てのパケットに行き先がありません。これは異なる境界で維持される別々のルートであり、片方を直すともう片方は壊れたままです。

Google 側では、該当するピアリング接続で Export custom routes を有効にし、割り当てられたサービス範囲をトンネル用の Cloud Router の広告ルートに追加することを意味します。

すでにある広告は残してください。サービス範囲の追加で、同じ BGP セッションが他のトラフィック用に運んでいる VPC ルートを外してはいけません。広告セットを丸ごと差し替えるのは、一つ目の障害の後ろに隠れた二つ目の障害です。外部機器の有効なルートも確認してください。VPN ゲートウェイや別のサブネットに届くことは、転送できることしか証明しません。

誤解:Cloud SQL Auth Proxy がネットワークを解決する

The Auth Proxy は、アプリケーションとインスタンスの間にサポートされた認証と暗号化された転送を提供します。ルートは作りません。プライベート ネットワークへの経路がないホストで起動したプロキシは、直接接続とまったく同じように失敗し、そのログは理由についてあまり役に立ちません。プロキシを接続のあるホストへ移すと、経路のどの区間が機能すべきかが変わり、それは回避策ではなく実際の設計判断です。

それがしないのは、切断されたノート PC をプライベート専用インスタンスに到達させることです。

誤解:Private Service Connect も同じ規則に従う

Private Service Connect は自分のサブネット内のエンドポイントと、自分で制御する DNS の取り決めを使うため、そこへのルートは自分が所有するアドレスへの通常のルートです。ピアリングのエクスポート設定はその設計には適用されず、ピアリングの変更を PSC の展開にコピーしても、到達性は増えずリスクだけが増えます。

どちらもプライベート アドレスを与えますが、似ているのはそこまでです。

正しい順序で経路をテストする

外部クライアントから、まずデータベースの TCP エンドポイントをテストします。TCP ハンドシェイクが完了すれば、ルーティング、ファイアウォール、リスナーがすべて揃っています。次のテストは許可された認証済みの操作です。その時点での認証拒否は実は良い知らせで、データベースのリスナーが応答したことを証明します。ICMP のタイムアウトはデータベース アクセスについてほとんど何も語りません。多くの経路が TCP を問題なく転送しながら ICMP を捨てるからです。

クライアント範囲が RFC 1918 の外にある場合は、設計がサポートされていないと結論づける前に、追加のルート エクスポートとネットワーク承認の要件を確認してください。

接続とともに四つの対象を記録します。外部接頭辞、割り当てられたサービス範囲、関係するピアリング接続、広告を行うルーターです。この四つがプライベート経路の全体を説明し、Cloud SQL は常にプロキシが必要か、VPN ではまったく届かないという俗説を置き換えます。

関連記事