По-перше, я поясню вам свою ситуацію. Я веду досить популярний веб-сайт як побічний проект, тому я не можу реально вкласти в нього тону грошей. Наразі у мене є лише один сервер з HAProxy спереду, який надсилає звичайні запити Apache, і всі запити статичних файлів до Lighttpd. Це працює дуже добре, тому що всі запити на php та post надходять Apache, тоді як усі зображення надсилаються на швидший Lighttpd (на сайті в основному є зображення, тому це дійсно важливо). Було б непогано не встановлювати субдомен для подання зображень, тому що короткі URL-адреси також дуже важливі, тому моя причина використання HAProxy.
Я знайшов хостинг-провайдера, який пропонує досить дешеву нерегульовану пропускну здатність, яку я використовував. Проблема виникає, коли я починаю виштовхувати стільки пропускної здатності, скільки мережева карта 100 Мбіт може працювати, тим самим потрібен другий сервер.
Я багато вдумався у свої варіанти, тому я поясню вам кожен. Сподіваємось, ви зможете дати зрозуміти, який із них найкращий варіант для мене, а може, є ще один варіант, про який я ще не думав.
Вимоги:
Навіть розподіл пропускної здатності є обов'язковим. У мене досить потужний сервер, тому масштабування не є варіантом. Мені потрібно масштабувати, щоб отримати більшу пропускну здатність.
Короткі URL-адреси. Я дійсно не хочу налаштовувати піддомен, наприклад img.example.com, для обслуговування своїх зображень. example.com/image.jpg - це як зараз, і як я дуже хотів би, щоб це залишилося. Але якщо іншого шляху немає, то я розумію.
Найбільш близький сервер, що обробляє запит, був би дуже приємним, але не обов'язковим. Щось мати на увазі.
HAProxy для балансування навантаження:
- Це було б дуже просто, оскільки я вже використовую HAProxy. Однак, я думаю, проблема виникає при розподілі пропускної здатності. Я можу помилитися з цим, але хіба HAProxy не надсилає запит на сервер, де сервер обробляє його, а потім надсилає його назад через HAProxy клієнту? Таким чином, весь трафік виходить назад через балансир навантаження, що змушує використовувати стільки пропускної здатності, скільки всі сервери разом.
DNS Round Robin:
- Це, можливо, мій найкращий варіант. Просто копіюйте веб-сайт на декількох серверах і робіть те, що я зараз роблю. Мінус полягає в тому, що якщо один сервер виходить з ладу, клієнти все одно надсилаються на нього. Мені потрібно також копіювати сайт на декількох серверах. Я сподівався, що я можу мати один основний сервер, який обробляє все, окрім статичних файлів, а потім мати пару статичних файлових серверів. Я також читав, що це щось на зразок «балансування навантаження бідного чоловіка», і було б непогано мати щось трохи складніше.
Пряме повернення сервера:
- Це здається справді складним, але може бути хорошим варіантом. Чи все-таки я зможу надсилати певні URL-адреси на певні сервери? Як і зараз з HAProxy, кожна URL-адреса, яка закінчується у правій розширенні файлу, надсилається до Lighttpd, а інші розширення надсилаються Apache. Тож мені знадобилося б щось подібне. Мовляв, всі запити php обробляються тим самим сервером, на якому працює програмне забезпечення балансування, в той час як всі jpg-запити надсилаються на кілька серверів.
В ідеалі, якби HAProxy підтримував пряме повернення сервера, тоді моя проблема була б вирішена. Я також не хочу використовувати CDN, тому що вони дійсно дорогі, і це лише побічний проект.
Ви розумієте мою проблему? Повідомте мене, якщо я щось не пояснив правильно чи вам потрібна додаткова інформація.