sshのVMオンデマンド起動

sshのVMオンデマンド起動とは?

VMを常時稼働させず、必要になったときだけ自動で起動する仕組み

どうやって実現している?

ユーザーがSSH接続を試みると、常に稼働しているsystemdのsocket activation機能を利用したプロキシサーバーがリクエストを受け取り、そのリクエストを受けたsystemdが、SSHサーバーを起動するためのトリガーを動作させ、必要なVMが起動します。

起動したVM上でSSHサービスが開始され、プロキシサーバーを介してユーザーとのSSHセッションが確立されます。

https://github.com/hitto-hub/ssh-proxy-systemctl-learn

Terraformなどを導入すればよさそう

使用するサービスのプロトコルに制限を受ける

sshの場合、、、→vmの立ち上げに時間がかかっている場合、waiting…などの文字を表示できない。sshセッション確立前に任意のメッセージを表示させる機能が実装されてないため(sshプロトコルの種類が多いのであるかもしれない、、)待ち時間に文字を出したければただforwardするだけじゃなくて、vmが起動するまでclientと中継サーバを事前にセッション確立して、、、などの工夫が必要である。未検証

何か作ってみた

https://github.com/hitto-hub/minecraft-socket-autoboot

minecraftサーバーのオンデマンド起動

起動ボタンを押さなくても、接続を試みるとminecraft.jarが実行され、サーバーに入れるようにする

ワールド作成処理が入るとクライアント側のタイムアウトで一回接続が切れてしまうが、それ以外なら常にサーバーが起動しているかのような動作として確認された。

← Go home