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
gcpはawsと違って、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