<---> NGX CACHE - NODE A \
REQUESTS <---> LB <--> <----> SHARED FS (NAS)
<---> NGX CACHE - NODE B/
我試圖完成這樣的事情,請求負載平衡之間的幾個節點應提供共享緩存內容時可用。 即使內容由其他節點之一存儲在緩存文件系統中,我們也會遇到隨機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「共享」的幾個節點的內存區的工作?如果它在內存中,它如何共享?任何替代品不添加自定義模塊,如SR緩存到nginx(https://www.nginx.com/resources/wiki/modules/sr_cache/)?