Cloud Foundry v2上でminecraftを動かしてアクセスする方法を調査
今回はCloud Foundry 情報発信強化週間のネタに何か面白いのがないかと思っていた所
そういえば以前buildpack調査している際にheroku向けのbuildpackでminecraftを対象にしたものがあったな?
という記憶を頼りに、PaaSでminecraftを動かす方法としてどんな手法が取られているかを確認してみることにしました。
Cloud Foundry 向けの様々なアプローチ
Cloud Foundryでminecraftを動かそうという人類の夢は
既に他の方がv1の頃に以下の記事で挑戦されているのですが
【小ネタ】Cloud FoundryでMinecraft Serverを動かす!?
Cloud Foundry v2になって
herokuと同じbuildpackの仕組みが用意されているので
heroku向けに作られているminecraftのbuildpackであれば可能性が高いと推測し調査を行い、今回短い時間で調べた限りでは2つのアプローチが存在していました。
タイプ1
Cloud Foundryのbuildpackとして準備
タイプ2
Cloud Foundryのアプリケーションとしてpushしbuildpackはjavaのものを使う
今回はそれぞれのタイプと手法についてどのようなものかを記載し
実際に動かすことが可能かについても後日可能な限り加筆していきたいと思います
アプローチ例
jkutner/heroku-buildpack-minecraft
タイプ1
特長
- 作成者はherokuの人らしい
- eula.txtだけを最初に準備『eula=true』という内容を書いておく
- NGROKというサービスを使ってコンテナの内部のminecraftサーバへの接続を実現
- データの永続化はS3を利用
- 永続化について調べてみるとs3cmdをbuildpackのコンパイルフェーズでaptで入れ、アプリ起動時に60秒間隔でwhileを使ってs3とsyncさせている様子
jacobwgillespie/heroku-minecraft
タイプ1
特長
- herokuのmulti-buildpack(複数のbuildpack利用する用)を使っている
- データの永続化はS3を利用
- websocketを通す為にnodeアプリのhmwtcというアプリを利用
タイプ2
JamesClonk/cf-minecraft-app
特長
- データの永続化を対応させる為にS3に対応させている
- eula.txtは内包済み
- cfと名前の最初に入っているので期待大でしたがTODO/Problemsにweb socket通らないので解決が必要というような内容が書かれていた
- 以前Qiitaに投稿した『Cloudn PaaS v2(CloudFoundry)の Service(PostgreSQL & MySQL)に接続』のchiselを応用すれば動く可能性あり?
まとめ
今回の調査結果からも特長として現れたように
Cloud Foundryやheroku上でminecraftを動かすには以下の部分がポイントとなります
- Cloud Foundryやherokuではアプリのコンテナがアプリ停止などで消える為,永続化についてはS3等の手法を使う必要がある為、minecraftでも同様に対処が必要
- Cloud Foundryおよびheroku上のアプリに通常アクセスする際はhttpやhttpsおよびwebsocket経由になるため何らかのproxy手段が必要