LoginSignup
8
6

More than 5 years have passed since last update.

Dockerコンテナで1ホストからスケールアップできる構成を作る

Last updated at Posted at 2016-08-14

Dockerを使って1ホストでスモールスタートできる構成を作る。
作りたい構成は普通のWebアプリがホストできるような、DBとWebサーバーが分離していて、ロードバランサがある構成だ。

全体の構成

1ホストだけubuntuで適当なクラウドサービスにセットアップする。
Dockerのマルチホストネットワークを利用する構成にする。docker-machineはややこしいので使わない。

参考:
Get started with multi-host networking
Build a Swarm cluster for production

コマンドはdocker-composeを利用してコマンド一発で構築できるようにしたい。
ちなみに、docker-xxが多くて混乱するが、このスライドがとても参考になった。

セットアップ手順

事前準備

ホストとなるマシンはでSSHと必要なポート443,80以外は閉じておく。クラスタを構築するホストはローカルで接続されている方がセキュリティ的に無難だし、セットアップが楽だ。
また、ユーザはdockerグループに属してないと、dockerコマンドが打てない。

usermod -a -G docker ubuntu

クラスタ構築

と言いつつ全部1ホストで実施している。

マネージャの構築

まず、docker-swarmでクラスタを構成する。swarmは複数あるdockerのホストをまとめて管理するためのツールであり、docker-composeをクラスタ構成で使うには必要そうだ。

設定同期のためのconsulコンテナを立ち上げる。

docker run -d --name consul -p "8500:8500" -h "consul" progrium/consul -server -bootstrap

swarmのmanagerを立ち上げる。これがdockerのクライアント(dockerコマンド)からの命令を受け付けて、consulに格納された情報を元にクラスタのメンバに命令を転送する。

docker run -d --name swarm-manager -p 4000:4000 swarm manage -H :4000 --advertise 192.168.1.10:4000 consul://192.168.1.10:8500

エージェントの設定

エージェント上で起動するdockerがswarmからコントロール可能なようにTCPでも待ち受けるようにする。エージェントとはmanagerによって操られる側のノードのことだ。
/etc/default/dockerに1行追加してデーモンを再起動する。ここで--cluster-advertise--cluster-storeをつけておかないと、ネットワーク作成時に"address space GlobalDefault not found"でエラーになる。

DOCKER_OPTS="-H tcp://0.0.0.0:2375 --cluster-store=consul://192.168.1.10:8500 --cluster-advertise=192.168.1.10:2375"
sudo systemctl restart docker.service

エージェントを起動する。

docker run --name swarm-agent -d swarm join --addr=192.168.1.10:2375 consul://192.168.1.10:8500/

ネットワークの作成

overlayドライバでネットワークを作成する。これは特にクラスタなど関係なくやっても良いみたい。

docker network create --driver overlay --subnet=10.0.9.0/24 my-net

おためし起動

コンテナをクラスタで起動できる。

docker -H :4000 run --net=my-net -it busybox /bin/sh
docker -H :4000 ps
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6