GCPのお勉強がてらMinecraftサーバを建てた

どこ

ここです。

hogehoge.asterism.xyz 閉鎖済み

ホワイトリスト制にしてあるので、私と遊んでやってもいいよって方はmastodonかtwitterで連絡いただければ。

ゲーム構成

  • バニラ 1.14.4
  • 営業時間:夕方5時から午前4時(始めたばかりの為あまり守れておらず、多分起動してたりしてなかったりします)

下読んでいただければ分かるように元々はMOD入れるつもり満々でしたが、MinecraftのMODサーバは基本的にサーバにもクライアントにもMODが必要だということを知りやめました。クライアント選ぶのは面倒……。

参考

クイックスタート、チュートリアル、インタラクティブなチュートリアルを使用して Google Cloud を使ってみる  |  Documentation
プロダクトのクイックスタート、チュートリアル、インタラクティブなチュートリアルのいずれかを試して、Google Cloud を使ってみましょう。
Cloud Scheduler + Cloud Pub/Sub + Cloud Functions でGCEのインスタンスの自動起動or停止させてみた - Qiita
経緯これまでGAEのcronでGCEのインスタンスの自動起動、停止させてたけど、Cloud Scheduler出たからそちらで自動起動、停止の管理できないかと思ってやってみた。システム構成すご…

経緯

  1. AWSもAzureもちょこっと触って来たけどGCPはまだやったこと無いしお勉強したい
  2. ここ数ヶ月遊んでるほぼ唯一のソシャゲドルフロのMinecraft MODがあるのを知る
  3. ローカルでしばらく遊ぶ
  4. mastodonのTLで知り合いの鯖缶さんが建ててたminecraft鯖閉鎖のお知らせを見てマルチ鯖に興味を持つ
  5. GCPでやってみるかー

前にマルチ鯖立てようとしたこともあったのですが、Javaだしメモリがっつり喰うし自宅鯖でもなきゃ高いよなーとか思ってその時は建てるのを諦めました。

ただ、知り合いの話を聞くにどうやら

  • バニラならn1-standardでもわりと余裕
  • 使ってない時間はインスタンス止めておくとかできれば安い

とのこと。 また、mastodon on kubernetesを調べていたときにGCPにもAWSで言うところのスポットインスタンスがある事を知っていたのでこれらを組み合わせればかなり財布にも優しいのでは?と考え構築を決行。

サーバ構成

例によって構成図などは無いため文字で。

  • GCE n1-standard-2 (vCPU *2, RAM 7.5GB, プリエンプティブ, 固定グローバルIP)
  • GCE 追加ディスク SSD 48GB
  • バックアップ用Cloud Storageバケット
  • 起動および停止用Cloud Functions
  • 定期的なCloud Function実行用のPub/Sub, Cloud Scheduler

基本的にはGCPの公式ドキュメントの通りVMインスタンスの用意とMinecraftサーバの構築を行い、2つ目の記事の先駆者さんによるCloud Functionのコードを借りて実装しています。

Cloud Schedulerでは午前4時になったら停止、午後5時以降は毎時起動タスクを流すって感じになってます。

プリエンプティブインスタンスなのでいつ止まるか分からないので、営業時間中は毎時起動操作を行っています。

その内毎時じゃなくて5分に1回とかにするかもしれませんが、それは人が増えたらかな。(増える予定もあんまり無いというのはある)

費用

  • VM $0.0265/1h 11h/1day 30days = $8.745
  • Disc $0.221/1GB/1month * 48GB = $10.608
  • その他:無料枠内

だいたい月$20、あれ思ってたより高いな……?

と思ったので今SSDからHDDに変えました。

  • Disc $0.052/1GB/1month * 48GB = $2.496

合計$12/月くらいですね。許容範囲。

といっても試用ってことで$300を一年間通してGoogle様からもらっている為実質無料ではあるんですが、上の通りいつKubeに手を出すか分からないので一応節約。