wir haben eine Kombination aus Servern,
welche für die Abarbeitung von Vorgängen gedacht sind.
Aufgrund von Ausfallsicherheit möchten wir mehrere Worker zur Verfügung stehen haben.
Die Aufrufe der projektspezifischen Vorgänge sollen an eine zentrale Adresse gehen.
app ist eine Applikation, welche duch Aufrufe von
http://server0:85/app/?project=PROJEKT1&user=USER1&Beleg=1111111111&POS=000010
http://server0:85/app/?project=PROJEKT2&user=USER2&Beleg=2222222222&POS=000022
http://server0:85/app/?project=PROJEKT3&user=USER3&Beleg=1111111111&POS=000010
http://server0:85/app/?project=PROJEKT4&user=USER4&Beleg=1111111111&POS=000010
projektspezifisch aufgerufen werden soll und noch weitere Parameter übernehmen soll.
Antworten der app sehen teilweise so aus:
http://server0:85/app/content.php?action=GetHtmlCode&cid=6#Maske1
Die Projekte Projekt1, Projekt2, Projekt3, Projekt4
stehen nicht immer und auf allen Servern zur Verfügung.
Projekt1 und Projekt2 stehen nicht auf server1 zur Verfügung.
Projekt3 und Projekt4 stehen nicht auf server3 zur Verfügung.
Leider funktioniert unsere <httpd.conf> nicht so, wie wir es uns wünschen würden.
Teilweise startet die app nicht.
Es wäre schön, wenn sich ein Konfigurationsprofi unsere httpd.conf einmal anschauen könnte
und uns weiterhelfen bzw. auch Alternativen zur Umsetzung aufzeigen könnte.
Vielen Dank schon einmal an denjenigen, der sich die Mühe machen sollte,
sich hier reinzudenken!
Grüße Ralf
------------------------------------------------------------------------------
Serverkonfigurationen:
(alle physisch getrennt, unterschiedliche Namen und IP, alle eigene Apache2.4 )
Server0: (Proxy und LoadBalancer)
Servername: server0
ServerPort: 85
DocumentRoot: C:/apache24/htdocs
Server1: (Worker)
Servername: server1
ServerPort: 90
DocumentRoot: C:/apache24/htdocs/app
Server2: (Worker)
Servername: server2
ServerPort: 90
DocumentRoot: C:/apache24/htdocs/app
Server3: (Worker)
Servername: server3
ServerPort: 90
DocumentRoot: C:/apache24/htdocs/app
httpd.conf Ausschnitt:
- Code: Select all
#----------------------------------------------------------------------
# make it sticky
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
#----------------------------------------------------------------------
# rewrite engine
RewriteEngine on
RewriteCond %{QUERY_STRING} ^project=PROJEKT1 [NC]
RewriteRule "^/(.*)$" "balancer://projekt1" [P,L]
ProxyPassReverse / balancer://projekt1
RewriteCond %{QUERY_STRING} ^project=PROJEKT2 [NC]
RewriteRule "^/(.*)$" "balancer://projekt2" [P,L]
ProxyPassReverse / balancer://projekt2
RewriteCond %{QUERY_STRING} ^project=PROJEKT3 [NC]
RewriteRule "^/(.*)$" "balancer://projekt3" [P,L]
ProxyPassReverse / balancer://projekt3
RewriteCond %{QUERY_STRING} ^project=PROJEKT4 [NC]
RewriteRule "^/(.*)$" "balancer://projekt4" [P,L]
ProxyPassReverse / balancer://projekt4
#----------------------------------------------------------------------
# balancer(cluster)
<Proxy balancer://projekt1>
#BalancerMember http://server1:90/app/ route=1
BalancerMember http://server2:90/app/ route=2
BalancerMember http://server3:90/app/ route=3
ProxySet lbmethod=byrequests
# make it sticky
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://projekt2>
#BalancerMember http://server1:90/app/ route=1
BalancerMember http://server2:90/app/ route=2
BalancerMember http://server3:90/app/ route=3
ProxySet lbmethod=byrequests
# make it sticky
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://projekt3>
BalancerMember http://server1:90/app/ route=1
BalancerMember http://server2:90/app/ route=2
#BalancerMember http://server3:90/app/ route=3
ProxySet lbmethod=byrequests
# make it sticky
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://projekt4>
BalancerMember http://server1:90/app/ route=1
BalancerMember http://server2:90/app/ route=2
#BalancerMember http://server3:90/app/ route=3
ProxySet lbmethod=byrequests
# make it sticky
ProxySet stickysession=ROUTEID
</Proxy>
#----------------------------------------------------------------------
# balancer-manager
<Location "/balancer-manager">
SetHandler balancer-manager
Require all granted
</Location>