Nginx + Tomcat yapılandırması yük dengeleme kümesi

1. Merhaba dünya

(1) Ön çevresel hazırlık

Tomcat'in iki tane sıkıştırılmamış versiyonunu hazırlayın, aynı anda iki tomcat nasıl başlatılır, lütfen diğer makaleme bakın "Bir makinede aynı anda birden fazla tomcat başlatma".

(2) nginx'in sıkıştırılmış sürümünü nginx resmi web sitesinden indirin.

(3) Basit bir web projesi oluşturun. Hangi tomcat'e erişildiğini görsel olarak ayırt etmek için sayfaya 8081 ve 8082'yi işaretleyin.

(4) Sırasıyla karşılık gelen tomcat'e konuşlandırın. Gosterildigi gibi:

2. nginx'i yapılandırın

Nginx-1.10.1conf yolunu girin ve yapılandırma dosyası nginx.conf'u değiştirin.

1. Sunucu grubunu yapılandırın ve http {} düğümleri arasında yukarı akış yapılandırmasını ekleyin. (Localhost yazmamaya dikkat edin, aksi takdirde erişim hızı çok yavaş olacaktır)

yukarı akış nginxDemo {

sunucu 127.0.0.1:8081; #Sunucu adresi 1

sunucu 127.0.0.1:8082; #Sunucu adresi 2

}

2. nginx'in izlediği 80 port numarasını 8080 olarak değiştirin.

server {

8080 dinle;

...

}

3. {} konumunda, ters proxy adresini yapılandırmak için proxy_pass kullanın; burada "http: //" ihmal edilemez ve aşağıdaki adres, ilk adım yukarı akışta tanımlanan adla tutarlı olmalıdır.

yer / {

kök html;

index index.html index.htm;

proxy_pass http: // nginxDemo; # Yön proxy adresini yapılandırın

}

Aşağıda gösterildiği gibi:

3. nginx ve tomcat'i başlatın, ziyaret edin

Ben bir Windows sistemiyim, bu yüzden nginx-1.10.1 dizinindeki nginx.exe'ye doğrudan çift tıklayın.

Görev yöneticisinde görüntülenebilir

Son olarak, adresi tarayıcıya girin: http: // localhost: 8080 / nginxDemo / index.jsp, her ziyaret sırayla tomcat'i ziyaret edecektir (F5 yenileme çalışmazsa, fare işaretçisini adres çubuğuna koymanız önerilir, Enter'a tıklayın ).

Bu noktada, çok basit bir yük dengeleme yapılandırması tamamlandı, çok basit mi, O (_) O haha ~

İki, nginx yük dengeleme stratejisi

1. Anket (varsayılan)

Her web isteği, farklı arka uç sunuculara kronolojik sırayla tek tek tahsis edilir.Arka uç sunucusu çalışmıyorsa otomatik olarak ortadan kaldırılabilir.

yukarı akış nginxDemo {

sunucu 127.0.0.1:8081;

sunucu 127.0.0.1:8082;

}

2. En az bağlantı

Web isteği, en az bağlantı sayısına sahip sunucuya iletilecektir.

yukarı akış nginxDemo {

less_conn;

sunucu 127.0.0.1:8081;

sunucu 127.0.0.1:8082;

}

3. Ağırlık

Yoklama olasılığını belirtin. Ağırlık, erişim oranıyla orantılıdır. Arka uç sunucu performansının düzensiz olması durumunda kullanılır. Ağırlık varsayılan olarak 1'dir.

# Sunucu A ve sunucu B'nin erişim oranı: 2-1; Örneğin, 3 istek varsa, ilk ikisi A'yı ve üçü B'yi ziyaret eder. Diğer kurallar yoklamayla aynıdır.

yukarı akış nginxDemo {

sunucu 127.0.0.1:8081 ağırlık = 2; #Sunucu A

sunucu 127.0.0.1:8082; #Sunucu B

}

4. ip_hash

