gpt4 book ai didi

node.js - docker swarm模式下服务副本之间网络请求的负载均衡

转载 作者:行者123 更新时间:2023-12-02 21:24:07 26 4
gpt4 key购买 nike

我找不到任何关于集群模式下 docker 服务的副本之间使用的负载平衡算法的文档。

我创建了一个图像 mynodeapp基于 Dockerfile:

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 );

代码只是发送 All ok延迟 5 秒后。此外,它打印 Sending response去安慰。

现在,我启动 docker swarm 模式:
docker swarm init --advertise-addr:eth0

并使用两个副本启动服务:
docker service create mynodeapp --replicas 2 --publish 8080:8080

结果是
root@man1:~# docker service ls
ID NAME REPLICAS IMAGE COMMAND
233z44bz6sx0 amazing_hypatia 2/2 mynodeapp



root@man1:~# 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一次来自一个终端,另一次来自另一个终端。所以它 好像是循环赛 使用负载均衡。

但什么是真正的负载均衡算法?

最佳答案

该算法目前是一个简单的循环。有人建议启用最快的预期响应时间算法,以解决请求被路由到另一个 docker 主机的问题,该服务也在本地运行,但这尚未实现。

来自 docker's swarm networking docs :

The swarm load balancer automatically routes the HTTP request to the service’s VIP to an active task. It distributes subsequent requests to other tasks using round-robin selection.



关于使用最快预期响应的评论来自一些我现在无法提取的 dockercon 2016 视频。

关于node.js - docker swarm模式下服务副本之间网络请求的负载均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41636135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com