Kubernetes — кешированный контент Nginx удаляется при сохранении в томе AWS EFS

Я использую официальный образ Nginx с измененной конфигурацией для кэширования ответов источника. Конфигурация ниже includeизд. в httpблок внутри /etc/nginx/nginx.conf(Основной файл конфигурации для Nginx)

      proxy_cache_path /var/nginx-cache
                 levels=1:2               # Directory levels when persisting cache (this is faster than one level)
                 keys_zone=fe_cache:500m  # Memory zone and its space to speedup cache (800 keys/1m)
                 max_size=10g             # All disk space if not set
                 inactive=30d             # How long to keep things without being accessed
                 use_temp_path=off;       # Don't know what is it, but it is recommended as off

server {
    listen 80;
    server_name _;
    set_real_ip_from  0.0.0.0/0;
    real_ip_header    X-Forwarded-For;
    real_ip_recursive on;

    location / {
        # Proxy_pass configuration
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_pass http://my.origin/;

        # The cache zone we are using
        proxy_cache fe_cache;
        proxy_cache_min_uses 1;
        proxy_cache_use_stale error timeout updating http_500 http_502
                              http_503 http_504;
        #proxy_cache_background_update on;
        proxy_cache_lock on;

        # Add this header to the response
        add_header X-Cache-Status $upstream_cache_status;

        # If request contains token cookie, then don't save it to cache
        proxy_no_cache $cookie_token;

        # If request contains token cookie, then don't take it from cache
        proxy_cache_bypass $cookie_token;

        proxy_redirect off;
        proxy_read_timeout 240s;
    }
}

Этот образ Nginx работает как модуль Kubernetes с несколькими репликами. Чтобы повысить производительность, я пытаюсь использовать один и тот же объем кэша для этих реплик. Но проблема, с которой я столкнулся, заключается в том, что кешированный контент через некоторое время удаляется. Я заметил это, наблюдая за выводом этого скрипта (число, напечатанное здесь, иногда уменьшается)

      while true; do
    kubectl exec -it nginx-pod -- bash -c '
        find /var/nginx-cache/ -type f | wc -l
    ' >> counts
done

Чтобы убедиться, что у меня нет какого-либо состояния гонки, я попытался уменьшить общее количество реплик до 1. Однако у меня все еще была та же проблема.

Наконец, я попытался хранить данные прямо в модуле без монтирования тома. Когда я это сделал, данные не удалялись.

0 ответов

Другие вопросы по тегам