我找不到任何關於swarm模式下docker服務的副本之間的負載均衡算法的文檔。docker swarm模式下服務副本之間的網絡請求負載均衡
我創建從Dockerfile基於圖像mynodeapp
:5-秒延遲之後
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);
的代碼只是發送All ok
:
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
。另外,它將Sending response
打印到控制檯。
現在,我開始泊塢窗羣模式:
docker swarm init --advertise-addr:eth0
,並與兩個副本啓動服務:
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
現在,我打開兩個終端並看看兩個容器的日誌:
docker logs amazing_hypatia.2.8lbs461uhiv2qvh28433ayi0g -f
和
docker logs amazing_hypatia.2.8lbs461uhiv2qvh28433ayi0g -f
當我運行
curl localhost:8080
我得到Sending response
從一個終端與其它的終端另一個時間一次。所以它好像循環法使用負載均衡。
但什麼是真正的負載平衡算法?
你能提供一些支持你答案的鏈接嗎?我只是找不到任何來源來討論這個問題。 – rlib
更新了鏈接並引用了docker文檔。 – BMitch