2016-07-07 12 views
1

新しいDocker Swarm 1.12では、複数のアプリケーションをサーバーのクラスタに展開することは可能です。ポート80で2つのアプリケーションを実行し、Docker Swarmで異なるホスト名を実行できますか?

私は同じポートと同じクラスタに2つの別個のアプリケーションまたはアプリケーションのエントリポイントを展開する方法を探しています。

ポート80を露出させ、複数のホストの1つのクラスタのみで、この場合の群れが、私はあなたが別のポートを公開し、この他のポートにproxy_passするように設定ロードバランサを持つことができると仮定し
web.myservice.com:80 -> Swarm ->  Service[web] -> web.1 
                 -> web.2 
                 -> web.3 

backend.myservice.com:80 -> Swarm -> Service[backend] -> backend.1 
                 -> backend.2 
                 -> backend.3 

が、次のように考えてみましょう私は、クラスタ内のhostname:portを公開するだけでよいので、ホスト名とポートでリクエストが送られてくると転送されます。複数のホストやポートが必要な場合は、複数のホストを公開することができます。

これは利用可能な可能性があるので、私はこの質問をしています。おそらく、HAProxyやNginxのいくつかの高度な設定で複製することができます。私はかなり実験しており、これを拡張可能にすることは非常に難しいと感じました。ご意見やご提案があれば、そのトピックに関するアドバイスをお願いします!

- マーカス

答えて

1

あなたはポートを公開すると、それはノードのネットワークインターフェイスにバインドします。 両方のサービスからのタスクが同じノードに存在しないようにするために配置制約を使用することでこの問題を解決できるかもしれませんが、トラフィックをプロキシするためのnginxサービスを持つことをお勧めします。名前で簡単に到達できるよう

大群があなたのサービスのためのDNSエントリを作成し、簡単なnginxの例は次のようになります。

http { 
... 
    server { 
    server_name web.myservice.com; 

    location/{ 
     proxy_pass http://web:8080; 
     proxy_redirect default; 
    } 
    } 

    server { 
    server_name backend.myservice.com; 

    location/{ 
     proxy_pass http://backend:8080; 
     proxy_redirect default; 
    } 
    } 
} 
関連する問題