Как работает наш сайт
Принцип использования собственного продукта важен для качества программного обеспечения, т.е. это позволяет вам испытать то, с чем сталкиваются ваши пользователи, и я не стесняюсь признать, что благодаря запуску веб-сервера проекта в Varnish произошли несколько очевидных улучшений.
Но также важно документировать то, что вы узнали в процессе, и поэтому я решил задокументировать здесь работу нового «внутреннего ИТ» проекта.
Аппаратное обеспечение
Кому это интересно?
Да, мы используем какой-то вид оборудования, но честно говоря, я не знаю, что это.
Наш основной сайт работает на виртуальном сервере RootBSD ‘Omega’ где-то недалеко от CDG/Парижа.
А в качестве резервного/интеграционного/тестового сервера мы можем использовать любой сервер, виртуальный или физический, при условии, что у него есть подключение к интернету и современная производительность, поскольку вся установка выполняется по сценарию и находится под контролем версий (подробнее ниже).
Операционная система
Так, собственный продукт: Очевидно, FreeBSD.
Помимо очевидной причины, что я написал много кода для FreeBSD и могу получить поддержку мирового класса, обращаясь к своим коллегам по этому поводу, существуют две столь же серьезные причины, по которым проект Varnish работает на FreeBSD: собственный продукт и тюрьмы (jails).
Varnish Cache — это не «программное обеспечение для Linux», это программное обеспечение для любой компетентной операционной системы семейства Unix, а FreeBSD — наша основная платформа, позволяющая нам быть честными по этому поводу.
Тюрьмы (Jails)
Вы, вероятно, слышали о Docker и контейнерах, но в FreeBSD уже есть тюрьмы с 1998 года, которые я написал, и это замечательный способ поддерживать работоспособность вашей серверной установки.
В настоящее время у нас три тюрьмы:
- Hitch — выполняет прокси-сервер Hitch SSL
- Varnish — <a href=”rimshot.mp3”>Вы угадали</a>
- Tools — бэкэнд веб-сервер, в настоящее время thttpd от ACME Labs
Сценарии и контроль версий
У нас есть репозиторий git со скриптами оболочки, которые создают эти тюрьмы с нуля, а также скрипт для правильной настройки хостовой машины.
Это означает, что процедура установки копии сервера выглядит так:
# Install FreeBSD (if not already done by hosting)
# Configure networking (if not already done by hosting)
# Set the clock
service ntpdate forcestart
# Get git
env ASSUME_ALWAYS_YES=yes pkg install git
# Clone the private git repo
git clone ssh://example.com/root/Admin
# Edit the machines IP numbers in /etc/pf.conf
# Configure the host
sh build_host.sh |& tee _.bh
# Build the jails
foreach i (Tools Hitch Varnish)
(cd $i ; sh build* |& tee _.bj)
end
От голого оборудования до готовой системы за 15-30 минут.
Само собой разумеется, что этот репозиторий git содержит такие вещи, как ключи хоста ssh, поэтому он не должен находиться на github.
Резервное копирование
В данный момент нет абсолютно ничего, что нам нужно резервировать, при условии, что у нас есть актуальная копия репозитория Admin git.
На практике мы хотим сохранить историю наших инструментов разработки (VTEST, GCOV и т. д.), и я регулярно делаю rsync этих файлов с сервера.
Главная страница
Главная страница создана с помощью Sphinx и размещается в собственном проекте github (Pull запросы приветствуются!)
Мы создали снимки некоторых старых веб-свойств, Trac, форума и т.д. в виде статических копий HTML.
Почему на Земле…
Немного хлопотно настроить такую установку, каждый раз, когда вы изменяете файл конфигурации, вам нужно помнить, что нужно вернуть изменения и внести их в репозиторий Admin.
Но эти дополнительные усилия окупаются многократно.
Вам никогда не придется задаваться вопросом, «кто внес эту правку и почему», или даже пытаться вспомнить, какие изменения были необходимы в первую очередь.
Для нас как проекта это означает, что все наши системные администраторы могут создать клон нашей инфраструктуры, если у них есть копия нашего репозитория «Admin» в git и доступ к github.
И когда выйдет FreeBSD 11 или новая версия Sphinx, или что-то еще, можно спокойно экспериментировать, не гадая (на самом деле у нас сейчас 12, но шутка слишком хороша, чтобы её удалять).
Например, я только что добавил снимок форума, решив все проблемы на одной из моих тестовых машин.
Как только всё было сделано по моему желанию, я внес изменения на живой машине, а затем:
varnishadm vcl.use backup # The 'backup' VCL does a "pass" of all traffic to my server cd Admin git pull cd Tools sh build_j_tools.sh |& tee _.bj varnishadm vcl.load foobar varnish-live.vcl varnishadm vcl.use foobar
В течение нескольких минут наш сайт работал немного медленнее (из-за дополнительного перехода Париж-Дания), но никаких прерываний не было.
И сделав это таким образом, я знаю, что это сработает и в следующий раз.
2016-04-25 /phk
PS: Все эти разговоры о «воспроизводимых сборках»? Да, ничего нового.
Copyright © 2006 Verdens Gang AS
Copyright © 2006–2020 Varnish Software AS
Licensed under the BSD-2-Clause License.
https://varnish-cache.org/docs/7.4/dev-guide/homepage_dogfood.html