mod_proxy vs mod_proxy_ajp vs mod_jk


9

Aşağıdaki ortamlardan göçe hazırlanıyoruz:

Apache 2.0.2 - AJP -> JBoss4.2.2

için

Apache 2.2.3 - ??? -> JBoss 5.1.0

İkisine nasıl katılırsınız?

Seçenekler:

  1. Klasik AJP (Apache için mod_jk oluşturma anlamına gelir)
  2. mod_proxy (HTTP isteklerini JBoss'a iletme)
  3. mod_proxy_ajp

Seçenek 2 şu anda en popüler çözümdür, çünkü JBoss'un AJP'den yanıtlarını çevirmeye artık gerek olmadığı için daha az işlem anlamına geliyor ve CPU zamanı altyapımızda yakından takip etmemiz gereken bir şey. Seçenek 2 ve 3 ayrıca Red Hat tarafından desteklenen Apache derlemesi ile birlikte gelir.

Şu anda bize seçenek 1 için gittiğimizi göremiyorum, çünkü seçenek 3 ile AJP'yi 'ücretsiz' alıyoruz.

Bu nedenle, seçenek 2 ve 3'ün artıları ve eksileri nelerdir? CPU yüküyle ilgili endişe gerçekten endişelenmemiz gereken bir şey mi? İkili verileri (AJP trafiği) işlemede kaybettiğimiz şey, azaltılmış bant genişliği ve IO'ya geri dönüyor muyuz?

Altyapımız, özel bir bulutta sanallaştırılan aynı RHEL 5 makinesinde 9'a kadar ayarlanmış JBosses'e (ancak genellikle yaklaşık yarısı) kadar Apache ön cephesi olacak .

Herhangi bir işaretçi / tavsiye için şimdiden teşekkür ederiz.

Zengin

Yanıtlar:


8

2 mod_proxy_http, istemciden Host üstbilgisine ihtiyacınız yoksa.

Klasik mod_jk'i tavsiye etmiyorum çünkü işlevselliği mod_proxy_ajp ile değiştirildi ve kendinizin de söylediği gibi, bu modülü kendiniz oluşturup bakımını gerektiriyor.

Ben mod_proxy_http çok temiz bir çözüm olduğunu düşünüyorum ve ajp resim dışına alır. Ancak, ajp'den http'ye geçmek için birkaç uyarıdan haberdar olmalısınız. Sunucu başlıklarına tam olarak apache (Ana bilgisayar başlığı dahil) tarafından alındıkları gibi erişmeniz gerekiyorsa, ajp'yi kullanmalısınız. JBoss, orijinal istemciden değil, apache'den gelen yeni bir http isteği görecektir. Yalnızca istemcinin uzak IP'sine ihtiyacınız varsa, bunu apache'nin yeni isteklerde ayarlayabileceği özel bir başlık ile alabilirsiniz. Ancak, uygulama katmanından sanal hosting yapıyorsanız, ajp ile daha iyi durumdasınız.

Performans söz konusu olduğunda, ajp veya http, JBoss tarafından bazı işlemler ve bazı yerel soket TCP trafiği gerektirir. Hangisinin daha verimli olduğunu görmek için her ikisini de denemeniz gerekecek, ancak toplam sunucu yükünün çok küçük bir yüzdesi olduğunu düşünüyorum. Http daha karmaşık bir protokoldür ve ajp özellikle web ve uygulama katmanları arasında verimli bir şekilde kullanılmak üzere tasarlanmıştır, bu nedenle teorik olarak ajp muhtemelen daha iyidir. Bununla birlikte, http'nin Tomcat uygulama sunucusu hattı dışında genellikle daha iyi desteklendiğini buldum.

Mod_proxy_ajp ve mod_proxy_http kullanıyorum ve hiçbir sorun yaşamadım.


HostBaşlık kullanmak doğru olmadığını geçirilir alacakProxyPreserveHost On
Derf

Apache mod_proxy ile çalışırken httpd.apache.org/docs/2.4/mod/mod_proxy.html#x-headers adresine bakın . RemoteIpValve uygulamasını Tomcat Servlet'inizin bir parçası olarak yapılandırırsanız, uygulama kodunuz şeffaf olarak çoğu bilgiyi alabilirsiniz tomcat.apache.org/tomcat-8.0-doc/config/…
Scott Markwell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.