VPSで運用していたサーバーを整理した

個人で複数台のVPSを運用していたが、いろいろなものがサポート切れしてOSの入れ直しが必要になったのを機にVPSの見直しをすることになった。元々3台のVPSを運用していたが、1台減らした。

VPNサーバー

まずは、VPNサーバー。さくらのVPSを使っている。

一人暮らしをはじめてというもの、家に無料インターネットがついているタイプの物件を渡り歩いたこともあり、自宅ネットワークにアクセスする環境のためにVPNサーバーを立てている。 SoftEther VPNを使って構築しており、VPSと自宅をつなぐ拠点間リンクと、iPhone/Android/PCからの接続をするクライアント接続の2つがあり、VPNサーバーにつなぐと自宅ネットワークまで繋がるようになっている。 iPhone/AndroidからのアクセスもSoftEther VPNL2TPを使っていたが、最近ではAndroidでIKEv2しか新規設定できなくなっているため、ここはStrongswanを使った。

雑多外向けサービスサーバー

次に、様々なサービスの入っていたサーバー。これはGoogle Computing EngineのAlways Free枠のe2-microインスタンスで動いていた。

GiraffeをはじめとしたWebサーバーのホスティングに使っていたが、編集系の必要なサービスはほとんど残存しておらず、それであればということでCloud RunやFirebase Cloud Functionsに載せ替えることにした。

どうしようもなかったのはIRCの接続を維持していたIRC proxy。Webのインターフェイスで使われていたが、常時接続が必要となるためこれはVPSに入れるしかなかった。

メール中継サーバー

最後に、メール中継サーバー。これで作ったやつ。最終的にはLightsailでできていた。

iseebi.hatenablog.com

IPv6化のあおりを受け、IPv6専用インスタンスになっていたのは以前書いたとおり。

iseebi.hatenablog.com

ただ、まだIPv6オンリーはいろいろ障害があった

iseebi.hatenablog.com

これ以外にも、モバイル回線のOCNモバイルがIPv4しか扱えなくて、出先でメールアドレスに届いた確認コードを受信する操作ができないという実害が出ていた。新規申し込み終了しているというのもあり使えるようになる見込みはなさそうで、結局VPNサーバーでフォワードプロキシしてIPv4アドレスをつけていた。

最終的に

メール中継サーバーとIRC proxyをGCEに集約して、Lightsailを解約することにした。

入れ替えはこういう作業になった。

  • VPNサーバーの停止によるOS入れ替え、VPN再構築。
    • 1日の停止作業。
  • GCEに乗っていたWebホスティング系のサービスをCloud RunやFirebase Cloud Functionsに移行。
    • 構築後のDNS差し替えほぼ停止なしで完了。
  • IRC proxyをdocker-composeに押し込んで、Lightsailに一時的に移動。
    • 動作確認とnickの差し替えで何度か瞬断。
  • GCEのインスタンスを作り直し、IRC proxyとメール受信システムを構築、Lightsailから向け先変更。
    • s3qlはやめることにしてホスト側にデータを置くことにした。どうせすぐGmailに取り込まれるし、その気になれば再送できるので。
    • ほぼ無停止でいけたけどdovecotコンテナのマウントポイントを勘違いしていたせいで数分瞬断。
  • Lightsailを削除
    • 一応スナップショットはとっといた

Lightsailが意図せず費用がかかってしまっていて、なんか癪だなーというのをずっと思っていたので、すっきりした。メール中継のシステムにネイティブのIPv4アドレスが取り戻されたのも喜ばしい。 主要な移行はDockerやdocker-composeを多用した。よくわからない!みたいなことを言ってた過去の自分に教えてあげたい。

ちょっと失敗したなーって思ったのは、GCEのインスタンスをContainer-Optimized OSにすれば良かったなというところ。これは今後の課題。あと、AWSの利用も減らしてGoogle Cloudに寄せていこうと思ってる。Route53もやめたいなって思ってる。でもSESだけはどうしようもない…

http以外のサービスもサーバーレスになればいいのになあみたいに思う。TLSを終端しつつ、inetdみたいな感じで接続あったときだけ起動してくれるコンテナサービスがあればいいのに。