<---> NGX CACHE - NODE A \
REQUESTS <---> LB <--> <----> SHARED FS (NAS)
<---> NGX CACHE - NODE B/
私はこのようなことを達成しようとしています。利用可能な場合、キャッシュされた共有コンテンツを提供するいくつかのノード間で要求が負荷分散されます。 コンテンツが他のノードの1つによってキャッシュファイルシステムに保存されていても、ランダムなMISS結果が発生しています。ログから見ることができるのは、ノードAがノードBによってキャッシュされたHITコンテンツとして識別されることがあるが、時にはそうでないことがあることである。ロードバランスされたnginxプロキシの共有キャッシュコンテンツ
ドキュメントhttps://www.nginx.com/blog/nginx-caching-guide/によると、必須のkeys_zoneパラメータは、キャッシュキーとメタデータを格納するための共有メモリゾーンを設定して、ディスクに移動することなくリクエストがHITかMISSかを迅速に判断します。
これが私たちの設定の関連部分である:
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_zone:10m max_size=10g inactive=60m use_temp_path=off;
: : :
location ~* ^/api/rdPage.aspx {
resolver 10.0.0.1;
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_bypass $http_pragma;
proxy_cache_key "$proxy_host$uri$request_body";
proxy_cache_valid 200 10m;
proxy_ignore_headers Cache-Control Expires Set-Cookie;
proxy_cache_methods POST;
proxy_cache_min_uses 0;
proxy_cache my_zone;
# WITH PROXY LB SERVER
proxy_pass http://api-server/rdPage.aspx$is_args$args;
proxy_headers_hash_bucket_size 128;
proxy_connect_timeout 15;
proxy_send_timeout 15;
proxy_read_timeout 1800;
}
はどのようkeys_zoneは、複数のノードのためのメモリ領域の仕事を「共有」しますか?それが記憶されている場合、どのように共有することができますか? nginx(https://www.nginx.com/resources/wiki/modules/sr_cache/)にSR Cacheなどのカスタムモジュールを追加することなく、任意の選択肢がありますか?