公式ドキュメントに書いてあるけどね。
NAT構築
やること
Cloud NAT使わずに自前でNATインスタンスを構築
なんで
開発環境で、可用性がそんなにいらない。落ちたら立て直せばいいし。
通信量もそんなに無いし…ってことで貧乏構成でいこうじゃあないか。
というわけでf1-micro/centos7。
成功の手引き
一応
VPCやサブネットの作成は割愛。ドキュメントにも載ってるし、かなり前に自分でも書いた。
ドキュメントはCUIで進めてるけど自分はコンソールでやりました。
インスタンス名はここではyasui-nat
とでもしましょう。
注意点は、インスタンス作成時にオプションのネットワークタブにあるIP転送チェックボックス、これ忘れたら後からいじれないんじゃないかって気がするくらいです。ネットワークタグはpub
とでもしましょう。
ドキュメントにはno-ip
ってタグがすごい胸張った感じで出てくるので「このタグそのものに何か意味があるのか?」と最初怯みましたが、別に何だって動きます。ここでは適当にpriv
とかにしましょうか。
多分↑のドキュメント、VPCがデフォルトルールなのが前提なのか、GCP内部NWからNATへの通信を許可するためのルール設定が割愛されてます。pub
はpriv
からのパケットは基本全部許可するようなファイアウォール設定を忘れずにしときましょう。勿論、利用ポートが完全に絞れているなら全部じゃなくても問題なし。
あとは書いてある通り
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も一瞬頭によぎったけど転送量高そうだし…