GCP の Interconnect や CloudVPN に GCS のトラフィックを乗せる方法
GCP の Interconnect や CloudVPN に GCS のトラフィックを乗せる方法を調べた時にいい感じにまとまったページがなかったのでメモしておきます。
概要
まずなんでこれをやりたいかというと、まず初めに 転送コスト
です。コストがかかる方向は制限されますが、結構ばかにならないです。
例えば Partner Interconnect であれば 1/2 から 1/3 程度のコストに抑えられます(※ 記事執筆時点の情報。ポート利用料など別課金あり)
あとはレイテンシやセキュリティなど理由は様々あると思います。
実現するにあたり、方法は何個かあるかと思います。
一番綺麗なのは 「*.googleapis.com が restricted.googleapis.com への CNAME として解決されるようにして、Interconnect や CloudVPN 上にトラフィックがいくようにルーティングをいじる」だと思います。実は試してはないのでうまくいくのかはわかってないです。
オンプレミス ホスト用の限定公開の Google アクセスの構成 | VPC | Google Cloud
2番目に、踏み台用意して GCS のトラフィックを強引に中を通す方法です。 イメージとしては以下の図のようになります。図中の②を通すイメージです。
割と簡単ですね。検証も楽なので試してみます。
踏み台利用パターン
flunetd の plugin など利用していると困るのですが、今回はターゲットを gsutil を利用している場合とします。 gsutil は proxy を利用することが可能なので割と簡単に実現可能です。もうこの時点でハイハイってなっている人多いので書く必要があるのかというツッコミもありそうですが。
以下を見るのがわかりやすいです。
Boto を使用する場合 | Cloud Storage | Google Cloud
該当箇所は以下の通り
$ cat .boto | egrep "^proxy" proxy = localhost proxy_port = 3128
まずは proxy をセットした後に gsutil で疎通ができないことを確認。適当に snmpd_strace_output.txt
という名前のテキストを置いておきました。
$ gsutil cp gs://<your bucket>/snmpd_strace_output.txt . INFO:root:Retrying request, attempt #4... INFO 0227 20:49:30.945226 retry_util.py] Retrying request, attempt #4...
プロキシサーバとして、今回は squid を立てます。構築が面倒でしたので、こちらを参考にさせて頂きコンテナで構築します。
$ docker run -p 3128:3128 -ti docker.io/salrashid123/squidproxy /apps/squid/sbin/squid -NsY -f /apps/squid.conf.forward
プロキシサーバは以下のように確認可能です。
$ curl -v -x localhost:3128 https://www.yahoo.com/
はい、できるようになりました。
$ gsutil cp gs://<your bucket>/snmpd_strace_output.txt . Copying gs://<your bucket>/snmpd_strace_output.txt... / [1 files][ 1.6 KiB/ 1.6 KiB] Operation completed over 1 objects/1.6 KiB.
最終的には localhost ではなく別のインスタンスからプロキシ経由でアクセスするので GCP 側の firewwall 開ける必要あります。
proxy が EIP 持つ必要なかれば private Google Access にしちゃいましょう。簡単です。 普通にONにするだけ、EIP取ってもプロキシ経由で疎通できることを確認しておきます。
$ gsutil cp gs://<your bucket>/snmpd_strace_output.txt . Copying gs://<your bucket>/snmpd_strace_output.txt... / [1 files][ 1.6 KiB/ 1.6 KiB] Operation completed over 1 objects/1.6 KiB.
限定公開の Google アクセスの構成 | VPC | Google Cloud
その他
課題となる点は冗長性かなと思います。 特定のサブネットのアドレスでプロキシと疎通取れれば良いので、Kubernetes なり別のレイヤーで担保するようにするのが良さそうです。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
Google Cloud Platform エンタープライズ設計ガイド
- 作者: 遠山陽介,深津康行,中庄谷哲平,小島仁志
- 出版社/メーカー: 日経BP
- 発売日: 2018/05/17
- メディア: 単行本
- この商品を含むブログ (1件) を見る
プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで
- 作者: 阿佐志保,中井悦司
- 出版社/メーカー: 翔泳社
- 発売日: 2017/06/02
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
クラウドエンジニア養成読本[クラウドを武器にするための知識&実例満載! ] (Software Design plusシリーズ)
- 作者: 佐々木拓郎,西谷圭介,福井厚,寳野雄太,金子亨,廣瀬一海,菊池修治,松井基勝,田部井一成,吉田裕貴,石川修,竹林信哉
- 出版社/メーカー: 技術評論社
- 発売日: 2018/03/14
- メディア: 単行本
- この商品を含むブログを見る