Her istek, erişim ipinin hash değerine göre tahsis edilir, böylece aynı istemciden gelen sürekli web istekleri, işlem için aynı sunucuya dağıtılır ve bu da oturum sorununu çözebilir. Arka plan sunucusu kapalı olduğunda, otomatik olarak diğer sunuculara atlayacaktır.

yukarı akış nginxDemo {

ip_hash;

sunucu 127.0.0.1:8081 ağırlık = 2; #Sunucu A

sunucu 127.0.0.1:8082; #Sunucu B

}

Ağırlık tabanlı yük dengeleme ve ip_hash tabanlı yük dengeleme bir arada kullanılabilir.

5. url_hash (üçüncü taraf)

url_hash, nginx'in kendisi tarafından desteklenmeyen ve yamalanması gereken üçüncü taraf bir nginx modülüdür.

Nginx, istekleri ziyaret edilen URL'lerin karma sonuçlarına göre dağıtır, böylece her URL aynı arka uç sunucusuna yönlendirilir; bu, arka uç sunucusu bir önbellek sunucusu, bir dosya sunucusu veya statik bir sunucu olduğunda daha etkilidir. Dezavantajı, arka uç sunucusu çalışmadığında url_hash'in diğer önbellek sunucularına otomatik olarak atlamaması, ancak kullanıcıya 503 hatası döndürmesidir.

yukarı akış nginxDemo {

sunucu 127.0.0.1:8081; #Sunucu A

sunucu 127.0.0.1:8082; #Sunucu B

hash $ request_url;

}

6. adil (üçüncü taraf)

İstek, arka uç sunucusunun yanıt süresine göre tahsis edilir ve kısa yanıt süresine öncelik verilir.

yukarı akış nginxDemo {

sunucu 127.0.0.1:8081; #Sunucu A

sunucu 127.0.0.1:8082; #Sunucu B

adil;

}

3. Küme / dağıtılmış ortamda oturum işleme stratejisi

Birçok arkadaşım oturum yönetimi sorunlarından bahsettiği için, bir küme / dağıtılmış ortamda bir oturum işleme stratejisi yazmaya karar verdim.

1. Neden seans ile ilgilenmelisiniz?

Bu problem çoğu arkadaşım tarafından bilinmelidir.Bir küme veya dağıtılmış ortam kurduktan sonra, herhangi bir şey yapmazsanız, web sitesi sık sık kullanıcıların oturum açmadığını gösterecektir. Örneğin, kümede A ve B olmak üzere iki sunucu vardır.Bir kullanıcı web sitesini ilk kez ziyaret ettiğinde, Nginx, kullanıcı talebini A sunucusuna dağıtır. Bu sefer, sunucu A, kullanıcı için bir oturum oluşturur. Kullanıcı web sitesini ikinci kez ziyaret ettiğinde, varsayalım Nginx, kullanıcı isteklerini B sunucusuna dağıtır. Şu anda, B sunucusu kullanıcının oturumuna sahip değildir, bu nedenle kullanıcı oturum açmaz, bu da kullanıcılar için dayanılmaz bir durumdur.

Bu nedenle, bir küme / dağıtılmış ortam kurduktan sonra, dikkat edilmesi gereken konulardan biri, kullanıcı erişimi tarafından oluşturulan oturumla, yani oturum paylaşım mekanizmasıyla nasıl başa çıkılacağıdır.

Oturum ile başa çıkma şeklini kabaca üç türe ayırıyoruz: Oturum saklama (bazıları yapışkan Oturum olarak adlandırılır), Oturum kopyalama ve Oturum paylaşımı.

2. Oturum saklama (veya yapışkan Oturum)

Oturum saklama (oturum saklama), kullanıcıyı belirli bir sunucuya kilitlemek içindir. Örneğin, yukarıdaki örnekte, kullanıcı ilk kez talep ettiğinde, yük dengeleyici (Nginx) kullanıcının isteğini A sunucusuna dağıtır. Yük dengeleyici (Nginx), Oturum bekletmeyi ayarlarsa, kullanıcının sonraki her isteği Sunucu A'ya dağıtım, kullanıcı ve A sunucusunu birbirine yapıştırmaya eşdeğerdir Bu, oturum saklama ilkesidir. Oturum saklama şeması, tüm yük dengeleyicilerde karşılık gelen uygulamalara sahiptir. Ve bu, Oturum problemini çözmek için yük dengeleme katmanındadır.

