GCPのお勉強がてらMinecraftサーバを建てた
Overview
どこ
ここです。
mc.asterism.xyz
ホワイトリスト制にしてあるので、私と遊んでやってもいいよって方はmastodonかtwitterで連絡いただければ。
ゲーム構成
- バニラ 1.14.4
- 営業時間:夕方5時から午前4時(始めたばかりの為あまり守れておらず、多分起動してたりしてなかったりします)
下読んでいただければ分かるように元々はMOD入れるつもり満々でしたが、MinecraftのMODサーバは基本的にサーバにもクライアントにもMODが必要だということを知りやめました。クライアント選ぶのは面倒……。
参考
https://cloud.google.com/solutions/gaming/minecraft-server?hl=ja
https://qiita.com/uu4k/items/4075acff6ef6a7ed9384
経緯
- AWSもAzureもちょこっと触って来たけどGCPはまだやったこと無いしお勉強したい
- ここ数ヶ月遊んでるほぼ唯一のソシャゲドルフロのMinecraft MODがあるのを知る
- ローカルでしばらく遊ぶ
- mastodonのTLで知り合いの鯖缶さんが建ててたminecraft鯖閉鎖のお知らせを見てマルチ鯖に興味を持つ
- 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に手を出すか分からないので一応節約。