Какой метод использовать для настройки динамического сопоставления портов - PullRequest
0 голосов
/ 02 октября 2009

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

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

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

Спасибо

Rob

Ответы [ 2 ]

1 голос
/ 25 января 2011

Вы можете просто настроить 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
1 голос
/ 02 октября 2009

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

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

...