Avantajlar: çok basit, oturumda herhangi bir işlem yapmaya gerek yok.

Dezavantajlar: 1. Dengesiz sorumluluk: Oturum tutmanın kullanılması nedeniyle, yük dengesinin garanti edilemeyeceği açıktır.

2. Hata toleransı eksikliği: Bir arka uç sunucusu kapanırsa, bu sunucunun oturumu kaybolur ve bu hizmet isteğine atanan kullanıcının yine de yeniden oturum açması gerekir, bu nedenle sorun tamamen çözülmez.

Uygulanabilir senaryolar: Bir arızanın müşteriler üzerinde daha az etkisi vardır; sunucu arızası, düşük olasılıklı bir olaydır.

Uygulama yöntemi: Örnek olarak Nginx'i alın, sabit bir oturum elde etmek için yukarı akış modülündeki ip_hash özniteliğini yapılandırın. Ayrıntılar için lütfen bölüm 2.4'e bakın.

3. Oturum kopyası

Oturum tutmanın hataya dayanıklılık eksikliklerini göz önünde bulundurarak, kullanıcının Oturum bilgilerinin bir kopyasını tüm sunuculara kaydedebiliriz. Her sunucudaki Oturum bilgilerini diğer sunuculara kopyalamanın bu yöntemine oturum çoğaltma denir. Herhangi bir sunucudaki oturum değiştiğinde, düğüm oturumun tüm içeriğini serileştirecek ve ardından oturum senkronizasyonunu sağlamak için diğer sunucuların oturuma ihtiyaç duyup duymadığına bakılmaksızın diğer tüm düğümlere yayınlayacaktır.

Avantajlar: Hataya dayanıklıdır, sunucular arasındaki oturumlar gerçek zamanlı olarak yanıt verebilir.

Dezavantajlar: Oturum yayınlarını üyelerle senkronize etmek, ağ yükü üzerinde belirli bir baskı oluşturacaktır;

Oturum sayısı büyükse, özellikle oturumda kaydedilen nesneler büyük olduğunda ve nesneler hızla değiştiğinde ağ tıkanıklığına neden olabilir ve sunucu performansını yavaşlatabilir; bu nedenle, uygulamanın yatay genişlemesi sınırlanır;

Oturum içeriğinin serileştirilmesi de sistem performansını tüketir;

Uygulama yöntemi sınırlıdır ve aynı bileşenler arasında uygulanmalıdır (örneğin, tomcat kullanıyorsanız, tomcat all kullanmalısınız).

Uygulama yöntemi: Tomcat'in kendisi zaten bu işlevi destekliyor, resmi belgelere başvurabilirsiniz. Resmi web sitesindeki giriş çok ayrıntılıdır ve burada tanıtılmayacaktır. Ayrıca bu işleme yöntemi, büyük kümelerdeki üretim ortamları için önerilmez.

İki tür tomcat oturum çoğaltması vardır:

Global replikasyon (DeltaManager): Oturumdaki değiştirilen bilgileri kümedeki diğer tüm düğümlere kopyalayın.

Global olmayan çoğaltma (BackupManager): Oturumu belirlenmiş bir yedekleme düğümüne kopyalar.

4. Oturum paylaşımı

Memcached, Redis, DB vb. Gibi oturum paylaşımını gerçekleştirmenin birçok yolu vardır; temel fikir tomcat'in oturum saklama mekanizmasını oturumu seri hale getirmek ve memcached'de depolamak için değiştirmektir.

Oturum paylaşımı iki mekanizmaya ayrılabilir:

Sabit Oturum işleme yöntemi:

