
Я работаю над настройкой балансировщика нагрузки Apache с 2 участниками. Эти три сервера — Windows Server 2012 с Apache 2.4.9. Я работаю над тем, чтобы один кластер балансировки нагрузки обслуживал несколько сайтов. Сейчас настроены два localhost и test1, когда я захожу на localhost, все хорошо, балансировщик нагрузки работает... Когда я захожу на test1, подсерверы загружают конфигурацию localhost (которая используется по умолчанию). Я думаю, что это что-то вроде URL-адреса test1, который не передается рабочим процессам, поэтому рабочие не могут его идентифицировать.
Вот как выглядит конфигурация виртуального хоста для localhost на балансировщике нагрузки [обратите внимание, что она сделана универсальной для удобства клиента]...
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "E:/generic-page/www"
ServerName localhost
ErrorLog "E:/_logs/localhost-error.log"
CustomLog "E:/_logs/localhost-access.log" common
ProxyRequests Off
<Proxy *>
AllowOverride All
Require all granted
</Proxy>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=PHPSESSIONID nofailover=On
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
#ProxyPassReverse / http://tstweb1.somewhere.org:80
#ProxyPassReverse / http://tstweb2.somewhere.org:80
<Proxy balancer://mycluster>
BalancerMember http://tstweb1.somewhere.org:80 loadfactor=1
BalancerMember http://tstweb2.somewhere.org:80 loadfactor=2
ProxySet lbmethod=byrequests
</Proxy>
<Location />
ProxyPass balancer://mycluster/ stickysession=PHPSESSIONID
</Location>
</VirtualHost>
Вот как выглядит test1 на балансировщике нагрузки...
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "E:/test1/trunk"
ServerName test1
ErrorLog "E:/test1/_logs/test1-error.log"
CustomLog "E:/test1/_logs/test1-access.log" common
ProxyRequests Off
<Proxy *>
AllowOverride All
Require all granted
</Proxy>
ProxyPass /balancer-manager !
ProxyPass / balancer://test1cluster/ stickysession=PHPSESSIONID nofailover=On
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
<Location />
ProxyPass balancer://test1cluster/ stickysession=PHPSESSIONID
</Location>
#ProxyPassReverse / http://tstweb1.somewhere.org:80
#ProxyPassReverse / http://tstweb2.somewhere.org:80
<Proxy balancer://test1cluster>
BalancerMember http://tstweb1.somewhere.org:80 loadfactor=1
BalancerMember http://tstweb2.somewhere.org:80 loadfactor=2
ProxySet lbmethod=byrequests
</Proxy>
</VirtualHost>
На каждой из рабочих машин у меня стандартная настройка виртуального хоста. Никакого прокси-сервера, только стандартные конфигурации, благодаря которым машина будет нормально работать, если на нее будет указывать домен.
Это мой первый опыт настройки всего этого, поэтому я буду рад любым отзывам, которые помогут мне заставить работать несколько доменов и сайтов в одном кластере.
Есть ли у кого-нибудь идеи, как решить эту проблему?