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時間。だから
はラウンドロビンのように見える負荷分散が使用されます。
しかし、実際のロードバランシングアルゴリズムとは何ですか?
回答を提供するリンクをいくつか用意できますか?私はこの問題を議論している情報源を見つけることができません。 – rlib
これに関するドッカーの文書からのリンクと引用で更新されました。 – BMitch