У нас есть два внешних сервера: Dev и Prod. Мы являемся разработчиком программного обеспечения, и в коде у нас есть поддомен metrics.company.com, который указывает на Prod.
Разработка ведется непрерывно, и нашим внутренним и внешним разработчикам и тестировщикам придется переключаться с Dev на Prod и обратно. Невозможно иметь другой субдомен в коде во время разработки и изменять его для производства.
Мы хотим переключаться между Dev и Prod с помощью DNS. Нам нужен общедоступный DNS-сервер, который ведет себя нормально, кроме маршрутизации metrics.company.com в Dev. Пользователи смогут поменять местами свои DNS назад и вперед, чтобы попасть на разные серверы.
Как это сделать проще всего? Есть ли компания, предоставляющая эту услугу, или мне придется арендовать сервер и настраивать его самостоятельно?
Любая помощь приветствуется.
У нас есть немного более сложная настройка со средой DEV, TEST, BETA и PROD. Я заявляю о некоторых дополнительных хитростях за то, что придумал наше решение, которое позволяет разработчикам изначально создавать свой код на своих рабочих станциях, развертывать и заставлять его работать, не меняя код.
Для этого мы запускаем несколько разных внутренних зон DNS, в частности dev.zfx, test.zfx, beta.zfx, а затем несколько зон PROD, по одной для каждого центра обработки данных. Затем, в зависимости от среды, в которой в настоящее время находится их код, список поиска DNS настраивается для ссылки на эту зону. первый. Так, например, они напишут свой код для ссылки http://blahfoo/page?paramaters=something
. На машине DEV (или на их рабочих станциях) это разрешит http://blahfoo.dev.zfx/page?parameters=something
.
Есть пара предостережений:
На первый взгляд, это выглядит неуклюже, но последние пять лет он работал очень хорошо. Если у вас есть другие вопросы, просто lmk.
Почему бы не изменить свой файл hosts? Убедитесь, что ваш браузер понимает изменение, мне нужно перезапустить firefox для этого (что является логикой qiute, потому что тогда преобразователь в FF (или IE) перезапускается).
Использование другого субдомена в коде невозможно.
Почему это не вариант? Я прохожу через такие вещи постоянно, разрабатывая и решаю "проблему" с помощью одного #define
(на C или эквивалентном на любом используемом языке), который устанавливает среду разработки и просто закомментирован для производственной версии. Использование DNS для такого рода вещей не только создает нежелательный, подверженный ошибкам уровень сложности, но и не должно быть необходимым.
Однако, если вы действительно хотите реализовать эту странную идею, почему бы просто не настроить дополнительный DNS-сервер с информацией о зоне, которую вы хотите использовать для версии разработчика, и указать вашей ОС, чтобы она использовала тот DNS-сервер, который требуется в любое конкретное время.
Вы, вероятно, столкнетесь с проблемами при использовании DNS-сервера. Все записи DNS имеют прикрепленный TTL (время жизни), и клиенты (и промежуточные DNS-серверы) будут кэшировать записи имен за это время, поэтому им не нужно постоянно запрашивать DNS-сервер. В течение этого времени старые записи будут повторно использоваться, если вы а) не заставите клиента выбросить свой кеш и б) убедитесь, что вы запрашиваете авторитетный сервер для этого домена напрямую (иначе ваш DNS-сервер по умолчанию будет обслуживать кешированную запись и вы не можете это контролировать).
Гораздо проще, вероятно, добавить определенные записи для этих доменов / поддоменов в файл локальных хостов (в Windows это обычно находится в C: \ Windows \ system32 \ drivers \ etc \, в Linux - в / etc /). Затем пользователи могут просто (отменить) комментировать строки, которые им нужны для переключения с одного сервера на другой.
Сказав это, может показаться довольно странным, что подобласть не может быть реализована как опция времени выполнения.
Я бы изменил DNS-серверы, а не код или DNS-записи.
В зависимости от того, как у вас все настроено, вы можете либо изменить resolv.conf на хостах, либо изменить информацию об аренде DHCP, либо изменить сервер пересылки для DNS-сервера, который вы используете.
Настройте два DNS-сервера, которые будут авторитетными для записей, которые вы ищете; один DNS-сервер с IP-адресами разработчика и другой DNS-сервер с prod-IP.
Просто держите TTL короткими для обоих серверов.
Если у вас есть DNS-сервер вне офиса, вы можете использовать CloudFlare для DNS. Вы можете определить очень короткий TTL, и если вы направите сайт через их CDN, изменения DNS будут мгновенными, потому что это просто конфигурация их прокси.
/ Майкл