2017-07-19 41 views
7

EC2'deki tomcat örneklerinde çalışan bir web uygulamasına sahibim ve yük dengeleyici üzerinde çalışmam için hayatımın tadını çıkaramayacağım. http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html'daki tüm adımları izledim, hem uygulama tabanlı (JSESSIONID çerezini kullanarak) hem de zaman tabanlı (86400 saniye kullanarak) yöntemlerini kullanmayı denedim, ancak her iki şekilde de işe yaramıyor. Aynı kullanıcı tüm farklı düğümlerin etrafında zıplamaya devam ediyor. Web sayfasındaki yeni bir bağlantıyı her tıkladıklarında, tekrar giriş yapmak için ana ekrana geri dönüyor.AWS'de çalışan yapışkan oturumları alamıyor musunuz?

Neden çalışmadığı konusunda hiçbir fikrim yok. Ben de bu şey hakkında çok fazla şey bilmiyorum (2 saat öncesine kadar 'yapışkan oturum' ne anlama geldiğini bile bilmiyordum - ve hayır, bunu yapmak için başka birini alamıyorum) m hata ayıklama ile başlayacağından emin değilim.

DÜZENLEME: Çerezlerime baktığımda, AWSELB çerezinin, siteye yüklediğim her seferinde silinmesi ve yeniden yazılması gibi görünüyor.

DÜZENLEME 2: benim yük dengeleyici XML yapılandırma:

{ 
    "LoadBalancerDescriptions": [ 
     { 
      "Subnets": [ 
       "subnet-5c83aa39", 
       "subnet-6a778830", 
       "subnet-c41cdde8" 
      ], 
      "CanonicalHostedZoneNameID": "Z35SXDOTRQ7X7K", 
      "CanonicalHostedZoneName": "<ELB_NAME>-<redacted>.us-east-1.elb.amazonaws.com", 
      "ListenerDescriptions": [ 
       { 
        "Listener": { 
         "InstancePort": 5432, 
         "LoadBalancerPort": 5432, 
         "Protocol": "TCP", 
         "InstanceProtocol": "TCP" 
        }, 
        "PolicyNames": [] 
       }, 
       { 
        "Listener": { 
         "InstancePort": 8888, 
         "LoadBalancerPort": 8888, 
         "Protocol": "HTTP", 
         "InstanceProtocol": "HTTP" 
        }, 
        "PolicyNames": [ 
         "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500995555135" 
        ] 
       } 
      ], 
      "HealthCheck": { 
       "HealthyThreshold": 2, 
       "Interval": 10, 
       "Target": "HTTP:44554/", 
       "Timeout": 8, 
       "UnhealthyThreshold": 4 
      }, 
      "VPCId": "vpc-721bec0b", 
      "BackendServerDescriptions": [], 
      "Instances": [ 
       { 
        "InstanceId": "i-0ca9c244ed930d58f" 
       }, 
       { 
        "InstanceId": "i-0cf47dc916f3f3443" 
       }, 
       { 
        "InstanceId": "i-09ce2f24abc50259f" 
       } 
      ], 
      "DNSName": "<ELB_NAME>-<redacted>.us-east-1.elb.amazonaws.com", 
      "SecurityGroups": [ 
       "sg-f5ff638b" 
      ], 
      "Policies": { 
       "LBCookieStickinessPolicies": [ 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500564994754", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500565103581", 
         "CookieExpirationPeriod": 0 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500566463445", 
         "CookieExpirationPeriod": 28800 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500566440580", 
         "CookieExpirationPeriod": 0 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500476922828", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500481383343", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500479370743", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500475843862", 
         "CookieExpirationPeriod": 86400 
        }, 
        { 
         "PolicyName": "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500995555135", 
         "CookieExpirationPeriod": 86400 
        } 
       ], 
       "AppCookieStickinessPolicies": [ 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500477157435", 
         "CookieName": "JSESSIONID" 
        }, 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500472642494", 
         "CookieName": "JSESSIONID" 
        }, 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500473344752", 
         "CookieName": "JSESSIONID" 
        }, 
        { 
         "PolicyName": "AWSConsole-AppCookieStickinessPolicy-<ELB_NAME>-1500473227851", 
         "CookieName": "JSESSIONID" 
        } 
       ], 
       "OtherPolicies": [] 
      }, 
      "LoadBalancerName": "<ELB_NAME>", 
      "CreatedTime": "2017-07-18T15:32:33.890Z", 
      "AvailabilityZones": [ 
       "us-east-1a", 
       "us-east-1b", 
       "us-east-1c" 
      ], 
      "Scheme": "internet-facing", 
      "SourceSecurityGroup": { 
       "OwnerAlias": "558554867759", 
       "GroupName": "<redacted>" 
      } 
     } 
    ] 
} 

