2017-02-20 20 views
2
     <---> 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などのカスタムモジュールを追加することなく、任意の選択肢がありますか?

答えて

2

Nginxはノード間でディスクベースのキャッシュを共有できません。共有ディスクにキャッシュを置くことも悪い考えです。それは悪い設計です。共有ディスクによるネットワークトラブル、ネットワーク遅延や配信ロックの発生による遅延など、nginxのパフォーマンスが大幅に低下する可能性があります。

ローカルディスクにキャッシュを残します。負荷分散として複数のノードを使用する場合は、キャッシュシャーディングを使用できます。各ノードは要求の一部を受け取り、キャッシュする。 HAをターゲットにしている場合、各ノードは独自のフルキャッシュを維持します。

nginxサイトで読むことのできるこのすべてのケースの詳細:シャーディングについてはhttps://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/、シャーディングについてはhttps://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/です。

関連する問題