• 検索結果がありません。

vethA  

eth0  

vethB  

© 2015 Internet Initiative Japan Inc.   35 

通常の Docker のネットワーク 

ホストをまたいだコンテナ間通信は困難 

(

ポートが固定されていれば

EXPOSE

でできるが

Hadoop

と相性が悪い

)

 

IPマスカレード 

コンテナA  コンテナB 

ホスト1 

docker0  

NIC   eth0  

vethA  

eth0   vethB  

IPマスカレード 

コンテナC  コンテナD 

ホスト2 

docker0  

NIC   eth0  

vethA  

eth0  

vethB  

© 2015 Internet Initiative Japan Inc.   36 

解決策 

• 

– pipework – weave

– flannel

– libnetwork overlay driver – ...

• 

または独自に頑張る

こちらを採用 

© 2015 Internet Initiative Japan Inc.   37 

本サービスのネットワーク 

•  docker

のネットワーク設定は使用せ ず

– ("NetworkDisabled": true)

•  

代わりに

slave

がコンテナ起動時に ネットワーク設定をする 

© 2015 Internet Initiative Japan Inc.   38 

本サービスのネットワーク 

IP

マスカレード  通常の

docker

ネットワーク 

container network

namespace

 

本サービスの ネットワーク 

host network

namespace

  ホスト 

IPマスカレード 

コンテナA  コンテナB 

ホスト 

docker0  

NIC   eth0  

vethA  

eth0   vethB  

IP

マスカレード  ホスト 

コンテナA  コンテナB 

NIC   eth0   vethA  

eth0   vethB  

host-veth  

ホスト 

host-geth  

bridge0  

© 2015 Internet Initiative Japan Inc.   39 

論理的にはこんな感じ 

eth0  

コンテナA 

eth0  

コンテナB 

host-geth  

ホスト1 

eth0  

コンテナC 

eth0  

コンテナD 

host-geth  

ホスト2 

• 

コンテナはホストと同じネットワークに直接つながる

• 

コンテナの

IP

アドレスは

master

が決定し

slave

が設定する

© 2015 Internet Initiative Japan Inc.   40 

ネットワークの隔離 

• 

クラスタ間は

iptables

で隔離

– 

コンテナは

CAP_NET_RAW

を禁止

その他 

© 2015 Internet Initiative Japan Inc.   42 

Docker イメージ 

•  Docker HUB

のイメージは使用せず

– 

同じ

repository

:tag

名でも内容が変 わっていることがある

–  (docker 1.6

〜は

Content Addressable Image Identifiers

により一意に指定可

)

•  

独自に

OS

イメージ作成

– febootstrap

CentOS 6

ベースで作成

•  

その

OS

イメージから

JDK, Hive,

Hadoop

入りなどを

Dockerfile

で生成

© 2015 Internet Initiative Japan Inc.   43 

ログの管理 

• 

コンテナ内の各種ログは、コンテナ 内の特定ディレクトリに一時保存

•  

ホスト上

(

コンテナ外

)

fluentd

で外に 飛ばす

• 

本サービスのストレージ部分

(

管理用

)

に保存 

(

今なら

Docker

log driver

を使えば良いと思う

)

 

© 2015 Internet Initiative Japan Inc.   44 

監視 

• 

ホストが障害を起こしたら

doma

はコ ンテナ割り当て対象から除外

– 

障害コンテナを別ホストに自動移動し たり再起動はしない

•  

コンテナのアプリケーションレイヤ の監視は

analysis API

が行っている 

© 2015 Internet Initiative Japan Inc.   45 

コンテナのモニタリング 

•  slave

に、コンテナ単位のメトリクス を返す機能追加 

•   cgroup

の統計情報と、コンテナ内の


 /proc/net/dev

等からメトリクスを得 る

(

今なら

cAdvisor

を使えば良いと思う

)

 

46

CPU Accounting

Memory

→ 

Network traffic

 

コンテナのモニタリング 

•  CentOS 6

を使用中

– 

だが

Docker 1.8

以降、

CentOS 6

は対象

– Red Hat

は、

Docker

RHEL 6

で動かす ことを推奨していない

• 

コンテナ用

OS

– CoreOS, Project Atomic, Snappy, RancherOS

 

© 2015 Internet Initiative Japan Inc.   47 

ホスト OS について 

© 2015 Internet Initiative Japan Inc.   48 

まとめ 

•  Hadoop/Hive

をマルチテナントで動か すために

Docker

を採用

•   Docker

は多数のコンテナを扱うには 課題がある

– 

解決のためいくつかのツール類を開発

– 

今ならもっと楽な別のやり方があるは

ず 

ドキュメント内 Dockerの商用サービスでの利用事例紹介 (ページ 34-49)

関連したドキュメント