5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 12

DataStreamとオンプレDBを閉域網接続する

Posted at

DataStreamを使ってCloud InterconnectやVPN経由で接続されてオンプレ環境のDBかたデータを読み出す場合、以下のドキュメントで説明されているように、Reverse Proxyで通信を中継させる必要があります。
Compute Engineを使ってVMを設置して、その中にiptablesで通信を中継させる例が載っています。
しかし、VMを適切に冗長構成することを考えると、この構成はやや面倒です。

そのため、以下のような構成で接続することで、VMなしで閉域網接続を実現してみます。
DataStreamはGoogle Managed VPCに配置されており、オンプレ環境と直接繋がってはいません。
そのため、中間にあるVPCが「いい感じに」経路情報を伝搬させる必要があるので、その設定を行っていきます。

名称未設定ファイル.png

まずは、図の右側のExchange Custom Routesから設定していきます。

resource "google_datastream_private_connection" "datastream_private_connection" {
  display_name          = "datastream-private-connection"
  location              = "us-central1" # 各自の環境に合わせる
  private_connection_id = "datastream-private-connection"

  vpc_peering_config {
    vpc    = "DataStreamと接続する(図中で真ん中の)VPCを指定"
    subnet = "<DataStreamに割り当てるCIDR>"
  }
}

この設定を適用すると、DataStreamのPrivate Connectionが作成され、VPCとの間でVPC Peering接続がなされます。

VPC Peeringの管理画面で該当のPeeringを選択して、Export custom routesをONになるように設定を変更します。

スクリーンショット_2023-12-12_8_53_17.png

スクリーンショット_2023-12-12_8_55_11.png

この設定によって、オンプレ環境のCIDR情報がDataStreamの動いているGoogle Managed VPCに伝わります。

実はまだこの設定だけではVPCがcustom routesを一方的に送っているだけであり、Google Managed VPCがそのcustom routesを受け取るかどうかはわかりません。
そのため、本来ならばGoogle Managed VPC側のPeering設定でImport custom routesをONにする必要があります。
実際にCustomer ManagedなVPC同士の接続では明示的なImportは必要です。
しかし、Google Managed VPCでは作成時にデフォルトでONになっているような挙動をしているので、ImportをONする必要はありません。

次に、図の左側のCustom Route Advertisementも設定します。
Dedicated Interconnectに紐づいているCloud RouterのBGP設定を変更します。
Cloud Routerにはカスタム経路広告機能があるので、この機能を使ってVPC外のCIDRをオンプレ側に広告します。

resource "google_compute_router" "router_main" {
  name    = "router_main"
  network = "VPCを指定"
  region = local.interconnect_region
  
  bgp {
    asn               = "GCPのASNを指定"
    advertise_mode    = "CUSTOM"
    advertised_groups = ["ALL_SUBNETS"]

    advertised_ip_ranges {
      range = "DataStreamのCIDRを指定"
    }
  }
}

これによって、オンプレ・Google Managed VPCの双方にルート情報が渡されることになり、IP到達性が達成できました。
あとはFirewallの開放やデータベースのユーザー作成などを行えば、DataStreamからDBのCDC情報を読み取ることができます。

なお、この記事を書くにあたって、以下の記事を大いに参考にさせていただきました。この場を借りてお礼申し上げます。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?