Введение
APERTURE хочет включить новый аудиогид в стоимость входа. Небольшая часть синтетических посетителей попробует каждую версию до общего запуска. Вы настроите настоящий Nginx, сравните цены по версиям, остановите неверный вариант и запустите правильный для всех.
Достаточно базовых навыков терминала; HTTP и настройка прокси объясняются здесь. Workstation содержит готовые инструменты, Gallery — сайт для посетителей. Все сервисы работают на одном хосте. Это учебные запросы без платежей и реальных посетителей. Решение принимается во время частичного запуска, а не на этапе допуска перед релизом; работа без простоя не обещается. Документация переведена, сайт и реальные подписи интерфейса остаются английскими.
Направьте небольшую долю на пробную версию
Начните этот шаг в Gallery. Откройте Explore the exhibition, затем Choose tickets. Обычная группа — двое взрослых и двое детей. Нажмите Calculate price: £48 верно, поскольку взрослый билет стоит £18, детский — £6. Новый аудиогид не должен увеличивать цену. Откройте Visit, скачайте памятку и вернитесь на главную через APERTURE.
Перейдите в Workstation. pwd выводит текущий каталог, cat — предоставленные файлы:
pwd
/home/labex/project/exhibit
cat price-sheet.txt
HTTP-запрос обращается к URL сервера; ответ содержит статус и содержимое. 200 означает успешный запрос, но не правильную цену. Прокси принимает публичный запрос и передаёт его одному upstream, то есть одной из трёх версий приложения. 127.0.0.1 означает этот хост; порт определяет сервис. Посетители используют Nginx на 8081; 9001, 9002, 9003 соответствуют classic, preview-a, preview-b.
Меняйте только upstream.conf. Каждая строка Nginx server называет один upstream. Соотношение weight=4 и weight=1 даёт пробной версии примерно пятую часть запросов, но не гарантирует такую долю людей. Точка с запятой завершает директиву. Следующий here-document заменяет файл; NGINX в кавычках сохраняет буквальный текст. Вставьте блок до завершающей строки NGINX:
cat > upstream.conf <<'NGINX'
server 127.0.0.1:9001 weight=4;
server 127.0.0.1:9002 weight=1;
NGINX
Готовый помощник проверяет строки, копирует их в штатную конфигурацию Nginx и перечитывает её. sudo разрешает изменить этот сервис. Помощник не оценивает цены и не выбирает версию:
sudo python3 /opt/labex/exhibit/route.py
Ожидайте Applied native Nginx upstream: и ваши две строки. При ошибке синтаксиса прежний маршрут остаётся активным: исправьте файл и примените снова.
python3 запускает готовый клиент. sample отправляет 80 независимых запросов через 8081, без повторных попыток, и выводит наблюдаемые цены по версиям:
python3 traffic.py sample
Найдите classic и preview-a, не менее пяти ответов каждого. Числа могут отличаться; повторите запуск при слишком маленькой выборке. У каждого запуска новый ID окна; никогда не объединяйте окна разных конфигураций. HTTP-ошибки остаются видимыми. При ошибках снова примените сохранённый маршрут и измерьте новое окно; неполное окно не является доказательством. Теперь меньшая часть запросов попадает на пробную версию; далее её бизнес-результаты помогут принять решение.
Остановите испытание с неверной ценой
Оставайтесь в Workstation и прочитайте предыдущую выборку. classic возвращает [48], preview-a — [60] и ненулевой счётчик Wrong price. Обе версии успешно ответили по HTTP. Общая средняя цена скрыла бы, с каких посетителей взяли лишнее. Prices GBP перечисляет все различные суммы каждой версии.
Бизнес-правило требует £48 без доплаты за гид. Остановите этот вариант. Замените список upstream одной строкой classic, примените и измерьте новое окно:
cat > upstream.conf <<'NGINX'
server 127.0.0.1:9001 weight=1;
NGINX
sudo python3 /opt/labex/exhibit/route.py
python3 traffic.py sample
Ожидайте только classic, 80 ответов, [48], ноль неверных цен и ошибок. Одного сохранения файла недостаточно для переключения трафика. Новое окно после применения показывает, что старая версия действительно снова обслуживает запросы.
Перейдите в Gallery, откройте Tickets и рассчитайте цену группы: £48. Во время смешанного испытания каждый запрос при обновлении может выбрать другую версию; закрепления посетителя за версией здесь нет. Прокси отключает повторные обращения к upstream и закрывает соединения; он не подменяет сбой пробной версии успешным ответом classic. Реальным системам нужны осознанные правила сессий и повторов.
Вернитесь в Workstation. Неверное испытание остановлено, но вечное сохранение classic не доставит новый гид. Теперь оцените другой вариант.
Запустите правильный вариант гида для всех
Начните в Workstation. Перед полным запуском дайте preview-b такую же ограниченную долю запросов:
cat > upstream.conf <<'NGINX'
server 127.0.0.1:9001 weight=4;
server 127.0.0.1:9003 weight=1;
NGINX
sudo python3 /opt/labex/exhibit/route.py
python3 traffic.py sample
Обе версии должны получить минимум пять ответов и показать [48], без неверных цен и ошибок. Этот ограниченный тест поддерживает продолжение, но не доказывает безопасность всех реальных нагрузок. Важны также сайт, гид и другие составы групп.
Оставьте правильный вариант единственным upstream, примените и снова измерьте:
cat > upstream.conf <<'NGINX'
server 127.0.0.1:9003 weight=1;
NGINX
sudo python3 /opt/labex/exhibit/route.py
python3 traffic.py sample
Ожидайте только preview-b, 80 ответов и [48]. Если выбрали неверный порт, верните предыдущую смешанную конфигурацию, примените и повторите сравнение перед полным запуском правильной версии. Не меняйте цены или готовые программы ради искусственного успеха.
Перейдите в Gallery и на главную. Откройте Explore the exhibition: теперь страница описывает включённый аудиогид. В Choose tickets рассчитайте £48 для двух взрослых/двух детей, затем £18 для одного взрослого/без детей. Откройте Visit и скачайте настоящий гид. Полный путь посетителя должен сохраниться; ярлыка версии или зелёной отметки мало. Проверка читает существующие запросы и реальные цены, но никогда не переключает маршруты за вас.

Резюме
Вы использовали настоящий взвешенный маршрут для небольшой доли запросов, разделили бизнес-цены по версиям, остановили неверное испытание и запустили правильный вариант. Независимые окна и видимые ошибки связали решение с реальным трафиком. Маленькие учебные выборки обосновывают решение упражнения, но не доказывают надёжность в эксплуатации или отсутствие простоя.


