Sie sind nicht angemeldet.

1

13.06.2007, 15:03

Squid 2.6.5 als Reverse-Proxy mit Apache2 Virtual Hosts

Hallo,

Ich nutze folgende Software:
- Debian Etch 4.0
- Apache 2
- Squid (aus der Repository von Debian, 2.6.STABLE5)

Ich betreibe einen Imagehoster auf einem einzigen Server. Da Ich derzeit starke Perfomance Probleme habe (zuviele Festplattezugriffe - %iowait zu hoch) möchte Ich einen Reverse-Proxy mit Caching vor dem Apache schalten, um kleinere Bilder die viele Zugriffe haben, im Cache zu lagern.

Der Aufbau meiner IP-Schnittstellen sieht so aus:
- eth0 88.198.13.147 (Haupt IP, Zugriff des Admininterfaces, Web-Logs, etc...)
- eth0:1 88.198.162.122 (IP für Webzugriffe des Imagehoster und anderer Webpräsenzen)

Ich habe einige Tutorials über Reverse-Proxy und Squid gefunden, nur leider hat die aktuelle Squid-Version keine httpd_accel_* Unterstützung mehr, so das Ich nicht mehr weiter weiß :(.

Ich denke mir das so:

1. User fordert Website mit HOST im HTTP an
2. squid erkennt die Objekte die angefordert werden und lädt diese aus dem RAM (TCP_MEM_HIT)
3. oder sofern die Objekte noch nicht verfügbar sind (TCP_MISS) -> Direktanfrage am Webserver

Ich hatte gesehen, das es (?irgendwie?) mit http_host IP defaultsite=webserber:8080 ginge,
aber dort kann Ich keine feste IP eintragen, da sonst der Apache bzgl. vHost nicht die Website liefert.

Weil:
88.198.13.147 wird angefordert -> Ziel IP 88.198.13.147 | geht
Wird aber Domain xyz.com angefordert -> Ziel IP 88.198.13.147 | geht nicht, da hier jetzt 88.198.162.122 stehen müßte.

Ich denke mir, da muss etwas mit iptables gemacht werden,
ansonsten komme Ich nicht weiter und würde mich über Hilfe freuen.

Danke.

Gruß
Kevin

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »kevink« (13.06.2007, 15:05)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

14.06.2007, 16:17

RE: Squid 2.6.5 als Reverse-Proxy mit Apache2 Virtual Hosts

Zitat

Original von kevink
Ich habe einige Tutorials über Reverse-Proxy und Squid gefunden, nur leider hat die aktuelle Squid-Version keine httpd_accel_* Unterstützung mehr,

falsch, squid 2.6.9 unterstützt es, die optionen sind etwas verändert

Zitat

# NETWORK OPTIONS
# -----------------------------------------------------------------------------

# TAG: http_port
# Usage: port [options]
# hostname:port [options]
# 1.2.3.4:port [options]
#
# The socket addresses where Squid will listen for HTTP client
# requests. You may specify multiple socket addresses.
# There are three forms: port alone, hostname with port, and
# IP address with port. If you specify a hostname or IP
# address, Squid binds the socket to that specific
# address. This replaces the old 'tcp_incoming_address'
# option. Most likely, you do not need to bind to a specific
# address, so you can use the port number alone.
#
# The default port number is 3128.
#
# If you are running Squid in accelerator mode, you
# probably want to listen on port 80 also, or instead.
#
# The -a command line option will override the *first* port
# number listed here. That option will NOT override an IP
# address, however.
#
# You may specify multiple socket addresses on multiple lines.
#
# options are:
#
# transparent Support for transparent interception of
# outgoing requests without browser settings
#
# accel Accelerator mode. Also needs at least one
# of vhost/vport/defaultsite.
#
# defaultsite= Main web site name for accelerators. Implies
# accel.
#
# vhost Accelerator using the Host header for
# virtual domain support. Implies accel.
#
# vport Accelerator with IP based virtual host support.
# Implies accel.
#
# vport= As above, but uses specified port number
# rather than the http_port number. Implies accel
#
# urlgroup= Default urlgroup to mark requests
# with (see also acl urlgroup and
# url_rewrite_program)
#
# protocol= Protocol to reconstruct accelerated
# requests with. Defaults to http.
#
# no-connection-auth
# Prevent forwarding of Microsoft
# connection oriented authentication
# (NTLM, Negotiate and Kerberos)
#
# tproxy Support Linux TPROXY for spoofing
# outgoing connections using the client
# IP address.
#
# If you run Squid on a dual-homed machine with an internal
# and an external interface we recommend you to specify the
# internal address:port in http_port. This way Squid will only be
# visible on the internal address.


läuft squid dann auf der selben maschine?
wenn ja, was bringt das?
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (14.06.2007, 16:19)


3

14.06.2007, 16:21

Ah okay, dachte nicht das es soviele Optionen gibt, danke.

Was es bringt? Es ist ein Reverse-Proxy, d.h. wenn jemand das gleiche Dokument nochmals anfragt, wird es direkt aus dem Cache - also dem RAM - geladen.
So wird kein Apache, php oder mysql Prozess angefragt, natürlich zum Vorteil der Perfomance.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »kevink« (14.06.2007, 16:21)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

14.06.2007, 19:07

Zitat

Original von kevink
Ah okay, dachte nicht das es soviele Optionen gibt, danke.

Was es bringt? Es ist ein Reverse-Proxy, d.h. wenn jemand das gleiche Dokument nochmals anfragt, wird es direkt aus dem Cache - also dem RAM - geladen.
So wird kein Apache, php oder mysql Prozess angefragt, natürlich zum Vorteil der Perfomance.


mir ist schon klar, was ein proxy ist und wozu er dient.
wäre interessant dann mal zu hören wie viel das wirklich gebracht hat, denn ich denke mit squid auf der selben maschine, die am limit läuft, bringt das nicht viel. vielleicht wird die kiste sogar noch lamer.
wenn du für das caching hauptsächlich ram nutzen willst, dann steht der für den festplattencache nicht mehr zur verfügung (iowait!!!). dann muss die cachestrategie überdacht werden. php seiten sind dynamisch!!! woher weiss squid, welche gecacht werden sollen und welche nicht? seiten mit sessionsid, getstrings, postaufrufen lassen sich nicht so ohne weitere cachen............
und dann noch proxy-nocache einträge im header......
na mal sehen, wie es ausgeht.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

5

14.06.2007, 19:28

Statistik nach über 6 Stunden:
300.000 Requests im Cache
80.000 Requests von der Platte.

%iowait ist runter auf konstat 10-50%.

Klar, wenn der Cache im Ram liegt, hab Ich keine Zugriffe auf der Platte mehr, was ja gewollt ist.

Da Ich das auf einen Imagehoster anwende, sehe Ich keine Probleme damit, Ich cache jediglich die Bilder, die sich ja nicht ändern.
Habe den Header bei den Bildern cache-control entfernt und eine Expire-Zeit gesetzt auf + 10Jahre.

Ansich funktioniert das, nur ist das nicht das Problem was Ich habe.

Gruß
Kevin

Thema bewerten