うまいぼうぶろぐ

linuxとhttpdとperlのメモ

FileStore - google cloud platform のNFS Server


Google Cloudのfull-managed NFS Server。AWS でいうEFSですね。

NFSに頼りすぎる異なるサーバ間で接続しすぎると密結合になってしまって、複雑になりかねないところもあるし、App Engine とかのいわゆるサーバレスな構成にできればこういうところも考慮しなくて良くかもしれないけど。

そうは入っても従来のいわゆる単なるインスタンスを冗長構成で使いたい場合もあって、web/app インスタンス間でお手軽に同期が取れるのはやはり便利。


aws はtokyo リージョンにそのうち来る〜と発表があってから随分待った気がする。(数年?)
awsで出たからgcpも来るかなとは思ってたけど予想以上に早く来た。
(とはいえまだbetaだけど)


gcloud shell 叩いてみたらalpha で出来た。

準備

Cloud Filestore API を有効にする
(事前に作成しなくてもgcloud コマンド実行時にも有効にできる)

作成

↑のgcloud のsample の通りでは動かなかったので
gcloud betaをgcloud alphaに、--volumeを--file-share に変更して実行
あと、asia-northeast1 では作成できなかったのでus-centralでやってみた。

ちなみに作業(mount)しているvmはasia-northeast1-c
gcpawsと違って、projectの同じnetwork内であれば(共有VPCを使えば他のprojectも)
(レイテンシはもちろんあるけど) regionを超えてアクセスできる。

reserved-ip-range は指定しなかったらnetworkで使われてないsubnet から適当に作成される?

$ gcloud alpha filestore instances create testnfs-server \
  --location=asia-northeast1-c --network=name="default",reserved-ip-range="10.0.0.0/29" \
  --file-share=capacity=1TB,name=vol1 --tier=STANDARD
ERROR: (gcloud.alpha.filestore.instances.create) PERMISSION_DENIED: Location asia-northeast1-c is not found or access is unauthorized.
$ gcloud alpha filestore instances create testnfs-server \
  --location=asia-northeast1-c --network=name="default",reserved-ip-range="10.0.0.0/29" \
  --file-share=capacity=1TB,name=vol1 --tier=STANDARD

確認

icmpはfilterされてるのかな。
pingが通らなかったのでおや?と思ったけどtcp portは応答する。

$ gcloud alpha filestore instances list
INSTANCE_NAME   LOCATION       TIER      CAPACITY_GB  VOLUME_NAME  IP_ADDRESS  STATE  CREATE_TIME
testnfs-server  us-central1-c  STANDARD  1024         vol1         10.0.0.2    READY  2018-06-27T07:06:28
$ ping -c 3 10.0.0.2 
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.

--- 10.0.0.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2049ms
$ telnet 10.0.0.2 2049
Trying 10.0.0.2...
Connected to 10.0.0.2.
Escape character is '^]'.
^]

telnet> quit
Connection closed.

mount

$ sudo apt-get install -y nfs-common
$ sudo mount -t nfs 10.0.0.2:/vol1 /mnt 
$ df -t nfs
Filesystem      1K-blocks   Used  Available Use% Mounted on
10.0.0.2:/vol1 1055841280 180224 1001957376   1% /mnt