GNU/Linux >> Znalost Linux >  >> Linux

Použití mod_cluster v Apache

Zdá se, že nově objevený modul Apache mod_cluster nabízí mnoho výhod ve srovnání s mod_jk který by mohl být použit v novém prostředí Apache/Jboss.

Jsou uvedeny následující funkce:
– Dynamická konfigurace pracovníků httpd
– Výpočet faktoru bilance zátěže na straně serveru
– Jemná kontrola životního cyklu webové aplikace
– AJP je volitelný
– Kompatibilní s pohledem na JBoss 4.2.x a novější

Další užitečné odkazy:
http://www.jboss.org/mod_cluster
http://anonsvn.jboss.org/repos/mod_cluster/tags/release/
http://docs.jboss.org /mod_cluster/1.2.0/html/

Pokyny ke spuštění naleznete na adrese:
http://docs.jboss.org/mod_cluster/1.2.0/html/Quick_Start_Guide.html#d0e357

TESTOVACÍ prostředí:
Seznam součástí testovacího prostředí:
1 VM s nově zkompilovaným Apache &mod_cluster
2 VM s identickou aplikací JBoss

Vytvořili tři virtuální počítače následovně:
Hostname Function IP HTTP-Port AJP-Port
testweb APACHE 192.168.100.1 80 n/a
backend1 JVM1 192.168.100.2 6003 6001
backend2 JVM2 192.168.100.3 6003 6001

Ruční testování přímého přístupu k backendům:
http://backend1.mydomain.srv:6003/sysnode/
http://backend2.mydomain.srv:6003/sysnode/

Vytvořte nového Apache vhost následovně:
########################
# Relevant part of httpd.conf
#######################
# Extra modules needed for mod_cluster
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule advertise_module modules/mod_advertise.so

Přidání k obsahu /etc/hosts
192.168.100.1 vhost-01
Obsah vhosts.conf
LogLevel debug
Listen vhost-01:80
NameVirtualHost vhost-01:80
#
#------------ Directives for mod_cluster only---------------
<ifmodule proxy_cluster_module>
# Displays the first 100 sessions IDs in manager interface
# Turn on the session ID display of 100 in the mod_cluster-manager page
MaxsessionId 10000
CreateBalancers 2
MaxContext 10000
</ifmodule>
#
# ------ Build the MCPM Connector and advertize connector on Web server
<ifmodule manager_module>
Listen vhost-01:8081
<Virtualhost vhost-01:8081>
# MCPM configuration
KeepAliveTimeout 60
MaxKeepAliveRequests 0
EnableMCPMReceive
#
CustomLog /www/http_logs/MCPM_connector_acc.log j_common
ErrorLog /www/http_logs/MCPM_connector_err.log
</virtualhost>
</ifmodule>
#
#---------- Managemant console interface ----------------------
<ifmodule manager_module>
Listen vhost-01:8000
<Virtualhost vhost-01:8000>
# mod_cluster Manager interface
<Location /mcm>
SetHandler mod_cluster-manager
Order deny,allow
Deny from all
Allow from env=IP_ALLOWED
# Displays verbose extra info about the mod_cluster config
AllowDisplay On
</Location>
CustomLog /www/http_logs/cluster_manager_acc.log j_common
ErrorLog /www/http_logs/cluster_manager_err.log
</virtualhost>
</ifmodule>
#
# --------------------- CLIENT Virtual Host 1----------------------------
#
# http://test1.mydomain.srv
<Virtualhost vhost-01:80>
ServerName test1.mydomain.srv
DocumentRoot /www/htdocs1
#
#------------ Directives for mod_cluster ---------------
<ifmodule proxy_cluster_module>
ProxyRequests Off
UseCanonicalName On
ProxyPreserveHost On
# Allowing all proxy requests
<proxy balancer://jboss.web1>
AddDefaultCharset off
Order deny,allow
Allow from All
</proxy>
ProxyPass / balancer://jboss.web1/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://jboss.web1/
</ifmodule>
#
CustomLog /www/http_logs/test1.mydomain.srv_acc.log j_common
ErrorLog /www/http_logs/test1.mydomain.srv_err.log
</virtualhost>
#
# --------------------- CLIENT Virtual Host 2----------------------------
# http://test2.mydomain.srv
<virtualhost vhost-01:80>
ServerName test2.mydomain.srv
DocumentRoot /www/htdocs2
#
#------------ Directives for mod_cluster ---------------
<ifmodule proxy_cluster_module>
ProxyRequests Off
UseCanonicalName On
ProxyPreserveHost On
# Allowing all proxy requests
<proxy balancer://jboss.web2>
AddDefaultCharset off
Order deny,allow
Allow from All
</proxy>
ProxyPass / balancer://jboss.web2/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://jboss.web2/
</ifmodule>
#
CustomLog /www/http_logs/test2.mydomain.srv_acc.log j_common
ErrorLog /www/http_logs/test2.mydomain.srv_err.log
</virtualhost>

Mod-cluster byl nyní testován za následujících podmínek:
– Po dokončení spouštění aplikace trvá asi 3–5 sekund, než Apache APP zaregistruje
– požadavky odeslané do Apache byly poté mezi registrovanými aplikacemi dobře vyváženy a odeslány do custeru aplikací přiřazených vhost.

Živý upgrade serverů backendové aplikace:
Zaregistrujte všechny 4 aplikace do stejného clusteru a vyzkoušejte, jak probíhá registrace nových aplikací a zrušení registrace spuštěných aplikací.

Metoda navržená pro upgrade APP.
– Spusťte nové aplikace a počkejte, až budou všechny v pořádku.
– Nové požadavky budou směrovány do starých a nových aplikací.
– V rámci správy vypněte staré aplikace. řídicí panel. Tím zabráníte tomu, aby nové požadavky přicházely do starých aplikací.
– Od tohoto okamžiku budou všechny nové požadavky odesílány pouze do nových aplikací.
– Poté bude počet stále otevřených připojení ke starým aplikacím dynamicky klesat zobrazeno, dokud staré aplikace neobdrží žádné nové požadavky.
– Když tato čísla pro všechny staré aplikace klesnou na „0“, můžete staré aplikace odebrat.

POZNÁMKA 1:
Během testu jsme měli problémy s přesměrováním starého SSID na nové uzly, když starý uzel obsluhující SSID již nebyl dostupný.
Mod_cluster vytvářel chybu „Služba není k dispozici“.

K vyřešení tohoto problému byly nastaveny následující vlastnosti JBOSS (postSetEnv.sh):
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"

Zde je úplná sada vlastností souvisejících s mod_cluster:
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.balancer=jboss.web1"
(value here has to be modified to a node name variable)
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.proxyList=192.168.100.1:8081"
(values to be set to the proper web server's internal LAN IP)

PEVNÉ HODNOTY
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.enable=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.advertise=false"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.excludedContexts="
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"


Linux
  1. Jak přesměrovat http na https pomocí .htaccess?

  2. provádění požadavků HTTP pomocí cURL (pomocí PROXY)

  3. Proveďte https požadavek pomocí socketů na linuxu

  1. Použití HTTPS jako proxy backend v Apache 2.4

  2. Centos – Nainstalujte Apache 2.4 na Centos pomocí Yum?

  3. Jak nastavit GeoIP Block pomocí Apache

  1. Jak přidat hlavičky http pomocí Plesk

  2. Použití WGET ke spuštění cronjob PHP

  3. Jak analyzovat hlavičky HTTP pomocí Bash?