Назад | Перейти на главную страницу

Автоматическое обновление конфигурации обратного / кеширующего прокси?

Я никогда раньше не делал чего-то столь амбициозного, поэтому, пожалуйста, дайте мне знать, если это просто плохая идея, и альтернативные решения, которые я должен рассмотреть.

Итак, у меня есть три сервера (а позже и больше), все хостинговые сайты с одинаковым TLD. В его нынешнем виде я не могу связать поддомен и сервер. (Существует более одного сервера из-за разных уровней подписки, ожидаемой производительности и т. Д.)

Мой идеальный сценарий таков: весь веб-трафик попадает в кеш Varnish, а Varnish кэширует его с любого сервера, на котором размещен сайт. Я могу использовать Apache или Nginx для веб-серверов, в зависимости от того, что удобнее.

На веб-узлах всегда будут создаваться новые сайты, поэтому я хочу, чтобы мой кеш Varnish знал, где находится сайт, без необходимости вводить их вручную. (Все серверы находятся на Debian.)

Я подумывал об этом в Puppetmaster, но не могу найти никакой документации (может быть, я ищу не то?). Я также рассматривал возможность создания специального демона, но это похоже на изобретение колеса.

Я мог бы использовать Nginx в качестве кеширующего прокси, если это удобнее, Varnish кажется более популярным в этом случае.

Спасибо

Единственная ловушка, которую я могу предвидеть в Varnish, - это добавление новых серверов (бэкэндов) ... Varnish "нечувствителен к хостам", поэтому, учитывая, что все серверы могут обрабатывать запросы для всех хостов, у вас не будет никаких проблем.

Вы также можете использовать DNS-директор [1] (если вам не нужны проверки работоспособности), чтобы добавить сетевой диапазон (нотация cidr) внутренних серверов:

director directorname dns {
    .list = {
            .port = "80";
            .connect_timeout = 0.4s;
            "192.168.15.0"/3;
    }
    .ttl = 5m;
}

Вероятно, использование Puppet для такой установки - хорошая идея, но я думаю, вам понадобится специальный модуль для этого.

[1] https://www.varnish-cache.org/docs/3.0/reference/vcl.html#the-dns-director