Я настраиваю машину Centos с запущенным на ней Apache для балансировки нагрузки между двумя веб-серверами приложений. Обычно я делал бы все это с помощью F5 (или другого аппаратного LB), но клиент не хочет больше тратить деньги, поэтому я собираю это вместе с виртуальной машиной. Я заставил его работать, чтобы выполнять регулярный циклический перебор между двумя машинами, но мне нужен только второй сервер для аварийного переключения. Смотрите мой виртуальный хост ниже:
<VirtualHost *:80>
Options +FollowSymLinks
Include conf/virtualhosts.conf
RewriteEngine on
RewriteLogLevel 9
RewriteLog /var/log/httpd/rewrite_log
RewriteRule ^/?h/(\.[0-9]+)/(string/.*)$ balancer://mycluster/$2?h=$1 [P,QSA]
Header add Set-Cookie "h=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_WORKER_ROUTE
<Proxy balancer://mycluster/>
Order deny,allow
Allow from all
BalancerMember http://server1:8080 route=0
BalancerMember http://server2:8080 route=1 status=+H
</Proxy>
ProxyPreserveHost on
ProxyPass / balancer://mycluster/ stickysession=h nofailover=On
ProxyPassReverse / balancer://mycluster/
ProxyPass /balancer-manager !
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from all
</Location>
</VirtualHost>
Два вопроса, с которыми у меня возникли проблемы:
Я установил параметр status = + H, но когда я выключаю веб-сервис на server1, он просто продолжает пытаться отправить меня на этот. Это из-за файла cookie на моей машине, который все еще хочет, чтобы я туда перешел? Нужно ли мне настраивать проверку работоспособности для возвращаемого значения http? Я немного заблудился. Если я отключу весь сервер, он должен работать, но тогда мне придется спуститься в серверную, чтобы перезагрузить его :).
Я не могу заставить работать balancer_manager. Когда я иду в http://virtualip/balancer-manager
он отправляет меня на один из веб-серверов, а затем веб-сервер на server1 сообщает мне, что эта ссылка не существует.
Любая помощь по любому вопросу была бы замечательной!