2016-12-14 26 views
3

Dockerホスト内でHAProxyを設定しようとしています。ユーザーを使用しているとき私の理解では、唯一の有効化され、 - 私はドッカーの組み込みDNSシステムを使用したいHAProxyとDockerを使用した動的DNS解決

# Simple configuration for an HTTP proxy listening on port 81 on all 
# interfaces and forwarding requests to a single backend "servers" with a 
# single server "server1" listening on 127.0.0.1:8000 
global 
    daemon 
    maxconn 256 

resolvers docker 
    # nameserver dnsmasq 127.0.0.1:53 
    nameserver dns 127.0.0.1:53 

defaults 
    mode http 
    timeout connect 5000ms 
    timeout client 50000ms 
    timeout server 50000ms 
    default-server init-addr none 

frontend http-in 
    bind *:80 
    default_backend www_somedomain1_com 

    # Define hosts 
    acl host_www_somedomain1_com hdr(host) -i somedomain1.com 
    acl host_www_somedomain1_com hdr(host) -i www.somedomain1.com 
    acl host_www_somedomain2_com hdr(host) -i www.somedomain2.com 

    ## figure out which one to use 
    use_backend www_somedomain1_com if host_www_somedomain1_com 
    use_backend www_somedomain2_com if host_www_somedomain2_com 

backend www_somedomain1_com 
    # Utilizing the Docker DNS to resolve below host 
    # server server1 www-somedomain1-com maxconn 32 check port 80 
    server server1 www-somedomain1-com resolvers docker check maxconn 32 

backend www_somedomain2_com 
    # Utilizing the Docker DNS to resolve below host 
    # server server1 www-somedomain2-com maxconn 32 check resolvers docker resolve-prefer ipv4 
    server server1 www-somedomain2-com maxconn 32 check port 80 

:のように私のhaproxy.cfgに見えるHAProxy 1.7とドッカー1.12

を使用して

定義されたネットワーク。

だから私は、私は私の2つの名前付きドッキングウィンドウコンテナ、(私の-haproxyとWWW-somedomain1-COM)を実行すると、私はそのネットワークに追加

docker network create mynetwork 

(デフォルトブリッジドライバを使用して)ネットワークを作成--netフラグ。

ドッカーは、コマンドを実行します。

docker run --name myhaproxy --net mynetwork -p 80:80 -d haproxy 
docker run --name www-somedomain1-com --net mynetwork -d nginx 

私はbashシェルでそれらに飛び乗ったときに、私は他の1つのコンテナから解決することができますので、ドッカーのDNSが機能している知っています。動的DNS解決を有効にするために、HAProxyに正しいコンボ/設定を取得できません。

HAProxy統計ページには、常にブラウン/解像度の問題として、下流のバックエンドを示して....

助けたいくつかの事柄: - 「デフォルト・サーバーのinit-addrには、いずれも」haproxy設定は、上のチェック渡すことができますありません起動。

ご指導ありがとうございます。

+0

あなたは 'ドッカrun'コマンドを投稿することができますか?ドッカーを使用していない理由 - この環境で作成しますか? – jmiraglia

+0

コンテナ内からdig/nslookupを実行できますか? – Baptiste

+0

また、ソケットに「show stat resolvers」を発行してDNS解決統計情報のダンプを取得することもできます。どのタイプのエラーが報告されるかわかります – Baptiste

答えて

0

私はプロジェクトでnginxとhaproxyも使用しています。あなたがドッカーを使用し始めるかもしれないので、私はこれについて私のdocker-compose.yamlを投稿したいと思いました。

version: "2" 

networks: 
    main: 

volumes: 
    jsdoc-data: 
    driver: local 
    coverage-data: 
    driver: local 

services: 
    nginx: 
    build: ../nginx 
    depends_on: 
     - haproxy 
    networks: 
     - main 
    ports: 
     - 80:80 
     - 443:443 
    volumes: 
     - jsdoc-data:/www/jsdoc 
     - coverage-data:/www/coverage 

    haproxy: 
    image: dockercloud/haproxy:1.5.3 
    ports: 
     - 80 
     - 1936:1936 
    links: 
     - app 
    networks: 
     - main 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
    environment: 
     - MODE=http 
     - STATS_PORT=1936 
     - STATS_AUTH=username:password 
3

私はそれがドッキングウィンドウブリッジネットワーク用127.0.0.11:53する必要があるときに、あなたの問題は、あなたがあなたのリゾルバDNSの127.0.0.1:53を使用していることだと思います。ここで

はDEV]ドッキングウィンドウのもののための私のhaproxyの設定です:

global 
    quiet 

defaults 
    log global 
    mode http 
    option forwardfor 
    timeout connect 60s 
    timeout client 60s 
    timeout server 60s 
    default-server init-addr none 

resolvers docker_resolver 
    nameserver dns 127.0.0.11:53 

frontend https-proxy 
    bind 0.0.0.0:80 
    bind 0.0.0.0:443 ssl crt /usr/local/etc/haproxy/dev_server.pem 
    redirect scheme https if !{ ssl_fc } 

    acl is_api_server hdr(host) -i mywebsite 

    use_backend api_server if is_api_server 

backend api_server 
    server haproxyapi api-server-dev:80 check inter 10s resolvers docker_resolver resolve-prefer ipv4 
関連する問題