14Room

みんな泣きながらオトナになったんだ。

GCEではinternal IPが任意に設定できない代わりに、内部DNSにホスト名が自動で設定される。

長いsubjectのとおり、GCEではインスタンスのinternal IPを任意に設定することは出来ません(EC2では出来ます)。internal IPはインスタンスを起動すると自動で割り振られます。

f:id:naked123:20150918160210p:plain

上の図のようにExternal IPは「static IP address」を選ぶことで同じIPを使い回す事ができますが、internal IPは最初に設定する事も途中で変える事もできません。

しかし、それだとAPPサーバから参照するDBのIP addressが変わるたびにAPPサーバの設定変更の必要が生じてしまい面倒です。

そこで、GCEではインスタンス起動時に設定した「Name」が自動的に内部DNSに登録されるのでIP addressではなく名前でアクセスすることをお勧めしてるみたいです。

$ nslookup master-db
Server:        169.254.169.254
Address:    169.254.169.254#53

Non-authoritative answer:
Name:    master-db.c.api-project-123123123123.naked.co.jp.internal
Address: 10.10.0.5

上記のように実際にインスタンスに入って確かめてみると、Nameで設定した名前が登録されています。 各インスタンスの/etc/resolv.confにもinternal関係の設定が最初から入っています。

分かってしまえば「なーんだ」って感じですが、自分はinternal IPを変更する方法を探して数時間右往左往してしまいました・・・・。