テクニカルプア

備忘録と若干の補足

sngsk.info について(nspawn 活用の記録)

90日以上更新されていないブログに表示されてしまうアレが出てしまったので書く。

https://sngsk.info というサイトがあり、わたしはこいつを運営している。
このサイトの下でいちおうコンテンツとよべるやつは下記のものがある:

これらは下記のように2台のインスタンスにまたがり、リバースプロキシとしての Nginx と、それにぶら下がる nspawn コンテナで構成されている:

メモリ 512MB のインスタンス
  • sngsk.info および mastodon.sngsk.info のリバースプロキシ(Nginx)
  • sngsk.info のコンテンツをもつ nspawn
メモリ 2GB のインスタンス
  • mastodon な nspawn へ HTTP リクエストを転送するための Nginx
  • mastodon.sngsk.info のコンテンツをもつ nspawn

図はこんな感じ

       |
       |  HTTP request
       |
  -----------
  |  Nginx  | *
  -----------
       |
       |                                  -----------
       |----------------------------------|  Nginx  | **
       |                                  -----------
       |                                       |
       | sngsk.info                            | mastodon.sngsk.info
       |                                       |
----------------                     -------------------------
|   nspawn     | *                   |        nspawn         | **
| (sngsk.info) |                     | (mastodon.sngsk.info) |
----------------                     -------------------------

*  : RAM 512MB instance
** : RAM 2GB instance

以前まではメモリ 512MB のインスタンスしか無かったのだけれど、Mastodon を使ってみたら思いのほかリソースを食ったので急遽追加した。
設定とかは全部 https://github.com/nosada/sngsk.info にある。nspawn のコンテンツも可能な限り追加している。

nspawn を使っていると QEMU 上でうごく VM をお世話するみたいな感じで適度にコンテナ自体のお世話をする必要があるなあと感じる。
Docker みたいにコンテナをバカスカおっ立てては潰すみたいな使い方も無論可能ではあるが、それをやるには道具のお膳立てがまったくない。
Docker みたいに nspawn を使ってみたいという気持ちもあるけどそれなら Docker でいいじゃんとなってしまうので、難しい。

ちなみに上記のコンテナおよびホストは全部 Arch Linux で構成されている。
Arch Linux 以外での nspawn の使い方をいまだによくわかっていない……。