10

Mam aplikację Node.js na Elastic Beanstalk działającą w wielu instancjach ec2 za równoważnikiem obciążenia (elb).Amazon ELB - sesja lepka utracona z pliku cookie

Przyczyna potrzeby mojej aplikacji, musiałem aktywować lepkość sesji. Aktywowałem "AppCookieStickinessPolicy" używając mojego niestandardowego pliku cookie "sails.sid" jako odniesienia.

Problemem jest to, że moja aplikacja trzeba ten plik do pracy proprely, ale za chwilę włączyć stickness sesji (poprzez oparty na czasie trwania sesji kleistości lub w moim przypadku: Application-Controlled Sesja Lepkość), nagłówki dzieje do mojego serwera zostały zmodyfikowane i zgubiłem swój niestandardowy plik cookie, który został zastąpiony przez plik cookie AWSELB (amazon ELB).

Jak skonfigurować loadbalancer, aby nie zastępował mojego pliku cookie?

Jeśli zrozumiałem dobrze, AppCookieStickinessPolicies musi zachować mój własny plik cookie, ale to nie jest przypadek. Gdzieś robię coś źle?

góry dzięki

Opis mojego równoważenia obciążenia:

{ 
    "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

Czy zaktualizowałeś konsolę Amazon EC2, aby dodać niestandardową nazwę pliku cookie i zasady dotyczące plików cookie? Czy próbowałeś użyć innej nazwy pliku cookie (np. Takiej, która nie zawiera okresu)? – Cahit

Odpowiedz

1

Lepki cookie sesji ustawiona przez ELB jest używana do określenia, co w klastrze węzeł na trasie do wniosku.

Jeśli ustawiasz plik cookie w swojej aplikacji, na którym musisz polegać, a następnie spodziewasz się, że ELB użyje tego pliku cookie, nadpisze on wartość, którą ustawiasz.

Spróbuj po prostu pozwolić ELB zarządzać plikiem cookie sesji.

1

Spędziłem dużo czasu wypróbowując funkcje elastyczności i żądania routingu ELB od tego samego klienta do tego samego komputera na serwerze klastra zaplecza.

Problem polega na tym, że nie zawsze działał on w 100%, więc musiałem napisać procedurę tworzenia kopii zapasowej za pomocą sesji przechowywanych w MySQL. Ale wtedy zdałem sobie sprawę, że nie potrzebuję funkcji lepkości ELB, mogłem po prostu użyć systemu sesji MySQL.

Pisanie systemu sesji bazy danych jest bardziej skomplikowane i oczywiście wiąże się z tym, że każde wywołanie http będzie nieuchronnie wymagać zapytania do bazy danych. Jeśli jednak zapytanie używa indeksu podstawowego, nie jest takie złe.

Dużą zaletą jest to, że każde żądanie może przejść do dowolnego serwera. LUB jeśli jeden z twoich serwerów umiera, następny może obsłużyć pracę równie dobrze. W przypadku naprawdę odpornych aplikacji system sesji bazy danych jest nieunikniony.

+0

Lub możesz użyć czegoś takiego jak memcached lub redis do swoich sesji. Szybki dostęp, bez dodatkowego obciążenia bazy danych. – chris

Powiązane problemy