2016-12-29 10 views
0

Linux-EC2サーバーにNginxコンテナをセットアップしました。それが今、ポート80に異なるポートで要求を渡し2台のNginxコンテナを、フェイルオーバーを使用したアクティブ/パッシブ設定でリバースプロキシとして設定するにはどうすればいいですか?

server { 
    listen  80; 
    server_name  client-dev.com; 
    location/{ 
     proxy_pass   http://dev-client.1234.io:5001/; 
     proxy_redirect  off; 

     ##proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

     client_max_body_size  10m; 
     client_body_buffer_size 128k; 

     proxy_connect_timeout  90; 
     proxy_send_timeout   90; 
     proxy_read_timeout   90; 

     proxy_buffer_size   4k; 
     proxy_buffers    4 32k; 
     proxy_busy_buffers_size 64k; 
     proxy_temp_file_write_size 64k; 
    } 
} 
server { 
    listen  80; 
    server_name  client-test.com; 
    location/{ 
     proxy_pass   http://test-client-1234.io:5005/; 
     proxy_redirect  off; 

     ##proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

     client_max_body_size  10m; 
     client_body_buffer_size 128k; 

     proxy_connect_timeout  90; 
     proxy_send_timeout   90; 
     proxy_read_timeout   90; 

     proxy_buffer_size   4k; 
     proxy_buffers    4 32k; 
     proxy_busy_buffers_size 64k; 
     proxy_temp_file_write_size 64k; 
    } 
} 

、私はアクティブ - パッシブモードで冗長nginxのを行う必要があります。次のように私のnginxの設定ファイルです。 Nginxのコンテナがダウン/ストップした場合。

これを行うには、同じサーバーに別のNginxコンテナを設定する必要がありますか?もしそうなら、フェールオーバーを自動的に行うためにどのようにセットアップする必要がありますか?

私は "上流"オプションを見てきましたが、私が見つけたように、このケースではうまくいかないでしょう。私が持っているproxy_passは外部と動的なもので、ドッカークラウドのスクリプトを使って取得します。

"docker-gen"という別の方法がありますが、どれくらい有益なのか分かりませんし、もしあれば別の方法を使うことを好みますか?

ご協力いただければ幸いです。

答えて

1

私は、次のオプションを考えることができます:

  1. Kubernetes:あなたはあなたのnginxの設定の展開を作成し、活気プローブを使用することができます。 Kubernetesはあなたが提供するhttpリクエスト/間隔でnginxのコンテナを調べます。ポッドが正常でない場合は、殺されて再作成されます。 kubernetesクラスタ内のマルチノードを使用すると、ノードの障害からも軽減できます。

  2. ドッカースウォーム:複数のノードでドッカースウォームモードを使用すると、ノードの障害から軽減できますが、bashcurlで実行できる外部カスタムスクリプトでnginxの状態をチェックする必要があります。

  3. キープアライブ付きスタンドアロンホストの使用:キープアライブを使用する従来のnginxアクティブ/パッシブクラスタです。これをドッカーで使用することもできますが、汚れている可能性があります。すべてのコンテナが1つのホスト上でパッシブになるためです。

+0

ありがとうございます。私はちょうど問題に直面しています:私のnginxは、サービスURLの1つが動作していないため停止しています、そして、このエラーを出します。任意のヘルプは非常に高く評価されるだろう。 – Matrix

+0

これは通常、アップストリームサーバとして指定したDNS名を解決できないことを意味します。これをテストするには、nginxサーバにログオンし、提供されているアップストリームサーバにpingを実行し、名前解決が正しく完了したかどうかを確認してください。ドッカーコンテナが 'docker exec -it'を実行してシェルを取得しようとした場合、 。 –

+0

ドッカーサービスが停止しているときは、ドッカーのexecを使用できません。コンテナが実行されている場合には使用できます。そのプロキシパスはダウンしているため解決できません。私はそれを修正することができますどのように動作する必要があるnginxの設定ファイルに他の多くのサーバーがあります – Matrix

関連する問題