DÜZENLEME 3: herkes? Lütfen çaresizlik duyuyorum Çalışmak için buna ihtiyacım var ...

+0

göstermek için bazı istek ve yanıt başlıklarını yakalamak Lütfen dinleyiciye jsessionid kullandığı AppCookieStickinessPolicies biri ilişkilendirme deneyin Çereziniz "siliniyor." –

+0

ki (yine, web etrafaçevirdiğimi GERÇEKTEN yeniyim) .. Ben sadece ... chrome çerez listeye bakarak ve AWSELB çerez sürekli değişiyor olduğu fark ediyorum nasıl emin – user1072692

+0

sizi Can Michael-sqlbot @ AWS CLI kullanarak yük dengeleyici yapılandırmanızın XML tanımını aşağıdaki gibi gönderin: 'aws elb define-load-balancers --load-balancer-name my-loadbalancer' –

cevap

0

Bu yapışkan şeyler nasıl çalışır? ELB sadece bir çerez AWSELB ekler (ya da başka bir isim olabilir; sadece tüm çerezleri arayabilir ve hangisinin size ait olmadığını görebilirsiniz). Bu çerez ayrıca bu isteğin hangi sunucuya gitmesi gerektiği bilgisine de sahiptir.

Şimdi, aynı tarayıcıdan gelen tüm isteklerin bu çerezi olacak ve ELB nereye yönlendirileceğini biliyor. Çalışmayacak fazla bir şey yok.

  1. bana çalıştığınız web sitesi/webapp gönderebilir:

    en aşağıdakileri yapalım? Kamuya açık ise. Çünkü ben bile hata ayıklayabilirim.

  2. Çerezlere izin verildiğinden emin olun; Ancak sorunuzdan bunun bir sorun olmadığını görüyoruz.

  3. Yapışkanlığı Düzenle üzerinde ayarladığınız son kullanma süresi nedir! ELB'de -> Yapışkanlığı Düzenle -> Radyo Seç butonunu tıklayın "Yük dengeleyicinin oluşturduğu çerez yapışkanlığını etkinleştirin" ve "EN ÖNEMLİ" Son kullanma sürelerini boş olarak bırakın.

  4. HTTPS kullanıyorsanız, HTTPS için de 3. Adımı tekrarlayın.

Çalışıyorsa bana bildirin; sadece bir sonraki saat için buradayım.

Neden XML'in neden ÇOK YÜKSEK LBCookieStickinessPolicies gösteriyor olduğunu unutmayın!

+0

Websitesi herkese açık değildir. Çerezlere izin verilir. Son kullanma süresi boş. HTTPS kullanılmıyor. – user1072692

+0

Bunu düşünüyordum; SADECE SORUMLUSUĞUNUN MÜMKÜN OLDUĞU SADECE MÜMKÜN OLDUĞUNU MEMNUN OLABİLİRSİNİZ .. ELB -> İZLEME -> GÜZEL KONUŞMACILAR -> GELECEĞE GİTMEK OLABİLİRSİNİZ. . Denemek istediğim başka bir şey de başka bir tarayıcı. – Deepak

+0

Sunucular kesintisiz 4 hafta boyunca sağlıklı olmuştur. Chrome, Edge ve Firefox ile çalışıyordum – user1072692

0

Farklı yapılandırmalarla oluşturulan çok farklı ilkeleriniz var, ancak yalnızca dinleyiciyle ilişkilendirilmiş biri var ve bu da zamana bağlı bir tanesi.dinleyici ile bir ilke ilişkilendirmek nasıl

"LoadBalancerDescriptions": [ 
    { 
     "Subnets": [ 
      "subnet-5c83aa39", 
      "subnet-6a778830", 
      "subnet-c41cdde8" 
     ], 
     "CanonicalHostedZoneNameID": "Z35SXDOTRQ7X7K", 
     "CanonicalHostedZoneName": "<ELB_NAME>-<redacted>.us-east-1.elb.amazonaws.com", 
     "ListenerDescriptions": [ 
      { 
       "Listener": { 
        "InstancePort": 5432, 
        "LoadBalancerPort": 5432, 
        "Protocol": "TCP", 
        "InstanceProtocol": "TCP" 
       }, 
       "PolicyNames": [] 
      }, 
      { 
       "Listener": { 
        "InstancePort": 8888, 
        "LoadBalancerPort": 8888, 
        "Protocol": "HTTP", 
        "InstanceProtocol": "HTTP" 
       }, 
       "PolicyNames": [ 
here ---->   "AWSConsole-LBCookieStickinessPolicy-<ELB_NAME>-1500995555135" 
       ] 
      } 
     ], 

dokümantasyon noktaları size: http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html#enable-sticky-sessions-duration

sadece

+0

Bunu denedi. Hala çalışmıyor. – user1072692