HAproxy + Apache2 suche hilfe

Apache, Lighttpd, nginx, Cherokee
preussner
Posts: 19
Joined: 2006-02-15 16:16

HAproxy + Apache2 suche hilfe

Post by preussner » 2008-12-05 18:24

hallo
ich hab folgendes Problem und hoffe mal mir kann jemand helfen.

ich möchte zwei oder mehr apache Server hinter den LoadBalancer HAproxy klemmen.
in meinem Test Aufbau klappt das auch schon soweit.
aber ich hab da Folgendes Problem.
Der HA Proxy ersetzt mir in dem Array $_SERVER den wert [REMOTE_ADDR] durch die IP des LoadBalancer
es gibt zwar die Möglichkeit im HAproxy die ursprüngliche IP mitzugeben diese landet aber dann in [HTTP_X_FORWARDED_FOR]

Code: Select all

ausgabe von print_r($_SERVER);

Array ( [HTTP_HOST] => 192.168.80.100 [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ACCEPT_LANGUAGE] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 [HTTP_KEEP_ALIVE] => 300 [HTTP_CONNECTION] => close [HTTP_REFERER] => http://192.168.80.100/ [HTTP_COOKIE] => phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D; style_cookie=printonly; phpbb3_m31p5_u=1; phpbb3_m31p5_k=; phpbb3_m31p5_sid=d59e52012962fb9659d0e7250ed2bd5f

[HTTP_X_FORWARDED_FOR] => 192.168.80.1  <========

[PATH] => /usr/local/bin:/usr/bin:/bin [SERVER_SIGNATURE] =>
Apache/2.2.3 (Debian) PHP/5.2.0-8+etch13 Server at 192.168.80.100 Port 80
[SERVER_SOFTWARE] => Apache/2.2.3 (Debian) PHP/5.2.0-8+etch13 [SERVER_NAME] => 192.168.80.100 [SERVER_ADDR] => 10.0.0.102 [SERVER_PORT] => 80

[REMOTE_ADDR] => 10.0.0.2  <========

[DOCUMENT_ROOT] => /data/htdocs/ [SERVER_ADMIN] => webmaster@localhost [SCRIPT_FILENAME] => /data/htdocs/ip.php [REMOTE_PORT] => 33915 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /ip.php [SCRIPT_NAME] => /ip.php [PHP_SELF] => /ip.php [REQUEST_TIME] => 1228496619 [argv] => Array ( ) [argc] => 0 )


So da könnte man ja denken ok schreib ich den header um.
In der index.php einer Seite oben einfügen:

Code: Select all

<?php
if ($_SERVER['REMOTE_ADDR'] == '10.0.0.2' OR $_SERVER['REMOTE_ADDR'] == '10.0.0.3'){
   $headers = apache_request_headers();
   $_SERVER['REMOTE_ADDR'] = $headers["X-Forwarded-For"];
}?>


Pustekuchen kein login mehr in irgendeine PHP Seite mehr möglich

dann hab ich noch die Option transparent im HAproxy gefunden, diese sollte dafür sorgen das [REMOTE_ADDR] unverändert bleibt aber leider bekomm ich dann einen
" 400 Bad request " zurück.

Hier mal mein HAproxy config

Code: Select all

global
        maxconn 32000
        #ulimit-n 65536
        daemon
        #nbproc  2
        #debug
        pidfile /var/run/haproxy-private.pid
        #log localhost daemon debug

defaults
        maxconn         2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen stats 192.168.80.100:7000
        mode http
        transparent
        stats uri /
        stats realm security
        stats auth admin:admin

listen webfarm 192.168.80.100:80
        balance roundrobin
        #transparent
        option          forwardfor
        mode            http
        option          httplog
        option          httpchk
        option          forwardfor
        option          abortonclose
        option          httpclose
        retries         3
        redispatch

        cookie JSESSIONID prefix
        option httpchk HEAD /check.txt HTTP/1.0
        server webA 10.0.0.101:80 cookie A check
        server webB 10.0.0.102:80 cookie B check


auch wenn ich die config auf erreichbare IPs umstelle. Von 10.0.0.101 --> 192.168.80.115 funktionierts nicht.
Das 10ner Netz sollte nur für die interne komunikation hergenommen werden.
Das 192.168.80ner Netz werden dann später die Öffentlichen IP adressen.

Ich wollte eigentlich den Komunikations weg so aufbauen

Code: Select all

Client --> LoadBalancer --> Apache server --> Client
                         |
                         |--> Apache server --> Client
                         :

vielleicht hat ja jemand das problem schon mal gehabt und kann mit dabei helfen.

Gruß Preussner

preussner
Posts: 19
Joined: 2006-02-15 16:16

Re: HAproxy + Apache2 suche hilfe

Post by preussner » 2008-12-09 16:39

ich werds jetzt anders machen
mit virtual linux server
http://www.linuxvirtualserver.org/VS-DRouting.html