nginx のロードバランスアプリケーションとキャッシュサーバーを「並列」にすることは可能ですか?

nginx のロードバランスアプリケーションとキャッシュサーバーを「並列」にすることは可能ですか?

私はこれを読んだばかりですデジタルオーシャンの記事そして、トポロジー最後の例は nginx で実装できます。

私は興味を持っているロードバランサがアプリケーションサーバの前にない2つの専用キャッシュサーバをどのように処理するか彼らはそのプロセスを次のように説明しています。

  1. ロードバランサはキャッシュバックエンドをチェックして、要求されたコンテンツがキャッシュされているか(キャッシュヒット)否か(キャッシュミス)を確認します。
  2. キャッシュヒットの場合: 要求されたコンテンツをロードバランサに返し、ステップ7に進みます。キャッシュミスの場合: キャッシュサーバーは、ロードバランサを介してリクエストをアプリバックエンドに転送します。
  3. ロードバランサはリクエストをアプリバックエンドに転送します
  4. app-backend はデータベースから読み取り、要求されたコンテンツをロードバランサに返します。
  5. ロードバランサはレスポンスをキャッシュバックエンドに転送する
  6. キャッシュバックエンドはコンテンツをキャッシュし、ロードバランサに返します。
  7. ロードバランサは要求されたデータをユーザーに返します

ロードバランサーには、アップストリームディレクティブに次の 2 つのグループが必要だと思います。

upstream cachebackend {
    server cache-1.example.com;
    server cache-2.example.com;
}

upstream appbackend {
    server app-1.example.com;
    server app-2.example.com;
}

そして、サーバーディレクティブ内から:

location / {
    proxy_pass http://cachebackend;

    # if that one is a MISS, request this one:
    # proxy_pass http://appbackend;
    # and then save the response on the cachebackend
    # before returning it to the client
}

nginx に上記の手順を実行するように指示する方法、またはそれが可能かどうかを知りたいです。

ありがとう :)

答え1

Nginx は、ロード バランシングとキャッシュを同時に実行できます。proxy_cache_pathディレクティブを使用してキャッシュ ゾーンを設定し、それを特定のserver {}または をlocation {}使用して割り当てるだけですproxy_cache。つまり、結論として、nginx をロード バランサーとキャッシュの両方として使用する場合、Digital Ocean アーキテクチャは非常に冗長に見えます。

関連情報