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

Резервное место для директивы Apache ProxyPass?

Я настроил Apache для отправки запросов на camera.example.com на веб-камеру, доступную через IP-адрес, не связанный с сервером, на котором работает Apache, с помощью ProxyPass:

[камера] - [nat / prt frwrd] - [11.22.33.44] - [интернет] - [веб-сервер]

Соответствующая запись в директиве виртуального хоста Apache для example.com:

<VirtualHost *>
  ServerName camera.example.com
  ProxyRequests Off
  ProxyPass / http://11.22.33.44/
  ProxyPassReverse / http://11.22.33.44/
</VirtualHost>

Работает как шарм, правда, камера не всегда включается. В этом случае вместо того, чтобы Apache выдавал ошибку «не найдено» при посещении моей камеры, я бы хотел, чтобы он обслуживал альтернативную веб-страницу.

Можно ли было бы установить какой-то «запасной» адрес на случай, если первый (адрес камеры) недоступен?

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

ваша конфигурация будет выглядеть следующим образом:

ProxyPass / balancer://hotcluster/
<Proxy balancer://hotcluster>
 BalancerMember http://addres.of.the.camera timeout=15 retry=300
 BalancerMember http://address.of.backup.server status=+H
</Proxy> 

вы просто помечаете backup-server знаком + H - горячий резерв. пока камера отвечает [в тайм-аут сек] - на него идет трафик; если нет - apache начинает отправлять трафик на резервную машину и будет проверять камеру каждые повторить попытку секунд.

Если это общедоступный IP-адрес, некоторые поставщики DNS будут проверять ваш IP-адрес и переключаться на резервный IP-адрес, если он недоступен. Для этого мы используем dnsmadeeasy.com.

Однако следует помнить, что он может проверять только каждые 5 минут или около того, поэтому переключение при отказе и восстановление после отказа не происходит мгновенно.