10

У меня есть приложение Node.js на эластичном бобовом стебле, работающем на нескольких экземплярах ec2 за балансиром нагрузки (elb).Amazon ELB - Липкая сессия потерянного файла cookie

Причина необходимости моего приложения, мне пришлось активировать сессионную липкость. Я активировал «AppCookieStickinessPolicy», используя свой собственный файл cookie «sails.sid» в качестве ссылки.

Проблема заключается в том, что мое приложение нужно это печенье работать proprely, но в данный момент я активировать сеанс липкости (через Продолжительность сессионных Липкости или в моем случае: Применение Управляемая Session липкость), заголовки происходит на мой сервер изменены, и я потерял свой файл cookie, который заменен файлом cookie AWSELB (amazon ELB).

Как настроить балансировщик, чтобы не заменить мой файл cookie?

Если я хорошо понял, AppCookieStickinessPolicies должен хранить свой файл cookie, но это не тот случай. Я что-то делаю неправильно?

Заранее спасибо

Описание моей балансировки нагрузки:

{ 
    "LoadBalancerDescriptions": [ 
     { 
      "AvailabilityZones": [ 
       "us-east-1b" 
      ], 

      .... 

      "Policies": { 
       "AppCookieStickinessPolicies": [ 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-awseb-e-y-AWSEBLoa-175QRBIZFH0I8-1452531192664", 
         "CookieName": "sails.sid" 
        } 
       ], 
       "LBCookieStickinessPolicies": [ 
        { 
         "PolicyName": "awseb-elb-stickinesspolicy", 
         "CookieExpirationPeriod": 0 
        } 
       ], 
       "OtherPolicies": [] 
      }, 
      "ListenerDescriptions": [ 
       { 
        "Listener": { 
         "InstancePort": 80, 
         "LoadBalancerPort": 80, 
         "InstanceProtocol": "HTTP", 
         "Protocol": "HTTP" 
        }, 
        "PolicyNames": [ 
         "AWSConsole-AppCookieStickinessPolicy-awseb-e-y-AWSEBLoa-175QRBIZFH0I8-1452531192664" 
        ] 
       } 
      ] 

      .... 

     } 
    ] 
} 
+1

Вы обновили консоль Amazon EC2, чтобы добавить свое собственное имя cookie и политику файлов cookie? Кроме того, вы пытались использовать другое имя файла cookie (например, тот, у которого нет периода в нем)? – Cahit

ответ

1

Липкий сессия печенье устанавливается ELB используется для определения того, что узел в кластере с запросом маршрута к.

Если вы настроите файл cookie в своем приложении, на который вам нужно положиться, ожидая, что ELB будет использовать этот файл cookie, он перезапишет значение, которое вы устанавливаете.

Попробуйте просто разрешить ELB управлять сессионным файлом cookie.

1

Я потратил много времени, пытаясь использовать функции липкости ELB и запросы маршрутизации от одного и того же клиента к одному и тому же компьютеру на серверном сервере кластера.

Проблема в том, что она не всегда работает на 100%, поэтому мне пришлось написать процедуру резервного копирования, используя сеансы, хранящиеся в MySQL. Но потом я понял, что мне не нужна функциональность липкости ELB, я мог бы просто использовать сессионную систему MySQL.

Сложнее написать систему сеанса базы данных, и, конечно, есть накладные расходы, так как каждый HTTP-вызов неизбежно будет включать запрос к базе данных. Однако, если это запрос использует первичный индекс, это не так уж плохо.

Большое преимущество заключается в том, что любой запрос может отправляться на любой сервер. ИЛИ если один из ваших серверов умирает, следующий может справиться с этой задачей. Для действительно устойчивых приложений система сеансов базы данных неизбежна.

+0

Или вы можете использовать что-то вроде memcached или redis для своих сеансов. Быстрый доступ, без дополнительной нагрузки на вашу базу данных. – chris

Смежные вопросы