Назад | Перейти на главную страницу

изменение mod_proxy без перезапуска

Как я могу настроить мод-прокси-сервер apache для содержимого сервера с отдельного назначенного сервера таким образом, чтобы я мог изменить, с какого сервера обслуживать контент, без перезапуска apache?

Сервер содержимого будет периодически меняться либо для обслуживания, либо из-за сбоя.

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

Мне также нужна возможность обновить кодовую базу на сервере, протестировать ее, а затем отключить старый действующий сервер.

Я установил mod_proxy, используя

ProxyPass / http://appserver.com
ProxyPassReverse / http://appserver.com

это работает, но требует перезапуска с другими настройками для изменения направления. что противоречит цели его использования на живом сервере.

Я также пробовал mod_balencer, который отлично работает для аварийного переключения, но требует перезапуска apache, чтобы вернуть его на обслуживание основного сервера приложений при резервном копировании.

     ProxyPass / balancer://hotcluster/
     <Proxy balancer://hotcluster>
            BalancerMember http://dyn:80 loadfactor=1
            BalancerMember http://basic:80 status=+H
            ProxySet lbmethod=bytraffic
     </Proxy>

Есть ли способ установить текущий сервер приложений без перезапуска apache?

Вы можете использовать mod_rewrite, используя RewriteMap с одним значением:

RewriteMap server txt:/path/to/file/map.txt
RewriteRule ^/(.*) http://${server:production}/$1 [P,L]

Затем создайте /path/to/file/map.txt с этим содержимым

# To use a different server, change appserver.com 
# to e.g. maintenance.appserver.com

production appserver.com

Как только mod_rewrite обнаруживает, что вы изменили это значение, он автоматически проксирует запросы на новый сервер.

Вы можете использовать один из нескольких типов RewriteMap с различным влиянием на производительность: файлы базы данных, рандомизированные карты текстовых файлов, даже внешние программы - короче говоря, вы можете выполнять с ними все виды тайной магии. Читайте об этом в документы mod_rewrite и решите для себя, что будет лучшим вариантом.

Это должно быть возможно с помощью mod_rewrite.

Что-то вроде этого:

RewriteEngine on
RewriteCond /some/path/dynamic-server-is-down !-f
RewriteRule ^/(.*) http://dyn:80/$1 [P]
RewriteCond /some/path/dynamic-server-is-down -f
RewriteRule ^/(.*) http://static:80/$1 [P]

Затем просто коснитесь файла dynamic-server-is-down, чтобы переключиться на статический сервер.

Я не думаю, что есть простой способ сделать это. Однако, если вы ожидаете, что прокси-сервер изменится, почему бы не использовать прокси-сервер на виртуальный IP-адрес или псевдоним DNS. Таким образом, если вам нужно отключить прокси-сервер, вы можете переназначить виртуальный IP-адрес или изменить псевдоним, чтобы он указывал на новый сервер.

Вы можете попробовать «перезагрузить», а не перезапустить. Restart остановит и запустит сервер, reload просто перезагрузит конфигурацию.