Spec-Zone.ru › Varnish

Как работает наш сайт

Принцип использования собственного продукта важен для качества программного обеспечения, т.е. это позволяет вам испытать то, с чем сталкиваются ваши пользователи, и я не стесняюсь признать, что благодаря запуску веб-сервера проекта в 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API