Использование Apache для маршрутизации балансировки нагрузки - PullRequest
1 голос
/ 10 марта 2009

Мое приложение имеет два внутренних раздела:

  1. URL раздела загрузки: %URI%/upload/%action%
  2. URL раздела логина: %URL%/Login/%action%

Код для секции входа находится на одном сервере 5.123.12.1, а код для загрузки - на другом сервере 5.123.12.2.

После маршрутизации на сервере последует дальнейшая маршрутизация, относящаяся к параметрам запроса или параметрам действия.

Как создать правила для mod-rewrite и mod-cond в файле конфигурации Apache для двух машин, чтобы можно было выполнить маршрутизацию?

Ответы [ 2 ]

1 голос
/ 08 апреля 2009

Для вашей настройки я бы использовал следующее на другом сервере Apache, работающем в качестве внешнего интерфейса.

<VirtualHost *:80>
  ServerName    your.domain.com
  RewriteEngine on
  ProxyPreserveHost on
  ProxyPassReverse /    http://5.123.12.1/
  ProxyPassReverse /    http://5.123.12.2/

  RewriteRule ^/Login(.*)   http://5.123.12.1/Login$1 [P,L]
  RewriteRule ^/upload(.*)  http://5.123.12.2/upload$1 [P,L]

</VirtualHost>

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

0 голосов
/ 11 июня 2009

Возможно, вам лучше использовать специальное ПО для балансировки нагрузки, такое как HAProxy или Perlbal. Преимущество заключается в том, что вы можете сбалансировать свои запросы на один и тот же URL на нескольких серверах.

В противном случае для Apache существует модуль балансировки, называемый mod_proxy_balancer:

<Proxy balancer://mycluster>
 BalancerMember http://192.168.1.50:80
 BalancerMember http://192.168.1.51:80
</Proxy>
ProxyPass /test balancer://mycluster/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...