Pull to refresh

Apache Traffic Server — уникальный кеширующий прокси-сервер для CDN

Reading time3 min
Views10K
image

Однажды возникла идея запустить русско-язычную версию популярного американского сайта. После недолгих размышлений было решено реализовать полностью интерактивную схему вида examplesite.com — > examplesite-ru.com и заставить машину делать как можно больше работы.

Некоторое изучение и эксперименты с различными прокси-серверами привели к интересному продукту — Apache Traffic Server, о котором я и хочу рассказать.

Traffic Server был изначально создан Inktomi Corporation, которая была куплена компанией Yahoo! в 2002 году. Долгое время продукт активно коммерчески использовался как внутри Yahoo!, так и на некоторых очень больших сайтах. С 2009 года проект открыл исходные коды и передал их в инкубатор Апача, а уже в апреле 2010 года появился Apache Traffic Server.

Подробно о сравнении ATS с другими кеширующим и балансирующими серверами можно почитать тут.

Коротко скажу лишь, что архитектура ATS превосходит по масштабируемости такие заслуженные аналоги, как Ngnix, HAproxy и Squid при том что каждый из перечисленных продуктов специализирован, в то время как ATS может больше (кроме пожалуй Squid, который умеет еще больше, но на порядок медленнее). Серьезная заявка? Нужно попробовать!

Установка ATS
В силу своей новизны документация проекта оставляет желать лучшего. Обилие конфигурационных директив, ужасающая куча файлов в etc/, недоделанная wiki и отсутствие пошагового мануала сначала напугали. Но затем я нашел замечательную презентацию Тома Мелендеза из Yahoo! и всё встало на свои места.

Дальнейшие настройки проводились на Centos 5.5 x64.

Шаг 1. Скачиваем дистрибутив ATS.
[root@Srv1 ~]# wget www.sai.msu.su/apache//trafficserver/trafficserver-2.1.5-unstable.tar.bz2

Шаг 2. Проверяем наличие необходимых библиотек
[root@Srv1 ~]# yum list autoconf automake libtool gcc-c++ glibc-devel openssl-devel tcl-devel expat-devel db4-devel pcre-devel

Шаг 3. Скорее всего придется поставить некоторые пакеты, в моем случае потребовались tcl-devel и pcre-devel. Без этого шага компиляция будет завершаться с ошибкой. Для пользователей Debian-based дистрибутивов набор компонентов слегка отличается и он описан в файле README.

Шаг 4. Распаковываем архив и переходи в директорию
[root@Srv1 ~]# tar -xjf trafficserver-2.1.5-unstable.tar.bz2
[root@Srv1 ~]# cd trafficserver-2.1.5-unstable


Шаг 5. Компилируем.
По умолчанию prefix=="/usr/local" чего достаточно для тестов
[root@Srv1 trafficserver-2.1.5-unstable]# ./configure [--prefix=PREFIX]
[root@Srv1 trafficserver-2.1.5-unstable]# make install


Настройка ATS
Напомню главную заповедь Тома Мелендеза: «Я РЕАЛЬНО ЛЕНИВЫЙ!»
Теперь опишу настройки для выполнения нашей задачи.

Шаг 1. Открываем /usr/local/etc/trafficserver/records.config
CONFIG proxy.config.proxy_name STRING examplesite-ru.com
CONFIG proxy.config.http.server_port INT 80
CONFIG proxy.config.reverse_proxy.enabled INT 1


Шаг 2. /usr/local/etc/trafficserver/remap.config
map examplesite-ru.com/ examplesite.com/
reverse_map examplesite.com/ examplesite-ru.com/


Шаг 3. Из чистого любопытства посмотрим /usr/local/etc/trafficserver/storage.config
И видим что ленивый Том добавил маленький кусочек диска в 256 Мбайт достаточный для тестов: var/trafficserver 256M

Запуск ATS
Запускается сервис командой
[root@Srv1 ~]# /usr/local/bin/trafficserver

Конфигурация обновляется командой
[root@Srv1 ~]# /usr/local/bin/traffic_line -x

Бинго!
Как видим для запуска действительно нужно минимум усилий.

Мой тестовый сервер сделан из самого маленького компьютера на базе Intel Atom 525, который подключен в интернет каналом со скоростью 1 мбит в секунду. Мой тестовый сайт имеет главную страницу размером примерно 85 Кбайт. Он при каждом обращении генерит уникальный Session ID (это всегда вводит в ступор качалки сайтов типа TeleportPro и разнообразные прокси).

Нетрудно посчитать, что обычный некеширующий реверс-прокси потратит только примерно 0,7 секунд на скачиваение страницы, потом 0,7 секунд на ее отдачу, а так же время на «проксификацию» содержимого.

В случае ATS дополнительная задержка при полной загрузке страницы составляет на круг значительно менее 1 секунды, а загрузка процессора попросту незаметна. Попеременно запуская загрузку сайта напрямую и через ATS я обратил внимание что довольно часто прокси отдает страницу быстрее оригинала! Как видим 8 лет эксплуатации на серверах Yahoo в роли CDN не пропали даром.

Вернемся к началу
Идея создания зеркала сайта никого не удивит, но в моих планах она должна быть дополнена системой автоматизированного перевода на русский язык текстов и графики с помощью… (в этом месте пока только вопросы). Такая система может быть подключена при помощи
плагина трансформации HTTP.
Tags:
Hubs:
+40
Comments14

Articles

Change theme settings