2017-01-19 16 views
0

Docker Swarmでドッカーを作成したい(私はドッカーのバージョン1.13を使用し、version: '3'の構文で構成する)。 各サービスは他のサービスとの「単一の」サービスとして到達可能ですか?ここで明確にするために簡略化した例である:Docker Swarm Service Clustering

version: '3' 

services: 
    nodejs: 
    image: mynodeapp 
    container_name: my_app 
    ports: 
     - "80:8080" 
    environment: 
     - REDIS_HOST=my_redis 
     - REDIS_PORT=6379 
    deploy: 
     mode: replicated 
     replicas: 3 
    networks: 
     - my_net 
    command: npm start 

    redis: 
    image: redis 
    container_name: my_redis 
    restart: always 
    expose: 
     - 6379 
    deploy: 
     mode: replicated 
     replicas: 2 
    networks: 
     - my_net 

networks: 
    my_net: 
    external: true 

のは、私が群れのように構成されている3台の仮想マシンを持っているとしましょう。つまり、各VMには1つのnodejsコンテナがありますが、2つのredisコンテナしかありません。

いいえ redisが実行されています。私のnodejsコンテナは、そのredisについて知っていますか?

Addiitonal質問: 私はRedisのためreplicas: 4を設定すると、私は VM上 Redisのコンテナを持っています:これは私のnodejsのアプリのために問題になるのでしょうか?

最後の質問: 私は私のnodeappためreplicas: 4を設定します。私は今、回ポート80を公開しているので、これも動作しますか?

答えて

0

は同じ順序では、質問:それはレプリカで構成されているかのよう

  1. つのサービスが別のサービスが表示されません。 Nodejsには、レプリカがどのノードにあるかにかかわらず、1つのIPを持つユニークなRedisが表示されます。それは群れの美しさです。
  2. はい、あるノードにNodejを、別のノードにRedisを持つことができます。これらのノードは互いに見えるようになります。それはマネージャーの仕事です。コンテナを同じマシン上で実行していると「信じる」ようにします。
  3. また、問題なく同じノードに多くのレプリカを配置することができます。彼らは全体として知覚されるでしょう。実際には、同じボリュームを使用します。
  4. 最後に、ポート80を実際に2回公開していないため、(1)の意味として問題はありません。 20個のレプリカを持っていても、IP:PORTの特定の方向で、サービスに固有のエントリポイントがあります。
+0

3.ただし、**異なるノード**でレプリケートされたデータベースを使用している場合は、データベースのクラスタを構成する必要があります。 – Munchkin

+0

@Munchkinこれで何を意味するのか分かりません。 Docker Swarmを使用すると、サービスのレプリカ数に関係なくデータを同期させることができます。また、ノード数が分散していても、その側面について心配する必要はありません。 –

+1

明確にする:私は3回複製されました。最初の要求はredis#1に到着し、key1を更新します。次に、別の要求がredis#2に到着します。redis#2に新しい(更新された)キーがありますか? redis-cluster **を設定しなくても**(オプション 'cluster-enabled yes')? – Munchkin

1

サービスはステートレスでなければなりません。データベースの場合は、ステートフルなので、各インスタンスでクラスタモードを設定する必要があります。

+0

「各インスタンスで」 - 本当にssh( 'docker exec -it container/bin/sh') )すべてのインスタンスに? Meh、悪い回避策のように聞こえる=/ – Munchkin

+0

構成はそれぞれの特定のソリューション(ステートフル)に依存します。たとえばcouchbaseの場合、この例を見てください。 Https://blog.couchbase。com/couchbase-cluster-docker-swarm-compose-machine/ この非常に良い記事に関連する Https://blog.couchbase.com/deploy-docker-compose-services-swarm/ につい –

関連する問題