2017-01-13 9 views
0

swarmモードでドッカーのサービスのレプリカ間でロードバランシングのアルゴリズムが使用されていません。docker swarmモードでサービスのレプリカ間のネットワーク要求のロードバランシング

私はDockerfileからベース画像mynodeapp作成:

FROM node:latest                                           
RUN mkdir -p /usr/src/app                                        
WORKDIR /usr/src/app                                          
COPY package.json /usr/src/app/                                       
RUN npm install                                           
COPY . /usr/src/app                                          
EXPOSE 8080                                            
CMD [ "npm", "start" ]  

npmは以下のserver.jsを開始:

const LATENCY = 5000; 
var app = require('express')(); 

app.get('/', (req,res)=>{ 
     console.log('Sending response'); 
     setTimeout(function() { 
       res.send('All ok'); 
     }, LATENCY); 
}); 
app.listen(8080); 

コードはわずか5秒の遅延後All okを送信します。また、Sending responseをコンソールに出力します。

は今、私は、ドッキングウィンドウの群れモード開始:

docker swarm init --advertise-addr:eth0 

をし、2つのレプリカでのサービスを開始します。

docker service create mynodeapp --replicas 2 --publish 8080:8080 

結果が

[email protected]:~# docker service ls 
ID   NAME    REPLICAS IMAGE  COMMAND 
233z44bz6sx0 amazing_hypatia 2/2  mynodeapp 



[email protected]:~# docker ps 
CONTAINER ID  PORTS    NAMES 
1f36e0c9eb37  8080/tcp   amazing_hypatia.1.453u2upnyf2nvtwxouopv4olk 

f0fb099a5154  8080/tcp   amazing_hypatia.2.8lbs461uhiv2qvh28433ayi0g 

で、私は2つの端子を開きます両方のコンテナのログを確認します。

docker logs amazing_hypatia.2.8lbs461uhiv2qvh28433ayi0g -f 

docker logs amazing_hypatia.2.8lbs461uhiv2qvh28433ayi0g -f 

は、私は私が得る
curl localhost:8080 

を実行すると Sending response一方の端子と、別の端末から別の時間から1時間。だから はラウンドロビンのように見える負荷分散が使用されます。

しかし、実際のロードバランシングアルゴリズムとは何ですか?

答えて

2

アルゴリズムは現在、単純なラウンドロビン方式です。このサービスを持つ別のドッカーホストにルーティングされる要求の問題も解決する最も速い応答時間アルゴリズムを実現するための提案がありますが、まだ実装されていません。 docker's swarm networking docsから


:アクティブなタスクへ サービスのVIPに

群れのロードバランサが自動的にルーティングHTTPリクエスト。ラウンドロビン選択を使用して、後続の要求を 他のタスクに配信します。

最も速く期待される応答を使用するコメントは、私が今すぐに取り上げることができないいくつかのdockercon 2016ビデオからのものです。

+0

回答を提供するリンクをいくつか用意できますか?私はこの問題を議論している情報源を見つけることができません。 – rlib

+0

これに関するドッカーの文書からのリンクと引用で更新されました。 – BMitch

関連する問題