如何在两个docker服务之间进行负载均衡?

时间:2017-07-21 11:42:06

标签: node.js docker load-balancing docker-swarm netflix-eureka

  • 我有docker-service(Node.js)
    • 我使用 zuul路径通过API网关(spring-boot)调用此服务。
    • 我在2个不同的端口上运行该服务,并且该2个微服务的名称也不同。
    • 服务的内部名称相同,并使用与Eureka相同的名称。

enter image description here

enter image description here

  • 我想在这项服务上执行负载均衡,以便第一项服务可以提供少量请求,第二项服务可以提供少量请求。

我正在使用以下命令运行此服务

sudo docker run -p ${EXTERNAL_PORT_NUMBER}:${INTERNAL_PORT_NUMBER} --network ${NETWORK} --name ${SERVICE_NAME} -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}

我可以在命令本身或任何替代方案中配置负载均衡吗?

1 个答案:

答案 0 :(得分:4)

使用负载平衡服务器在每个实例之间进行选择。 负载均衡器的选择取决于您,但这是NGINX平衡器的配置:

upstream backend {
    server 127.0.0.1:123;
    server 127.0.0.1:124;
}

server {
    server_name _;
    listen 80 default_server;
    listen [::]:80;

    location / {
        proxy_pass http://backend;
    }
}

这定义了NGINX在加载页面时选择的一组upstream服务器。 NGINX将跟踪每个服务器的状态,并避免向离线/错误的服务器发出请求。

你可以创建一个NGINX的docker实例,它充当其他实例的负载均衡器

请参阅http://nginx.org/en/docs/http/ngx_http_upstream_module.html