🐥

マイクラ部で面倒なことをちょっと楽にした話

2022/03/04に公開

マイクラ部の始動

弊社ではマイクラ部という、マインクラフトで遊ぶ部活が2022年の1月に発足しました。
ここで面倒だったことを解決した話を投稿します。

面倒だったこと

EC2の起動・停止が面倒

EC2の起動・停止は
コンソールにログイン → MFAの入力→ ログイン後スイッチロール → EC2の起動・停止
の手順でやっていたので面倒。

EC2の管理が1人になってしまっている

sshキーの管理が面倒。
誰に渡した渡さないなどで考えるのが面倒。

セッションが切れるとサーバが落ちる

sshログイン後にサーバファイルを起動していたのでsshセッションが断たれるとサーバが落ちる。
親セッションが落ちるので子セッションも落ちるは当然なのですが頻発していたので面倒。
また、それ以外にも落ちることがあったので対応必須。

対応策

EC2の起動・停止が面倒

これについてはSlackから起動できるように設定しました。
Slackのスラッシュコマンドを作成し、Lambdaを起動できるようにしました。
構成図はこんな感じです。

ここで少し解説をするとSlackのスラッシュコマンドはその仕様上3秒でレスポンスを返さないと失敗してしまうのでec2の立ち上げを行い、IPを取得するとなると3秒を超えてしまうのでLambda1からLambda2を非同期で実行しその制約をクリアしています。

実際に使用してみた結果が下の画像になります。

スラッシュコマンドで /minecraft_server start or endを入力することで起動します。
Lambda1で文字列「少々お待ちください」を返し、Lambda2でIPを通知しています。
IPの通知に関してはSlackのwebhookを使用しています。

EC2の管理が1人になってしまっている

これはサーバ内に入れる人が限られてしまっていることが原因なのでSSMを使用してサーバにログインできるようにしました。
やり方については下記記事にして記述しています。

https://zenn.dev/person_link/articles/866feb1322d870

セッションが切れるとサーバが落ちる

こちらについてはsystemctlを使って対応しました。
最初はcronを使用してサーバ再起動時にマイクラを立ち上げればいいかと思っていましたが、セッションが切れる以外にもマイクラが落ちることがあったのでsystemctlで自動起動をすれば解決するのでsystemctlを設定しました。
書いたソースは下記です。

Restart = alwasが落ちたら自動で起動するオプションになります。
あとはこのファイルを読み込むためにリロード

systemctl demon-reload

OSが起動した時に起動するように

systemctl enable minecraft_server

をして終わりです。

最後に

色々触れて楽しかったです。勉強にもなりました。

宣伝

パーソンリンクではエンジニアを募集しています!
https://www.person-link.co.jp/recruit

Discussion