Как настроить apache с mod_cache и mod_proxybalance для массового виртуального хостинга
У меня есть ферма серверов IIS, которая предоставляет что-то похожее на сайты парковки доменов, с тысячами доменов, назначенных системе, и контентом, генерируемым динамически. Мне нужно решение для балансировки нагрузки и кэширования. Я намерен использовать Apache 2.2 с mod_cache и mod_proxybalance для достижения этой цели.
Мой предыдущий опыт работы с Apache был довольно ограниченным и обычно имел дело только с несколькими виртуальными хостами на основе имен. Я никогда не реализовывал балансировку нагрузки или прокси с ней раньше.
При изучении конфигурации я оставляю себе голову над некоторыми базовыми директивами конфигурации, которые я не знаю, как настроить для этой среды. В частности, документы apache дают страшные предупреждения о неправильной настройке директив ServerName. В этой ситуации я не уверен, как справиться с этим.
Сайт обслуживает не собственный контент, а кэшированный и прокси-контент. Я не могу поместить каждое доменное имя в отдельные директивы virutalhost. Являются ли такие директивы, как ServerName (или другие директивы, требующие доменных имен), даже необходимыми в этой ситуации?
РЕДАКТИРОВАТЬ:
Если вы хотите предложить другие решения, я открыт для них. До сих пор был предложен ngnix, но ngnix не может использовать виртуальные хосты, основанные на имени прокси-сервера, потому что его прокси-код использует только http 1.0 для внутренних серверов. Я также не уверен, может ли он кэшировать виртуальные хосты на основе имен.
Varnish выглядит как возможное решение для кэширования, но мне бы очень хотелось, чтобы что-то, что я мог разместить на одном и том же сервере, поэтому мне не нужно несколько серверов для каждой функции.
3 ответа
Если вы собираетесь заменить бэкэнд, mod_vhost_alias
В противном случае, если вы просто размещаете кэширование перед существующим решением, Varnish или Squid подойдут лучше. Varnish имеет встроенную поддержку для балансировки нагрузки бэкэнда, проверки работоспособности и т. Д. Вы также можете запустить пару серверов ipvs перед балансировкой нагрузки и обеспечить 100% времени безотказной работы для пары (или более) серверов Varnish.
В основном вам понадобится <VirtualHost *>
для каждого домена, каждый со своим ServerName
а также ServerAlias
Внутри каждого вы поместите директивы, относящиеся к прокси и кешу.
Я предлагаю вам поместить один домен на файл в общий каталог и включить все это из основного файла apache. В настоящее время большинство дистрибутивов Linux делают это, используя такие каталоги, как Debian/Ubuntu sites-available
а также sites-enabled
- все домены являются файлами внутри доступного каталога и просто связаны внутри активированного каталога для активации.
И я знаю, что это не то, что вы спросили, но, так как это просто парковка домена, вы рассматривали возможность использования nginx? Он предназначен для таких вещей (внешний интерфейс, чтобы получать большие хиты и обслуживать статический / кэшированный / прокси-контент).
Возможно, вы захотите взглянуть на http://httpd.apache.org/docs/2.0/vhosts/mass.html и особенно последний абзац. Я успешно запустил массовый хостинг с mod_rewrite.