GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan mod_cluster di Apache

Modul Apache mod_cluster yang baru ditemukan tampaknya menawarkan banyak keuntungan dibandingkan dengan mod_jk yang dapat digunakan di lingkungan Apache/Jboss baru.

Fitur berikut tercantum:
– Konfigurasi dinamis pekerja httpd
– Perhitungan faktor keseimbangan beban sisi server
– Kontrol siklus hidup aplikasi web berbutir halus
– AJP adalah opsional
– Kompatibel menatap JBoss 4.2.x dan seterusnya

Tautan berguna lainnya:
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/

Petunjuk Memulai dapat ditemukan di:
http://docs.jboss.org/mod_cluster/1.2.0/html/Quick_Start_Guide.html#d0e357

Lingkungan PENGUJIAN:
Daftar komponen lingkungan pengujian:
1 VM dengan Apache &mod_cluster yang baru dikompilasi
2 VM dengan aplikasi JBoss yang identik

Membuat tiga VM sebagai berikut:
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

Pengujian manual akses langsung ke backend:
http://backend1.mydomain.srv:6003/sysnode/
http://backend2.mydomain.srv:6003/sysnode/

Buat Apache vhost baru sebagai berikut:
########################
# 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

Menambahkan konten /etc/hosts
192.168.100.1 vhost-01
Isi 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 sekarang telah diuji dengan ketentuan sebagai berikut:
– Ketika aplikasi selesai dijalankan, dibutuhkan sekitar 3-5 detik sebelum Apache mendaftarkan APP
– The permintaan yang dikirim ke Apache kemudian diseimbangkan dengan baik antara APP yang terdaftar dan dikirim ke custer APP yang ditetapkan vhost.

Upgrade langsung server APP backend:
Daftarkan keempat APP ke cluster yang sama dan uji kinerja pendaftaran APP baru dan pembatalan pendaftaran APP yang sedang berjalan.

Metode yang disarankan untuk melakukan peningkatan versi APP.
– Mulai aplikasi baru dan tunggu hingga semuanya aktif dan berjalan dengan baik.
– Permintaan baru akan diarahkan ke aplikasi lama dan baru.
– Nonaktifkan aplikasi lama dengan anggun dari dalam manajemen menghibur. Ini akan menghentikan permintaan baru untuk masuk ke aplikasi lama.
– Dari titik ini semua permintaan baru hanya akan dikirim ke aplikasi baru.
– Kemudian jumlah koneksi yang masih terbuka ke aplikasi lama akan secara dinamis pergi ditampilkan sampai aplikasi lama tidak mendapatkan permintaan baru.
– Bila angka ini untuk semua aplikasi lama turun ke '0', Anda dapat menghapus aplikasi lama.

CATATAN 1:
Selama pengujian, kami mengalami masalah untuk mengalihkan SSID lama ke node baru ketika node lama yang melayani SSID tidak lagi tersedia.
Mod_cluster membuat kesalahan 'Layanan tidak tersedia'.

Untuk memperbaikinya, properti JBOSS berikut (postSetEnv.sh) telah ditetapkan:
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"

Berikut adalah set lengkap properti yang terkait dengan 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)

NILAI TETAP
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. Bagaimana cara menambahkan header http menggunakan Plesk

  2. melakukan permintaan HTTP dengan cURL (menggunakan PROXY)

  3. Buat permintaan https menggunakan soket di linux

  1. Menggunakan HTTPS sebagai backend proxy di Apache 2.4

  2. Centos – Instal Apache 2.4 Pada Centos Menggunakan Yum?

  3. Bagaimana cara mengurai header HTTP menggunakan Bash?

  1. Bagaimana Mengkompilasi Ulang Apache Menggunakan EasyApache dari WHM?

  2. Bagaimana cara mengarahkan ulang http ke https menggunakan .htaccess?

  3. Nonaktifkan kompresi HTTP di server Apache