На работе один из наших проектов обзавёлся CDN: мы решили прекратить мучения наших иностранных игроков и стать к ним ближе. Больше всех выиграли американцы, им досталось максимальное количество CDN-нод. Европе, включая Украину, тоже стало лучше. А вот российские игроки несколько пострадали, в связи с чем пришлось подыскать ещё и российский CDN. Теперь выходит, что и волки сыты и овцы целы, и единственный недостаток решения – то, что оно не слишком дешёвое. Однако деваться особо некуда. В конце концов, за то, что сейчас худший увиденный пинг до наших серверов 60мс, можно и заплатить.
Интереса ради решил попробовать построить миниатюрную CDN собственными силами. Сервак в Германии у меня уже есть, в России в общем-то тоже, и вот решил приспособить под ещё одну ноду украинский vps с тестовым периодом. Думаю, стоит попробовать поработать на основе патча GeoDNS для Bind, хотя решение это кривое и неоптимальное. Оптимально – вести собственную базу на основании пингов, а не географической привязки.
Само распространение данных по CDN возможно либо через rsync, либо через проксирование (с кэшированием) запросов. Хотя оптимальным, несомненно, является сочетание этих двух подходов: большие файлы через проксирование гонять совершенно неинтересно, например.
Веб-сервер, вероятно, nginx – зарекомендовал себя с самой лучшей стороны. Возможно, nginx-catap.
И да, интереса ради – заинтересован в каком-нибудь недорогом VPS на территории США, для того же теста. Думается, четырёх нодов для теста будет выше крыши.