Прежде всего, я объясню вам мою ситуацию. Я использую довольно популярный веб-сайт как побочный проект, поэтому я не могу вкладывать в него кучу денег. В настоящее время у меня есть только один сервер с HAProxy, который отправляет нормальные запросы в Apache, и все запросы статических файлов в Lighttpd. Это работает очень хорошо, потому что все запросы php и post обрабатываются Apache, в то время как все изображения отправляются на более быстрый Lighttpd (сайт в основном состоит из изображений, так что это действительно важно). Было бы хорошо, если бы вам не пришлось настраивать поддомен для обслуживания изображений, потому что короткие URL-адреса также очень важны, поэтому я и использую HAProxy.
Я нашел хостинг-провайдера, который предлагает довольно дешевую неизмеримую пропускную способность, которую я использовал, проблема возникает, когда я начинаю выдвигать столько пропускной способности, сколько может выдержать сетевая карта 100 МБ, поэтому нужен второй сервер.
Я много думал о своих вариантах, поэтому объясню каждый из них. Надеюсь, вы могли бы дать некоторое представление о том, какой из них лучший для меня, или, может быть, есть еще один вариант, о котором я еще не думал.
Требования:
Даже распределение пропускной способности является обязательным. У меня довольно мощный сервер, поэтому масштабирование не вариант. Мне нужно масштабировать, чтобы увеличить пропускную способность.
Короткие URL. Я действительно не хочу настраивать поддомен, такой как img.example.com, для обслуживания моих изображений. example.com/image.jpg - это то, как оно есть сейчас, и как бы я хотел, чтобы он остался. Но если нет другого пути, тогда я понимаю.
Самый короткий сервер, обрабатывающий запрос, был бы действительно хорош, но не обязателен. Что-то иметь в виду.
HAProxy to loadbalance:
- Это было бы действительно легко сделать, так как я все равно уже использую HAProxy. Тем не менее, я думаю, что проблема возникает при распределении пропускной способности. Я могу ошибаться в этом, но разве HAProxy не отправляет запрос на сервер, где сервер обрабатывает его, а затем отправляет его обратно через HAProxy клиенту? Таким образом, весь трафик возвращается обратно через балансировщик нагрузки, заставляя его использовать столько пропускной способности, сколько все серверы вместе взятые.
DNS Round Robin:
- Это может быть моим лучшим вариантом. Просто скопируйте сайт на несколько серверов и делайте то, что я делаю сейчас. Недостатком является то, что если один сервер выходит из строя, клиенты по-прежнему отправляются на него. Мне также нужно будет реплицировать сайт на нескольких серверах. Я надеялся, что у меня будет один главный сервер, который обрабатывает все, кроме статических файлов, а затем пара статических файловых серверов. Я также читал, что это было своего рода «балансировкой нагрузки для бедняков», и было бы неплохо иметь что-то более сложное.
Прямой возврат на сервер:
- Это кажется действительно сложным, но может быть хорошим вариантом. Смогу ли я отправлять определенные URL-адреса на определенные серверы? Как и сейчас с HAProxy, каждый URL, заканчивающийся правильным расширением файла, отправляется Lighttpd, в то время как другие расширения отправляются в Apache. Так что мне нужно что-то подобное. Мол, все php-запросы обрабатываются одним и тем же сервером, на котором запущено программное обеспечение для балансировки, а все jpg-запросы отправляются на несколько серверов.
В идеале, если бы HAProxy поддерживал Direct Server Return, тогда моя проблема была бы решена. Я также не хочу использовать CDN, потому что они действительно дорогие, и это всего лишь побочный проект.
Вы понимаете мою проблему? Дайте мне знать, если я что-то не правильно объяснил или вам нужна дополнительная информация.