Yerel Tomcat oturumu ana oturumdur ve Memcached'deki oturum bekleme oturumudur. Kullanıcı ziyaret ettiğinde, oturum önce tomcat'te oluşturulur ve ardından oturumun bir kopyası ilgili memcahed'e yerleştirilir. Memcache yalnızca yedek bir rol oynar ve tomcat üzerinde okur ve yazar. Belirli bir tomcat askıda kaldığında, küme kullanıcının bekleme tomcat'e erişimini bulur ve daha sonra, çerezde depolanan SessionId'ye göre oturumu bulur. Bulunmazsa, oturumu almak için karşılık gelen memcached'e gider ve ardından beklemeye kopyalar. tomcat.

Yapışkan Olmayan Oturum işleme yöntemi:

Yerel Tomcat oturumu bir geçiş oturumudur ve Memcached, etkin ve yedek oturumdur. Oluşturulan oturumlar memcached'e yazılır ve tüm okumalar memcached'den okunur.Tomcat'in kendisi oturumları saklamaz.

Uygulama yöntemi 1: Tomcat + Nginx + MSM + memcached

a. İlgili jar paketlerini tomcat / lib dizinine yerleştirin:

Java memcached istemcisi: spymemcached.jar

MSM: 1. Çekirdek paket, memcached-session-manager- {version} .jar

2. Tomcat sürümüne karşılık gelen jar paketi: memcached-session-manager-tc {tomcat-version} - {version} .jar

Serileştirme araç takımı: isteğe bağlı kryo (daha hızlı olduğu söylenir), javolution, xstream, vb. Ayarlanmadığında jdk varsayılan serileştirmeyi kullanın.

b. Tomcat dosyasını tomcat \ conf \ context.xml ekleyin:

Yapışkan tedavi yöntemi:

< Yönetici className = "de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes = "n1: 192.168.2.61: 11211, n2: 192.168.2.66: 11211"

requestUriIgnorePattern = ". * \. (ico | png | gif | jpg | css | js) $"

transcoderFactoryClass = "de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/ >

Yapışkan olmayan işleme yöntemi:

< Yönetici className = "de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes = "n1: 192.168.2.61: 11211, n2: 192.168.2.66: 11211"

sticky = "yanlış"

lockMode = "auto"

requestUriIgnorePattern = ". * \. (ico | png | gif | jpg | css | js) $"

sessionBackupAsync = "false"

sessionBackupTimeout = "100"

transcoderFactoryClass = "de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/ >

TOPFIRE Wrangler 6.4L Pickup Edition Ultimate Evolution
önceki
Görünüşü Borui'den daha iyi ve Lavida ve Sagitar'dan daha gelişmiş. Bu orta seviye arabayı 100.000'e satın alabilirsiniz.
Sonraki
Süt bloğu popüler oyunun son sürümünü iphone8iphone x'e indirin
Merkezi devlete ait teşebbüsün otomobil departmanının yeniden yapılandırılması büyük bir dalga başlattı.
Nükleer enerji büyük faydalar getirdi, Nuggets için fırsat burada
Salla, P-resim makyajı fotoğraf hileleri! Tek tıklamayla makyaj temizleyici burada, İnternet dünyasının ünlü dünyasının parlak gökyüzü uzakta olacak mı?
Ravent küçük gözler sevimli MUZ kaplama JEEP Wrangler
Harman ses + 360 panoramik görüntüler, üst eşleştirme 110.000'den az, H6 ne kadar iyi satarsa satsın panikliyorum
ngxtop: Komut satırında Nginx'in gerçek zamanlı izlenmesinin bir yapısı
Otonom Sürüş ve Akıllı Ağ Kurmada Atılım: Teknolojiye ek olarak, başka unsurlar da var
BMW'nin gücü Tiguan'dan bir tur daha büyük, Mavericks'ten daha yüksek, 16 Marriott otomobili, hala Ankewei mi alıyor?
Kara bombardıman uçağı Wrangler Ultimate Evolution B-24 Kurtarıcı
Model 3 burada, Tesla'nın ayakları "cehennem" veya "cennet"
6 ana web çerçevesinin avantaj ve dezavantajlarının karşılaştırılması
To Top