LoginSignup
3
3

More than 5 years have passed since last update.

Docker Composeを使ってIBM Containerをスケールアウトさせる

Last updated at Posted at 2016-06-02

はじめに

前回、「Docker Composeを使ってIBM Containerを管理する」という記事を書きましたが、docker-composeコマンドのscaleオプションを使って、コンテナの数を動的に変える、というところまでは試すことができませんでした。この記事では、docker-composeを使って、Bluemix上のIBM Containerの数を動的に変えることができるか、検証してみます。

前回のおさらい

前回は、以下のような二つのコンテナをdocker-composeを使ってIBM Containerに展開できることを確認しました。

$ docker-compose ps
        Name           Command   State               Ports
----------------------------------------------------------------------
dockercompose_redis_1             Up
dockercompose_web_1               Up      169.44.119.192:5000->5000/tcp

docker-composeを使ってIBM Containerをスケールアウトさせる

では、早速本題に入りましょう。docker-compose scaleコマンドを使い、webコンテナの数を増やしてみました。

$ docker-compose -f docker-compose-bluemix.yml scale web=3
WARNING: The "web" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating and starting 2 ...
Creating and starting 3 ...
Creating and starting 3 ... done
$ docker-compose ps
        Name           Command   State               Ports
----------------------------------------------------------------------
dockercompose_redis_1             Up
dockercompose_web_1               Up      169.44.119.192:5000->5000/tcp
dockercompose_web_2               Up      172.31.0.162:5000->5000/tcp
dockercompose_web_3               Up      172.31.0.163:5000->5000/tcp

なにやらWARNINGが出ましたが、webコンテナの数が3つに増えたようです!それぞれのコンテナのIPアドレスを、同じホストのポート番号5000番を割り当てたのがまずかったようですね。ですが、docker-compose psコマンドの出力を見てみると、ホストマシンに勝手新しいIPアドレス(172.31.0.162と172.31.0.163)が割り当てられ、それぞれを新しいコンテナに割り当て、事なきを得ているようです。Bluemixのダッシュボードのほうも確認してみると。。。

bluemix_dashboard_scale.png

3つのコンテナが稼動していることが確認できました!さて、せっかくなので新しくできたコンテナのほうにも外部IPアドレスを割り当ててアクセスしてみましょう。なお、私のBluemixの無料アカウントでは外部IPは2つまでしか取得できないので、2つのコンテナに外部IPアドレスを割り当てます。cf ic ip requestで新しいIPアドレスを取得し、そのアドレスを増えたコンテナに割り当てます。

$ cf ic ip bind 169.44.113.228 dockercompose_web_2
OK
The IP address was bound successfully.
$ docker-compose ps
        Name           Command   State               Ports
----------------------------------------------------------------------
dockercompose_redis_1             Up
dockercompose_web_1               Up      169.44.119.192:5000->5000/tcp
dockercompose_web_2               Up      169.44.113.228:5000->5000/tcp
dockercompose_web_3               Up      172.31.0.171:5000->5000/tcp

それぞれのIPアドレスに対して、ブラウザでアクセスしてみると。。。
browser_2.png
browser_3.png
それぞれのwebアプリケーションが同じredisデータベースコンテナから同じエントリを取得して、それぞれのwebアプリケーションが値をインクリメントしているように見えますね!

まとめ

Docker Composeを使って、IBM Containerをスケールアウトできることがわかりました。しかし、このままでは、手動で外部IPアドレスを取得し、そのIPを新しく起動したコンテナに割り振る必要があり、いまいちな感じですね。次回はこの辺の手順を自動化する方法について検証したいと思います。

3
3
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
3
3