1
1

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 3 years have passed since last update.

GCPでNAT構築と、CloudSQL+mroonga on GCEスレイブしようとして断念

Posted at

公式ドキュメントに書いてあるけどね。

NAT構築

やること

Cloud NAT使わずに自前でNATインスタンスを構築

なんで

開発環境で、可用性がそんなにいらない。落ちたら立て直せばいいし。
通信量もそんなに無いし…ってことで貧乏構成でいこうじゃあないか。
というわけでf1-micro/centos7。

成功の手引き

一応

VPCやサブネットの作成は割愛。ドキュメントにも載ってるし、かなり前に自分でも書いた。
ドキュメントはCUIで進めてるけど自分はコンソールでやりました。
インスタンス名はここではyasui-natとでもしましょう。

注意点は、インスタンス作成時にオプションのネットワークタブにあるIP転送チェックボックス、これ忘れたら後からいじれないんじゃないかって気がするくらいです。ネットワークタグはpubとでもしましょう。

ドキュメントにはno-ipってタグがすごい胸張った感じで出てくるので「このタグそのものに何か意味があるのか?」と最初怯みましたが、別に何だって動きます。ここでは適当にprivとかにしましょうか。
多分↑のドキュメント、VPCがデフォルトルールなのが前提なのか、GCP内部NWからNATへの通信を許可するためのルール設定が割愛されてます。pubprivからのパケットは基本全部許可するようなファイアウォール設定を忘れずにしときましょう。勿論、利用ポートが完全に絞れているなら全部じゃなくても問題なし。

あとは書いてある通り

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 確認
iptables -v -L -t nat

で転送設定を書き、ネットワーキングのルート設定から、送信IPを0.0.0.0/0、タグはprivでネクストホップはyasui-natを指定します。

これでまあいけるかと思います。
設定の保存に関しては、

yum -y install iptables-services
/usr/libexec/iptables/iptables.init save

でいけるって見ましたが、自分の場合この設定入れたあとインスタンス止めてイメージ化、イメージから起こしなおしたらiptableの設定は無くなってました。かなしみ。

CloudSQL+mroonga on GCE

結論、ムリです

・CloudSQLにはプラグイン突っ込めない
・ならばGCEでスレーブ作ってスレーブ側でmroonga入れれば良いのでは?

・mroongaはトランザクションが効かないエンジンである
・GTID_MODEはトランザクション効かないエンジンに機能しないし、マスターとスレーブで異エンジン・同一テーブルの場合ONにしたらアカン
・CloudSQLはGTID_MODEを触れない上にデフォルトONである(ちなみにAWS RDSはパラメータグループでOFFに出来る)
・ゴフッ

検索に使うタネとelasticsearchとかに突っ込んでキーだけ取得、キーでDBからデータ本体持ってくる仕組みに作り変えるか、それともmysql on GCEにするか…で悩んだけど後者にすることにしたよもう。
DBだけはAWS使うっていうウルトラCも一瞬頭によぎったけど転送量高そうだし…

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?