[erstmal erledigt] Problem mit Varnish (vHosts werden ignoriert)
am 02.02.2011 - 15:53 Uhr in
Hallo Freunde,
ich habe mir eben nach dieser Anleitung http://groups.drupal.org/pantheon/mercurywiki Varnish installiert.
Das hat auch alles geklappt - ich habe nun allerdings das Problem, dass meine vhosts ignoriert werden.
Ich hatte bisher 2 Domains auf 2 verschiedene Verzeichnisse gelegt - für jede Domain existiert eine vhost-Datei. Bevor Varnish installiert wurde, wurden die Abfragen zur jeweiligen Domain aufs richtige Verzeichnis "umgeleitet". Das klappte also alles.
Jetzt aber auf einmal wird nur noch die default bzw. 000-default-vhost beachtet. Die jeweiligen "domain1 und domain2 vhosts werden ignoriert und jede Anfrage wird auf /var/www/ geleitet aber nicht mehr auf /var/www/domain1 oder /var/www/domain2
Ich habe eben schon eine Menge gelesen aber konnte keine Lösung finden und bin mit meinem Latein am Ende.
Gibt es vielleicht hier jemanden der mit Varnish ähnliche Probleme hatte und mir helfen könnte?
Danke schonmal und schöe Grüße
Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben

Das ist kein Problem, sondern
am 02.02.2011 - 17:08 Uhr
Das ist kein Problem, sondern alles funtioniert wie konfiguriert.
In einem Standard-Setup ohne Reverse Proxy landen die Anfragen der Browser direkt beim Webserver. Dieser gleicht den Port über den die Anfrage reinkam, die angefragte IP Adresse und Domain mit seiner Konfiguration ab und entscheidet auf dieser Basis aus welchem vhost er Content ausliefert.
Hast du Varnish vorgeschaltet landen die Anfragen zunächst dort. Varnish schaut ebenso in seiner Konfig welche Anfragen an welches konfigurierte Backend weitergeleitet werden sollen. In einer standardmßigen Mercury Installation wird davon ausgegangen, dass eh nur eine Site auf dem Server betrieben wird und darum wird nur das eingestellte Standard-Backend angefragt. Aus Sicht des Apache kommen diese Anfragen aber alle von Varnish (der in deinem Fall auf dem localhost sitzt) und enthalten keine Infos über die angefragte Domain. Entsprechend liefert Apache aus dem Standard-Web aus, als wenn du direkt auf die IP des Servers zugreifen würdest, da domain-basierte vhosts nicht greifen können.
Du kannst deine vhosts auf port-basierte vhosts umstellen, für jeden Port in Varnish ein entsprechendes Backend konfigurieren und somit mehrere Websites ausliefern. In der Varnish-Config wertest du einfach den req.http.host aus und je nachem welche Domain darin angegeben ist setzt du req.backend auf das entsprechende Backend.
Siehe auch
- http://stackoverflow.com/questions/3334023/configure-multiple-sites-with...
- http://serverfault.com/questions/218246/varnish-with-multiple-sites-boxes
- http://www.varnish-cache.org/docs/2.1/
Hallo Alexander, danke für
am 03.02.2011 - 09:30 Uhr
Hallo Alexander,
danke für die Erklärung. Aufgrund dieser konnte ich letzte Nacht das Problem lösen und über req.http.host in der defautl.vcl die Zugriffe auf die richtige vhost/verzeichnis zuweisen.
Das klappt jetzt soweit alles. Varnish läuft und Loadimpact gibt mir unglaubliche Werte aus. 50 User gleichzeitig bedient Varnish innerhalb von 400 ms.
Trotzdem gibt es weiterhin Probleme. Im Tutorial http://groups.drupal.org/pantheon/mercurywiki steht oben "THIS DOCUMENTATION IS DEPRECATED!" und einige Anweisungen funktionieren überhaupt nicht mehr.
z.B. das Ausklammern der install.php, update.php und cron.php aus dem Proxy über
// No varnish for install, update, or cron
if (req.url ~ "install\.php|update\.php|cron\.php") {
return (pass);
}
ergibt nur Fehlermeldungen. Das Tut ist schon etwas älter und es haben sich scheinbar diverse Dinge in der Schreibweise geändert sodass man mit dem Tutorial nicht mehr all zu viel anfangen kann.
Auch wird im Tutorial ...
backend default {
.host = "127.0.0.1";
.port = "8080";
}
als Schreibweise verwendet - das muss aber aktuell ....
backend default {
set backend.host = "127.0.0.1";
set backend.port = "8080";
}
heißen usw.
Weiterhin arbeitet jetzt mein Statistiktool nicht mehr korrekt und man müsste dieses auch über die default.vcl ausklammern aber ich habe Probleme damit.
Ich werde Varnish erstmal wieder runter schmeißen und mich damit später noch einmal beschäftigen. Memcache und APC laufen ja und bringen schon sehr gute Performanceverbesserungen. Varnish kostet momentan einfach zu viel Zeit (und Nerven).
Danke erstmal und schöne Grüße
Matthias
Noob-Anfänger
am 03.02.2011 - 10:26 Uhr
Trotzdem gibt es weiterhin Probleme. Im Tutorial http://groups.drupal.org/pantheon/mercurywiki steht oben "THIS DOCUMENTATION IS DEPRECATED!" und einige Anweisungen funktionieren überhaupt nicht mehr.
Und direkt in der Zeile darunter ist der Wiki-Eintrag für Mercury 1.0 verlinkt und darin wiederum der für Mercury 1.1. Hier auch immer schön auf weiterführende Links achten.
Die Jungs benutzen in den Tuts in der Regel Ubuntu-Systeme. Für Debian muss man ggf. Backports-Repositorys für apt eintragen um die benötigten aktuelleren Versionen von Varnish & Co. zu bekommen. Bei anderen Distros weiß ich auch nicht Bescheid, weil sie mir nicht ins Haus / auf den Server kommen ;)
Wer übrigens mit seiner DB-Performance hadert kann neben den ganzen schönen Stellschrauben auch mal den Wechsel auf MariaDB oder gleich auf Percona in Betracht ziehen. Gerade wenn man einzelne Tabellen oder ganze Datenbanken auf InnoDB (bzw. XtraDB) umgestellt hat steht man im Live-Betrieb schonmal vor dem Problem wie man die Datensicherung mit möglichst geringer Downtime organisieren soll. MySQL Hotcopy funzt ja nur mit MyISAM, Percona kann es aber auch mit XtraDB (deren optimierte Variante von InnoDB). Von sonstigen Optimierungen mal ganz zu schweigen..
Hallo Alexander, danke
am 03.02.2011 - 10:39 Uhr
Hallo Alexander,
danke nochmal für den Hinweis auf Mercury.
Die Tuts hatte ich mir auch schon angeschaut.
Problem 1: Mercury 1.0 nutzt auch wieder Varnish (Problem siehe oben)
Problem 2: Es wird BCFG2 verwendet - das ist ein Konfigurationsmanager - davon habe ich aber 0 Ahnung - sprich - ich müsste mich wieder ewig lang einarbeiten. Das selbe bei "Hudson" etc.
Ich werde mir bei Gelegenheit mal nen Billig-VPS bei Greatnet holen und alles nochmal in Ruhe testen und ausprobieren. Solange muss Memcache und APC reichen.
Gruß Matthias
Alle Mercurys nutzen Varnish.
am 03.02.2011 - 10:47 Uhr
Alle Mercurys nutzen Varnish. Das ist ja der Sinn der Sache. Und mit BCFG2 hat man zu Beginn nicht viel am Hut, man muss sich erstmal nur an die Anleitung halten.