小規模なコンテナ運用環境のベストプラクティス
概要
小規模だけどそこそこイケてるDockerコンテナの運用環境を作りたいと考えています。
ざっくりのイメ―ジはEKSほどはいらないけどECSくらいの環境を自宅で作りたいような感じです。
一旦構築してみたんですが、インフラの知見が皆無で、妥協ではなく知らないが故の愚かな構成を避けたい観点から、違和感ある部分や、もっと良い構成等無いかアドバイスをいただきたいなと思いました。
背景
身内(多くても十名程度)に向けた簡易なサービスを自宅サーバで運用しています。
実機は現在PC2台、HDD3台の構成で、予算の都合から劇的に増やせる余裕はありません。
これまでPC1台で直接Dockerを動かして運用していましたが、リソースが不足気味なので、2台に拡張しつつこの機にもうすこしリッチな環境にしようと思いました。
以下がおおよその願望です。
- サービスが停止すること自体は特に問題ではないが、データの遺失などは出来る限り避けたい
- 確実さもある程度取りたいが、資源が不足するほどリッチにはしなくていい
- 出先からだとシェルに入っていろいろするのがキツいので、極力WebGUIで完結できるものがいい
- ビルドやデプロイ等に使う環境が1つ欲しい
自分で試したこと
PC2台にproxmoxを入れてVMを4つ立てました。
1つはTrueNasで、HDD3台を実機からパススルー接続し、TrueNas内でRaidを組みnfsで内部に公開しています。
1つはビルドやデプロイ用のUbuntu機にしました。
残り2つでDockerSwermを組み、保存先が必要なコンテナは、TrueNasで共有したディレクトリをボリュームでマウントして使用しています。
構成の意図としては、
サービスが停止すること自体は特に問題ではないが、データの遺失などは出来る限り避けたい
アプリケーションで使用するVolumeはすべてRaidが組まれたストレージ上に保存されるため、Raidの範疇で障害体制がある認識です
確実さもある程度取りたいが、資源が不足するほどリッチにはしなくていい
これにより、OpenStackやK8Sほどの環境は必要ないと考え、DockerSwarmにしました
出先からだとシェルに入っていろいろするのがキツいので、極力WebGUIで完結できるものがいい
TrueNas、Proxmox、Portainer、NginxProxiManagerを使用して、おおよそ必要な諸々はGUIで完結できるようにしました
ビルドやデプロイ等に使う環境が1つ欲しい
このため、Proxmoxを導入することにし、であれば新規にNAS用の機材を買い足したくないのでNASもVM上に稼働させています
VMがすべて死んでもディスク自体に問題なければ、ダウンタイムは発生するが復旧は可能な構成のはずなので、VMのレプリケーションは行っていません。
特に聞きたいこと
- DockerSwermがECSに相当するように感じたのだが、見解は合ってるか疑問
- ディスク故障の通知とディスク交換がGUIからできそうという観点でTrueNasにしたが、他にいい案は無いか(OpenMediaVaultは復旧がめんどくさそうだったので避けた)
- Raid5くらいが容量と耐性のちょうどいいラインと考えたが、Cephとかの方が良かったりするのか
- proxmox機が全滅しても、ディスクが活きてれば復旧できる想定なので、リソースの効率を考えるとバックアップ等に取られる領域が少なく済んで最適かと思っているが、ここ無駄じゃね?的な部分があったりしないか
- こここうするだけでぐっと楽だよ的なアドバイスがあったら聞きたい
ありがとうございます。