徒然なるままに プログラミングメモや日々の生活などつれづれとつづっていくblog

2016年10月5日

CentOS 7.2でDocker環境構築

Filed under: Docker,ESXi,Linux,OSS,PC — ranpei @ 9:22 PM

内部ツール系サーバーは CentOS 7.2を使って構築していきます。

外部と別ディストリビューションを使うのに特に理由はありません。

単に私がいろいろなディストリビューションを触りたいというだけですw

 

 

1.Dockerをインストール

// Dockerをインストール
#yum -y install docker
// サービスを起動
#systemctl start docker
#systemctl enable docker
// 動作確認
#docker run hello-world

2.Docker-Composeのインストール(最新版はここを参照)

こちらにもDocker-Composeをインストールしておきます。

#curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > docker-compose
#chmod +x docker-compose
#sudo mv ./docker-compose /usr/local/bin/docker-compose

あとselinuxが有効な状態だとマウントしたvolumeに書き込むことができないので
selinuxを無効化しておきます。

#vi /etc/selinux/config
SELINUX=enforcing
 ↓
SELINUX=disabled

再起動すれば設定が反映されます。
こちらもすんなりいきましたね。

Ubuntu 16.04でDocker環境構築

Filed under: Docker,ESXi,Linux,OSS,PC — ranpei @ 9:22 PM

外部公開ツール系サーバーはUbuntu Server 16.04 LTSで作成し、

複数コンテナの管理をやりやすくするためにDocker-Composeをインストールします。

※ Ubuntuのインストールは省略

1.Dockerのインストール (ここを参照)

// 最新パッケージをインストール
$sudo curl -fsSL https://get.docker.com/ | sh
// 一般ユーザに"docker"グループの追加
$sudo gpasswd -a {ユーザー名} docker
// ログアウト
$exit

再度ログインして以降の手順を実施

// Dockerサービスを起動
$sudo service docker start
// 動作確認
$docker run hello-world

2.Docker-Composeのインストール(最新版はここを参照)

$curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > docker-compose
$chmod +x docker-compose
$sudo mv ./docker-compose /usr/local/bin/docker-compose

自宅サーバーをDockerで再構築する

Filed under: Docker,ESXi,GitLab,Linux,OSS,PC — ranpei @ 3:08 AM

なかなか長続きしないものですね。。。

まあだらだら日記を書くよりもできるだけ有益な情報のみを書く方針なので

ネタがなかったってだけなんですがね・・・・

 

さて、今回は自宅サーバーをDockerを使って再構築した話を複数回にわたって書いて行こうと思います。

(後ろの方はDocker要素ほとんどないかと思いますがw)

 

1.Dockerで再構築しようと思った訳

Linuxのお試し用にVMを作ろうと思ったらメモリ残量がほとんどないことに気が付きまして・・・

サーバーリソース量

稼働中のVMを調べてみたところ各VMに設定しているメモリ量の合計が搭載メモリ量カツカツな状態でしたw

にもかかわらずVM内部では確保したメモリは半分も使用されていないという状況・・・

各VMのメモリ使用量

Dockerを使えば確保するメモリ量を減らし、なおかつサーバーリソースを有効に利用できるのでは?

と思い立ったのがきっかけです。

 

2.サーバー構成を考えてみる

現在実運用中のサーバーは以下の図のようになっています。

現行サーバー構成図

  • ゲートウェイサーバー
    • インターネットからの入口に置かれ内部サーバーとの中継役を担うサーバー
    • Webサイト高速化のためにキャッシュ役も担う
  • アプリケーションサーバー
    • 実際のアプリ運用を担当するサーバー
    • ブログやCMSなど様々なアプリが同居している
  • データベースサーバー
    • 文字通りデータベースサーバー
  • Gitlab運用サーバー
    • GitlabやJenkinsなど開発サポート用のツール類を運用するサーバー
    • 内部利用が主のため基本的に外部に解放しない
  • メールサーバー
    • プライベートメールアドレスなどの運用を行うサーバー
    • アプリ運用中の通知メールなどを外部に送信する際に使用される

 

これをDockerを使って以下のように2台のVM内に集約してしまおうと画策してみました。

想定サーバー構成図

  1. ゲートウェイサーバー、アプリケーションサーバー、データベースサーバー、メールサーバーを集約
  2. 1アプリを1コンテナとして、蓄積データは個別のデータコンテナに保存することで永続化

が!しかし!?

結局想定通りにはいかず・・・・

以下の図のようになりました。

最終サーバー構成図

  1. メールサーバー、VPNサーバーはDocker化できず仕方なく通常のVMのまま運用・・・
  2. データコンテナはアプリによって保存がうまくいかないためデータボリューム方式に妥協・・
  3. 図では分かりにくいですがGitlabは永続化すらできていませんw

 

3.想定通りにいかなかった理由

自身のDockerへの理解不足などもあったためですが、個別にうまくいかなかった分けをつらづらと・・・・

  • メールサーバー

Linuxユーザーを作成して、各自の個人ディレクトリにメールを保存するという現状運用がDockerにミスマッチでした。

特に複数のユーザーアカウントをどのように永続化するか課題となり移行を断念。

おそらくですが複数ユーザーで運用する場合はユーザーアカウントはLDAPなどで一元管理して、

バーチャルメールボックス方式での運用となるのではないでしょうか?

  • VPNサーバー

構成自体はfrosquin/softetherを使って簡単に構築できたのですが、以下の2つの問題が発生。

1.DockerホストのVMにsshでログインできない

2.DockerホストのOSが64bitだったため「Softether VPN 経由でVMware vSphere Clientが開かない」の内容が再発してしまった

そのためリモート管理に支障を期すのでDocker化は断念し、

Dockerホストの環境を汚さないように別建てでVPN専用サーバーを建てるにしました。

  • Gitlab

PostgreSQLやWebサーバー等が1コンテナにまとまった物を使ったためコンテナ内で複数のデーモンが読み書きを行っており

DockerのVolumeのアクセス権限の問題について」の問題がネックとなって永続化は断念しました。

データの保全はGitlabのバックアップ機能を使って定期的にバックアップ作成し、Dockerホストにコピーして対応しています。

(今回、私は横着して1つにまとまった物を使用しましたが

Gitlabを運用する場合はデータベースサーバーやWebサーバーなどを個別に建てるのが正解だと思います)

 

4.最後に

一応移行自体は終わって1.5GBほどののメモリを確保できましたが、

今後のことを考えるとVPNサーバーはともかく、

Gitlabはバックアップでは心もとないためデータの永続化は必須ですし、

NASや各アプリのアカウント管理も地味に面倒なので、LDAP等で一元管理するようにして

メールサーバーの再構築ぐらいは行いたいですね。。。

では、実際の構築作業等は別記事で!!

« Newer Posts

Powered by WordPress