Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 2945|Yanıt: 0

Nginx yük dengelemesi, arka uç SESSION tek nokta sorununu çözüyor

[Bağlantıyı kopyala]
Yayınlandı 10.01.2023 20:38:39 | | | |
Gereksinimler: Tüm isteklerin zamanlamasından sorumlu olan ters proxy oluşturmak için Nginx kullanın, arka uç ASP.NET MVC tarafından geliştirilir ve birden fazla farklı sunucuya dağıtılır, böylece bir arka uç kümesi oluştururOturum bilgileri paylaşılamaz, bu da bazı taleplerin doğru şekilde işlenmemesine neden olur。 Aşağıdaki sorunlar ortaya çıkacaktır:





ASP.NET Web sitesi şu şekilde adlandırılabilir:

asp.net oturum paylaşımı (StateServer aracılığıyla)
https://www.itsvse.com/thread-6613-1-1.html

. Net dağıtık mimari: Redis tabanlı oturum paylaşımı
https://www.itsvse.com/thread-5189-1-1.html

Yaygın kullanılan çözümler şunlardır:

SESSION'u depolamak için veritabanını kullanın

Her sunucunun aynı oturumu kullanması gerektiğinden, oturumu aynı veritabanında depolayabiliriz, her eriştiğimizde veritabanına gidip bu oturumun olup olmadığını veya süresinin dolup olmadığını kontrol ederiz ve ardından birden fazla sunucunun oturumunu senkronize edebiliriz;

Liyakat:Bu yöntemi kullanmak basit, pratik ve başlamak kolaydır;

Eksiklik:Veritabanını oturumları senkronize etmek için kullanmak, veritabanının ameliyat oranını artırır ve veritabanı üzerindeki yükü artırır. Aynı zamanda, her erişimin talepleri engellemesi ve veritabanını sorgulaması gerekir; bu da ek bir erişim katmanı ve veritabanı oturum süresinin boşa gitmesine yol açar.


SESSION'u depolamak için Memcache veya Redis gibi önbellek mekanizması kullanın

Memcache veya Redis gibi dağıtık önbellek mekanizmalarının kullanılması, birçok büyük ölçekli projede yük dengeleme ve senkron oturumlar için popüler bir çözümdür. Projenin prensibi, memcache veya redis önbelleğini aynı yerde kullanması, kullanıcı giriş yaptığında oturumun önbellekte saklanması ve projenin hangi sunucusuna erişilirse girilsin, oturum önbelleği aynı yerden alınarak oturum senkronizasyonunun kolayca gerçekleşmesi;

Liyakat:Oturumları senkronize etmek için önbellek kullanmak veritabanına yük artırmaz, ayrıca oturumun var olup olmadığını manuel olarak değerlendirmenize gerek kalmaz, bu da bazı iş mantığını ortadan kaldırır.

Eksiklik:Memcache veya Redis, belleği birçok depolama bloğu spesifikasyonuna böler ve boyutları olan bloklar da vardır; bu da Memcache veya Redis'in belleği tam olarak kullanamadığını belirler; bu da bellek parçalanmasına yol açar ve depolama blokları yetersizse bellek taşması da meydana gelir.

Nginx'te ip_hash deseninden faydalanın

Bu teknik, oturum tutma olarak da bilinir ve nginx'te size şunları sağlayan ip_hash teknolojidirBelirli bir IP adresinden gelen talepler aynı arka uç uygulama sunucusuna sabitlenir, böylece bu IP altında bir istemci ve bir backend kararlı bir oturum oluşturabilir.

(Ancak bir dezavantaj da vardır; operatörün ağı daha değişken ve kararsızsa,Çıkış IP'si dinamiktirEvet, bu yöntemle ilgili sorunlar olacak. )

Test yöntemi, docker temelli iki site açmaktır,/data/testsite/a ve /data/testsite/b dizinleri altında yeni bir index.html dosyası oluşturmanız gerekir, komut şöyledir:

Aşağıda gösterildiği gibi bir tarayıcı üzerinden erişim:



Docker tabanlı yeni bir nginx konteyner oluşturursanız, ip_hash teknolojisi kullanmadan, istek aşağıdaki şekilde gösterildiği gibi farklı arka uç sunuculara gönderilebilir:



ip_hash teknolojisini kullanarak, aşağıdaki yapılandırmayla yeni bir /data/testsite/nginx.conf dosyası oluşturun:

Docker başlatma komutu aşağıdaki gibidir:




Yapışkan modülde danışılabilen çerez tabanlı oturum tutma maddesi çıkarılmıştır

Nginx konfigürasyonu:Bağlantı girişi görünür.

(Son)




Önceki:【Practical Action】Use Docker to build a Gitlab private repository
Önümüzdeki:IIS URL Yeniden Yazma Modülü Kural Temizleme
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com