fbpx

CL LAB

HOME > CL LAB > Docker > [和訳]Swarmユーザーのための5つのヒント #docker

[和訳]Swarmユーザーのための5つのヒント #docker

 ★ 7

本稿は Five Tips for the Advanced Swarm User (2016/3/10) の和訳です。

Jerome Petazzoniが出演しているオーケストレーション・チュートリアルのビデオ(orchestration tutorial video featuring Jérôme Petazzoni)に加え、Swarm clusterの作成や使用により慣れ親しんでいただけるよういくつかのヒントを紹介したいと思います。

ヒント1:ラベルのチートシート
各Docker Engineにはdisk=ssdのような任意の文字列ラベルをひとつ以上付けることができます。そうしておくことで、docker run コマンドの制限(constraint)に同じラベルを指定すると、どこにコンテナをスケジュールするかを制御できます。

ラベルや制限の利用方法を思い出すためのチートシートが必要な場合は、以下のパターンをご利用ください。
あるEngineの実行例:

docker daemon --label disk=ssd

他のEngineでの実行例:

docker daemon --label disk=magnetic

そして、このようにコンテナを稼動してください:

docker run --label 'com.docker.swarm.constraints=["disk==ssd"]' -d busybox /bin/sh

ヒント2:ノードで障害が発生した場合に再スケジュールする方法(Swarm1.1からの新しい機能)
Swarm 1.1リリースでは何らかの理由で実行していたノードが失敗した場合、正常なノードにコンテナをスケジュールすることができる機能を提供しました。この機能は現在実験用です。次の手順でこの機能をお試しください。
以下のようにSwarmマネージャを実行してください:

docker run swarm --experimental manage [その他の引数]


docker run --label
'com.docker.swarm.reschedule-policies=["on-node-failure"]'
-d busybox /bin/sh

ヒント3:コンテナIDとSwarm IDを楽しみましょう
コンテナが新しいノードに再スケジュールされると、持っているコンテナIDは変更されます。しかし各コンテナにはcom.docker.swarm.idというラベルがあります。これは、新しいノードにリスケジュールされても変わりません。コンテナに名前を付けておけば、名前でも同じです。再スケジュールされた際にも名前は変わりません。
例:

docker run alpine sh
ddsa097dsa8f.... #

このコンテナが再スケジュールされた場合、コンテナID(ddsa097dsa8f...)は変更されますがSwarm IDは変わりません。

ヒント4:ハートビートの間隔
Docker Engineディスカバリー・ハートビートはクラスターにあるリモートホストのDocker daemonが正常に機能しているか確認するために、オーバーレイネットワークモジュールが使用するメカニズムです。ハートビートの間隔を秒単位で設定できます。デフォルトの間隔は20秒(とても短時間のハートビート)ですが大きいクラスターにはより長い数値を使用することを推奨します。

--cluster-store-opt discovery.heartbeat=1000

オーバーレイネットワークはホストディスカバリーに依存します。Docker engineのホストディスカバリーはキーバリュー(KV)ストアに依存します。ホスト数が多い場合、より短いハートビート間隔であれば、KVストアが異なっていても性能に影響を与えます。KVストアのストレスを軽減するために、v1.10からdaemonにホストディスカバリの監視やイベントの設定フラグを追加しました。各各自でスケールの必要性に応じて、この値を上げたり下げたりできます。フラグの追加情報はこちらからご確認ください(get more information on this flag here)。

ヒント5:サブネットオプションの指定、多くのIPを使えるようにします
同じオーバーレイネットワーク内で多数のコンテナを稼動する予定がある場合、オーバーレイネットワークに十分な数のIPアドレスを確保する必要があります。
ネットワークを作成する場合`--subnet`オプションをご利用ください。

docker network create d overlay --subnet=20.0.0.0/8

こちらの設定をすると、ネットワークは170万ものIPアドレスを確保します。65,000個に制限したい場合は--subnet=20.0.0.0/16こちらをご利用ください。
メモ:例として20.0.0.0サブネットを使用しています。利用環境のIPアドレスと衝突しないものをご利用ください。

 

Dockerに関してさらに学ぶには

・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.10リリースノートを読んでみましょう。
Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
DockerCon 2016に登録してみましょう。
DockerCon EU 2015のビデオを見てみましょう。
Dockerコミュニティへの貢献を始めましょう。

CL LAB Mail Magazine

CL LABの情報を逃さずチェックしよう!

メールアドレスを登録すると記事が投稿されるとメールで通知します。

メールアドレス: 登録

※登録後メールに記載しているリンクをクリックして認証してください。

Related post

[無料ウェビナー] GitLab_CI/CDハンズオン_2023111