如何在haProxy配置中访问Docker-Compose创建的复制副本 [英] How to access docker-compose created replicas in haproxy config

查看:0
本文介绍了如何在haProxy配置中访问Docker-Compose创建的复制副本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的haproxy.cfg,如下所示:

frontend http
    bind *:8080
    mode http
    use_backend all

backend all
    mode http
    server s1 ws:8080

现在我有了一个如下所示的docker合成文件:

version : '3.9'

services:
    lb:
        image: haproxy
        ports:
            - "8080:8080"
        volumes:
            - ./haproxy:/usr/local/etc/haproxy
    ws:
        image: myserver

这很好用,但现在我想使用Replica将我的服务器(Ws)实例扩展到4个。 我可以做到这一点,只要提供这个docker合成文件:

version : '3.9'

services:
    lb:
        image: haproxy
        ports:
            - "8080:8080"
        volumes:
            - ./haproxy:/usr/local/etc/haproxy
    ws:
        image: myserver
        deploy:
            mode: replicated
            replicas: 4

调用docker-compose up给我的是:

Recreating test_server_ws_1 ... done
Recreating test_server_ws_2 ... done
Recreating test_server_ws_3 ... done
Recreating test_server_ws_4 ... done
Recreating test_lb_1 ... done
但我现在如何在我的haproxy.cfg中引用这4个副本?使用ws:8080以外的任何选项将给我

lb_1  | [ALERT]    (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:11] : 'server s1' : could not resolve address 'ws_1'.

在配置中仅使用%ws作为地址(与以前一样)将始终转发到%ws_4。

如何正确配置haProxy以转发到ws_1、ws_2、ws_3和ws_4?

推荐答案

要使用Docker-Compose完成此操作,您应该考虑两件事:

  1. 将HAProxy中的解析程序设置为使用位于127.0.0.11的Docker内部DNS。
  2. 在HAProxy配置中使用server-template

在配置中使用Docker的DNS将允许HAProxy在我们在后端定义服务器模板时将其用作服务发现机制。您可以像这样在HAProxy中创建resolver

resolvers docker
    nameserver dns1 127.0.0.11:53
Server templates是HAProxy中一个非常强大的功能,它允许配置基于来自解析器的DNS响应来更新(添加/删除)服务器。您可以使用以下内容创建服务器模板:

backend all
    mode http
    server-template nginx- 4 ws:80 check resolvers docker init-addr libc,none

您可以阅读server-template中使用的每个标志,但我将向您介绍配置中的相关标志。第一项是服务器名称前缀nginx-,您可以将其设置为您想要的任何字符串,HAProxy将根据来自解析器的响应总数向其追加一个数字。下一项4是您希望HAProxy配置的最大服务器数,您可以根据需要调整该值的上限或下限。接下来是您为后端服务配置的服务器:端口。并最终将该后端的解析器设置为docker

这篇关于如何在haProxy配置中访问Docker-Compose创建的复制副本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