Post on 16-Apr-2017
Docker活用パターンの整理・どう組み合わせるのが正解?!
Ver1.1 中井悦司Twitter @enakai00
オープンクラウド・キャンパス
Docker活用パターンの整理Docker/OpenStack/Ansible/Kubernetes/OpenShift/etc…
どう組み合わせるのが正解?!
Open Cloud Campus2
Docker活用パターンの整理・どう組み合わせるのが正解?!
自己紹介
中井悦司(なかいえつじ)– Twitter @enakai00
日々の仕事– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.企業システムでオープンソースの活用を希望されるお客様を全力でご支援させていただきます。
昔とった杵柄– 素粒子論の研究(超弦理論とか)– 予備校講師(物理担当)– インフラエンジニア(Unix/Linux専門)
好評発売中!
Open Cloud Campus3
Docker活用パターンの整理・どう組み合わせるのが正解?!
最近の趣味
http://enakai00.hatenablog.com/entry/2016/02/29/121321
Docker活用パターンの整理・どう組み合わせるのが正解?!
Dockerの役割をもう一度確認しよう!
Open Cloud Campus5
Docker活用パターンの整理・どう組み合わせるのが正解?!
Dockerが提供する基本機能
Dockerfile
① Dockerイメージを自動作成
OSイメージ
アプリケーションライブラリー
アプリケーションフレームワーク
イメージの作成手順を記載
Dockerイメージ
OS上にインストール可能なものはすべてイメージ化可能
② Dockerイメージを保存・公開
③ Dockerサーバーに イメージを配布・実行
Docker活用パターンの整理・どう組み合わせるのが正解?!
IaaS基盤へのアプリケーションデプロイにDockerを使ってみよう!
Open Cloud Campus7
Docker活用パターンの整理・どう組み合わせるのが正解?!
OpenStackによる自動化(オーケストレーション)手法
Dockerが無かった時代は・・・– 仮想マシン、ストレージ、ネットワークなどのインフラは、OpenStackで自動構成– ゲストOS上のアプリはChef/Ansible/Puppetなどの構成管理ツールで自動構成
ゲストOSとアプリの管理が別れているため「Immutable」な運用が困難!– ゲストOSのテンプレートはOpenStack側で管理– 仮想マシン起動時に動的にアプリの導入・設定を実施
「第14章 Dockerを利用したアプリケーション展開」より引用
ゲストOSの変更に起因するアプリ導入の失敗が発生
Open Cloud Campus8
Docker活用パターンの整理・どう組み合わせるのが正解?!
OpenStackとDockerの組み合わせ手法
Dockerを用いた運用だと・・・– OpenStackは、「インフラ+DockerホストOS」の提供に専念– アプリの実行環境は、Dockerイメージで作成・管理・デプロイ
インフラとアプリの管理を分離することで「Immutable」な運用が容易に!– ゲストOSのテンプレートはDockerの稼働環境を提供– 事前作成済みのDockerイメージを配布してアプリを起動
アプリの導入・管理をOpenStackから分離可能
Open Cloud Campus9
Docker活用パターンの整理・どう組み合わせるのが正解?!
「1VM - 1コンテナ」方式でDockerを使ってみる
仮想マシン上のアプリケーションをコンテナイメージ化することで、アプリケーションのデプロイを安全/簡単にします。
– 「1仮想マシンに1アプリケーション」という配置はあえて変更しないことで、運用方法やアプリケーションのデザインへの影響を最小限に留めます。
–外部からアプリケーションに接続するユーザー/外部システムは、アプリケーションがコンテナ化されていることを意識する必要がありません。
OpenStack/仮想化基盤
仮想マシン(ゲストOS)
アプリA
・・・
・・・
これまでの環境 アプリケーションのコンテナイメージ化
OpenStack/仮想化基盤
仮想マシン(Dockerホスト)
アプリA(コンテナ
イメージ)
仮想マシン(Dockerホスト)
アプリB(コンテナ
イメージ)
・・・
・・・
仮想マシン(ゲストOS)
アプリB
Open Cloud Campus10
Docker活用パターンの整理・どう組み合わせるのが正解?!
Ansibleによる複数インスタンス環境のオーケストレーション
永続データ領域
OS領域
コンテナ(MySQL)
/data
コンテナイメージ
Dockerデーモン
/var/lib/mysql
フローティングIP
OS領域
コンテナ(node.jsアプリ)
コンテナイメージ
Dockerデーモン
フローティングIPフローティングIPにアクセス
フローティングIPにアクセス
接続先DBのIP/ポートは環境変数で参照
Ansibleを利用すると、OpenStack APIによる仮想インフラの構成とDockerによるアプリケーション配布のワークフローをまとめて自動化も可能に
アプリケーション利用者
Docker活用パターンの整理・どう組み合わせるのが正解?!
Docker活用パターンの整理・どう組み合わせるのが正解?!
11
サーバーの境界を意識しない世界を見てみよう!
Open Cloud Campus12
Docker活用パターンの整理・どう組み合わせるのが正解?!
Kubernetes:複数ホストのDockerを管理する仕組みを提供
http://jp.techcrunch.com/2014/07/11/20140710google-microsoft-ibm-and-others-collaborate-to-make-managing-docker-containers-easier/
Open Cloud Campus13
Docker活用パターンの整理・どう組み合わせるのが正解?!
サーバーの境界を意識しないアプリケーションデプロイ
コンテナの配置先を自動的に振り分ける仕組みを用いて、複数ホストを「1つのコンピューティングリソース」として活用します。
アプリケーションを機能単位に分割してコンテナ化することで、さらなるメリットが得られます。
–必要な機能を負荷に応じてオートスケールします。– 機能単位でコンテナを入れ替えることにより、稼働中のアプリケーションの動的な機能
変更が可能になります。
Dockerホスト Dockerホスト Dockerホスト ・・・
複数ホストを束ねて「1つのコンピュータ」として活用
マイクロサービス化アプリケーション
Open Cloud Campus14
Docker活用パターンの整理・どう組み合わせるのが正解?!
今後の方向性コンテナ化とマイクロサービス化は、アプリケーションの特性に応じた併用が可
能だと考えます。
–複数サービスの共通機能(ある程度固定化した機能)は、コンテナ化でSaaS的に提供– サービス特有の機能(頻繁な変更が求められる部分)は、マイクロサービス化して
OpenShiftで開発・実行– いずれの場合もアプリケーションとインフラ環境の分離性を高めることで、クラウド間
での環境移行は圧倒的に容易
OpenStack
仮想マシン ・・・
・・・
アプリケーションのコンテナ化で本番デプロイを安全・迅速に
OpenStack
ベアメタルサーバー
ベアメタルサーバー ・・・
アプリケーションのマイクロサービス化でオートスケール、動的機能拡張を実現
仮想マシン
仮想マシン
Dockerによるコンテナ化OpenShiftによるマイクロサービス化
Docker活用パターンの整理・どう組み合わせるのが正解?!
Docker活用パターンの整理・どう組み合わせるのが正解?!
15
おまけ
Open Cloud Campus16
Docker活用パターンの整理・どう組み合わせるのが正解?!
(おまけ)OpenShiftがGCPで使えるようになります!
http://googlecloudplatform-japan.blogspot.jp/2016/01/red-hat-openshift-dedicated-google.html
Open Cloud Campus17
Docker活用パターンの整理・どう組み合わせるのが正解?!
OpenShiftにおける役割分担
アプリ開発者
開発環境構成テンプレート
テンプレート管理者公式RHELイメージ
Dockerfile
テスト担当者
開発環境イメージ
テスト環境構成テンプレート
開発中アプリイメージ
ソースコード
動作確認
コード開発
テスト用デプロイ環境
動作確認
本番環境構成テンプレート
開発用デプロイ環境本番用デプロイ環境
開発済みアプリイメージ
テスト済みアプリイメージ
リリース担当者
http://www.slideshare.net/enakai/open-shift-v3
Docker活用パターンの整理・どう組み合わせるのが正解?!
中井悦司Twitter @enakai00
オープンクラウド・キャンパス
Docker&OpenShiftでマイクロサービスアーキテクチャーを実現!