#iphone #ios #networking #wireless #router
#iPhone #iOS #сеть #беспроводной #маршрутизатор
Вопрос:
Я разрабатываю приложение для iPhone, в котором я использую локальный Mac в качестве веб-сервера. У меня также есть другой Mac, который я планирую использовать в качестве резервной копии. Мой вопрос заключается в следующем: учитывая, что в приложении есть один запрос URL, возможно ли перенаправить запрос на любой из компьютеров?
Я много читал о переадресации портов, но не видел случая, когда вы могли бы перенаправлять на несколько локальных веб-серверов.
Редактировать:
Выбор сервера может быть случайным или просто последовательным — если первый не отвечает, попробуйте второй. Я хочу сказать, что в случае, если мой главный сервер по какой-либо причине отключится (например, перезагрузится), ответит другой. Я не собираюсь распределять нагрузку на трафик.
Комментарии:
1. Я не понимаю вашего вопроса. Вы хотите, чтобы отвечали оба компьютера? Только на один из них? Какой в данном случае? Должен ли он выбираться случайным образом?
Ответ №1:
Я предполагаю, что у вас есть две машины на счастливой стороне брандмауэра / маршрутизатора NAT.
Я предполагаю, что вы хотите, чтобы ваши запросы обрабатывались любым сервером случайным образом.
Циклический DNS
Один из возможных способов сделать это — присвоить обоим компьютерам одинаковое имя хоста на DNS-сервере (большинство маршрутизаторов предоставляют некоторое программное обеспечение DNS). Если программное обеспечение вашего маршрутизатора позволяет назначать два IP-адреса определенному имени хоста (многие могут) и позволяет назначать короткий TTL DNS, вы могли бы перенаправить перенаправление портов на имя хоста, и пусть циклический DNS обеспечивает дешевую балансировку нагрузки для вас.
Это зависит от того, что ваш DNS-сервер рандомизирует ответы на циклические DNS-запросы, а также зависит от вашего маршрутизатора, запрашивающего DNS-адреса для пересылки. (Что является самой слабой частью моего предложения — перенаправление на имя хоста, безусловно, забавно желать.)
Явный выбор порта
Другая возможность заключается в том, чтобы на вашем маршрутизаторе были настроены для пересылки три порта: перенаправлять порт 80
скрипту, который случайным образом перенаправляет (ответ 302
) на порт 81
или port 82
. Направляйте порт 81
на одну машину, порт 82
на другую машину. Это сделает ваши URL-адреса более уродливыми ( http://www.example.com:81/path/to/resource
), но предъявляет меньше требований к вашему маршрутизатору.
Комментарии:
1. Спасибо, samold. Можете ли вы показать пример того, как настроить циклическое решение? любая дополнительная помощь была бы отличной, поскольку я не уверен, как это сделать. Спасибо!
2. Сервер, с которым я больше всего знаком, PowerDNS, предоставляет серверную часть pipe , которая была разработана специально для такого рода быстрых ответов TTL. На других серверах могут быть доступны другие механизмы.
3. Ах, я только сейчас увидел вашу правку к вопросу — то, что вам действительно нужно, вероятно, больше похоже на переключение IP на другой ресурс. Возможно, вы сможете сделать это дешево на маршрутизаторе, если он может запускать произвольные программы…