なかなか長続きしないものですね。。。
まあだらだら日記を書くよりもできるだけ有益な情報のみを書く方針なので
ネタがなかったってだけなんですがね・・・・
さて、今回は自宅サーバーをDockerを使って再構築した話を複数回にわたって書いて行こうと思います。
(後ろの方はDocker要素ほとんどないかと思いますがw)
1.Dockerで再構築しようと思った訳
Linuxのお試し用にVMを作ろうと思ったらメモリ残量がほとんどないことに気が付きまして・・・
稼働中のVMを調べてみたところ各VMに設定しているメモリ量の合計が搭載メモリ量カツカツな状態でしたw
にもかかわらずVM内部では確保したメモリは半分も使用されていないという状況・・・
Dockerを使えば確保するメモリ量を減らし、なおかつサーバーリソースを有効に利用できるのでは?
と思い立ったのがきっかけです。
2.サーバー構成を考えてみる
現在実運用中のサーバーは以下の図のようになっています。
- ゲートウェイサーバー
- インターネットからの入口に置かれ内部サーバーとの中継役を担うサーバー
- Webサイト高速化のためにキャッシュ役も担う
- アプリケーションサーバー
- 実際のアプリ運用を担当するサーバー
- ブログやCMSなど様々なアプリが同居している
- Gitlab運用サーバー
- GitlabやJenkinsなど開発サポート用のツール類を運用するサーバー
- 内部利用が主のため基本的に外部に解放しない
- メールサーバー
- プライベートメールアドレスなどの運用を行うサーバー
- アプリ運用中の通知メールなどを外部に送信する際に使用される
これをDockerを使って以下のように2台のVM内に集約してしまおうと画策してみました。
- ゲートウェイサーバー、アプリケーションサーバー、データベースサーバー、メールサーバーを集約
- 1アプリを1コンテナとして、蓄積データは個別のデータコンテナに保存することで永続化
が!しかし!?
結局想定通りにはいかず・・・・
以下の図のようになりました。
- メールサーバー、VPNサーバーはDocker化できず仕方なく通常のVMのまま運用・・・
- データコンテナはアプリによって保存がうまくいかないためデータボリューム方式に妥協・・
- 図では分かりにくいですがGitlabは永続化すらできていませんw
3.想定通りにいかなかった理由
自身のDockerへの理解不足などもあったためですが、個別にうまくいかなかった分けをつらづらと・・・・
Linuxユーザーを作成して、各自の個人ディレクトリにメールを保存するという現状運用がDockerにミスマッチでした。
特に複数のユーザーアカウントをどのように永続化するか課題となり移行を断念。
おそらくですが複数ユーザーで運用する場合はユーザーアカウントはLDAPなどで一元管理して、
バーチャルメールボックス方式での運用となるのではないでしょうか?
構成自体はfrosquin/softetherを使って簡単に構築できたのですが、以下の2つの問題が発生。
1.DockerホストのVMにsshでログインできない
2.DockerホストのOSが64bitだったため「Softether VPN 経由でVMware vSphere Clientが開かない」の内容が再発してしまった
そのためリモート管理に支障を期すのでDocker化は断念し、
Dockerホストの環境を汚さないように別建てでVPN専用サーバーを建てるにしました。
PostgreSQLやWebサーバー等が1コンテナにまとまった物を使ったためコンテナ内で複数のデーモンが読み書きを行っており
「DockerのVolumeのアクセス権限の問題について」の問題がネックとなって永続化は断念しました。
データの保全はGitlabのバックアップ機能を使って定期的にバックアップ作成し、Dockerホストにコピーして対応しています。
(今回、私は横着して1つにまとまった物を使用しましたが
Gitlabを運用する場合はデータベースサーバーやWebサーバーなどを個別に建てるのが正解だと思います)
4.最後に
一応移行自体は終わって1.5GBほどののメモリを確保できましたが、
今後のことを考えるとVPNサーバーはともかく、
Gitlabはバックアップでは心もとないためデータの永続化は必須ですし、
NASや各アプリのアカウント管理も地味に面倒なので、LDAP等で一元管理するようにして
メールサーバーの再構築ぐらいは行いたいですね。。。
では、実際の構築作業等は別記事で!!