BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

サービスのロードバランシングオプションが改善されたDocker 1.12.0

| 作者: Hrishikesh Barua フォローする 18 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年10月12日. 推定読書時間: 2 分 |

原文(投稿日:2016/08/22)へのリンク

1.12.0リリースでDockerは,サービスがSwarmクラスタ内で起動した場合に,DNSとIPVS(IP Virtual Server)を使用してサービスのロードバランシングを行なうオプションを新たに導入した。

Dockerには,起動時に--net-aliasオプションを使ってエイリアスをコンテナのIPアドレスにマップすることが可能な,DNSサーバが組み込まれている。この機能は1.10から使用できるようになった。さらに1.11リリース以降では,ラウンドロビンDNSベースのロードバランシングもサポートされている。

DNSベースのロードバランシングでは,サービス名(エイリアス)が複数のIPアドレスにマップされる。この状態において,それらのIPアドレスは,サービスが実行されているコンテナを示している。DNS解決クエリが実行されると,DNSサーバは複数のIPアドレスを返す。応答されるIPアドレスの順序はシャッフルされているので,異なるクライアントからの要求は異なるIPにヒットする。このラウンドロビンロードバランシングを実現するための,エイリアスを複数のコンテナIPアドレスにマップする作業は,これまでは手動で行なわなくてはならなかった。

1.12.0リリースで,Dockerは,IPVSと呼ばれるLinux機能を使ったサービスのロードバランシングに関する組込みサポートを追加した。DockerのSwarmクラスタリングエンジンを使えば,サービスに必要なレプリカ(コンテナ)の数をコマンドライン上で宣言することが可能になる。サービスのエイリアスを手作業で指定する必要はない。内部的には,そのサービスのDNS名が,IPVSでその機能が結び付けられている仮想IP(VIP)にマップされていて,DNSのルックアップに対してそのVIPを返す。

IPVSは,レイヤ4(トランスポート層)のTCP/UDPトラフィックを,バックエンドサーバにフォワーディングするLinuxカーネル機能である。ベースとなっているNetFilterモジュールは,Linuxカーネルにおいて,パケットフィルタリングやネットワークアドレス変換の実装上の基礎をなすものだ。

サービス要求がVIPに到達すると,サービスをホストするバックエンドコンテナのいずれかに転送される。この処理は,トラフィックがコンテナ間で均等に分配されるように行われる。このサービスのロードバランシング方法は,サービスディスカバリソフトウェアであるConsulが行なう方法に近い。Consulも同じように,ルックアップの実行に対して複数のIPアドレスを返すことの可能なDNSサーバを提供している。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT