2009-10-02 2 views
0

У меня есть веб-приложение, которое опирается на ряд служб back-end, и я хотел бы иметь возможность динамически переключаться между различными экземплярами этих сервисов. Таким образом, мы решили создать промежуточное приложение, которое прослушивает некоторые порты и перенаправляет трафик по мере необходимости.Какой метод использовать для настройки динамического преобразователя портов

Если бы я имел дело с чистым HTTP, я бы посмотрел на это с помощью Apache и proxy_pass, что было бы идеальным (быстрым, перенастраиваемым без простоя), но это не просто HTTP-трафик, поэтому я застрял

Любые толчки в правильном направлении будут оценены.

Спасибо,

Роб

ответ

1

Почему вы не используете программное обеспечение (например, Vyatta, pfSense и т.д.) или аппаратного маршрутизатора и поставить некоторые NAT правила в местах?

Довольно опрятно приложение с открытым исходным кодом, я иногда использую, когда я быстро нужно перенаправить некоторые порты и т.д., чтобы сделать некоторые испытания является TcpTunnel: http://www.vakuumverpackt.de/tcptunnel/

+0

Как я уже говорил, вы можете просто использовать бесплатный программный маршрутизатор, такой как Vyatta, и запустить его на виртуальной машине, это не будет стоить вам ничего и потребуется час для настройки. В качестве альтернативы вы можете легко сценарий TcpTunnel изменить порт вперед и т. Д. – TJF

1

Вы можете просто настроить Apache динамически слушать на кучу портов (похоже, имеет верхний предел, около 100 в моей системе), а затем используйте mod_rewrite для динамического сопоставления этих портов с вашим контентом. Вы также можете использовать динамические хосты, выписанные в Perl, но тогда вам также потребуется включить всю вашу другую конфигурацию, которая была бы одинаковой для каждого экземпляра.

# Use Perl to write out many Listen directives 
LoadModule perl_module libexec/apache2/mod_perl.so 

<Perl> 

    # The Dynamic Ports are those from 49152 through 65535 
    # On the machines I tested 100 seems to be the upper limit 
    # Apache 2 seems to have issues starting (memory?) when the number 
    # is too high. Once the server has started, there does not seem 
    # to be a performance hit for having a large number of ports open 

    # Starting at 50000 for cleanliness 
    my $lower_port = 50000; 
    my $max_ports_to_use = 100; 


    my $upper_port = $lower_port + $max_ports_to_use; 

    foreach my $port ($lower_port .. $upper_port) { 

    # Listen on a specific port number 
    push @Listen, $port; 

    }; 

</Perl> 


# if we are in the range of dynamic ports 
RewriteEngine on 
RewriteCond %{SERVER_PORT} >49152 
RewriteCond %{SERVER_PORT} <65535 
    # serve up content on that port number 
    RewriteRule (.*) /dynamic_sites/%{SERVER_PORT}/$1