Мреже за испоруку садржаја (ЦДН) користе веб-сајтови и апликације првенствено да убрзају учитавање статичких елемената. Ово се дешава кеширањем датотека на ЦДН серверима који се налазе у различитим географским регионима. Захтевајући податке преко ЦДН-а, корисник их добија од најближег сервера.
Принцип рада и функционалност свих мрежа за испоруку садржаја је приближно исти. Након што је добио захтев за преузимање датотеке, ЦДН сервер је узима једнократно са оригиналног сервера и даје кориснику, истовремено је кешује у одређеном временском периоду. На све наредне захтеве се одговара из кеша. Сви ЦДН-ови имају опције за претходно учитавање датотека, брисање кеша, подешавање истека кеша и још много тога.
Дешава се да је из ових или оних разлога потребно организовати сопствену мрежу за испоруку садржаја, а онда – нека нам од помоћи буду упутства за склапање следећег бицикла.
Хајде да погледамо случајеве у којима покретање сопственог ЦДН-а има смисла:
када желите да уштедите новац и текуће трошкове чак и када користите јефтине ЦДН-ове као што су БунниЦДН износе неколико стотина долара месечно
ако желимо да добијемо трајни кеш или кеш без суседа на серверу и каналу
ЦДН сервиси немају тачке присуства у региону који вам је потребан
Потребна су посебна подешавања испоруке садржаја
желимо да убрзамо испоруку динамичког садржаја постављањем производних сервера ближе корисницима
постоји забринутост да ЦДН услуга треће стране може непрописно прикупљати или користити информације о понашању корисника (поздрав услугама које нису усклађене са ГДПР-ом) или се бавити другим незаконитим активностима
У већини других случајева прикладније је користити постојећа готова решења.
Шта треба да почнете
Дивно је ако имате свој аутономни систем (АС). Помоћу њега можете доделити исту ИП адресу неколико сервера и према овом упутству на нивоу мреже, усмерите кориснике на најближи. Вреди рећи да је чак и са адресним блоком /24 могуће изградити мрежу за испоруку садржаја. Неки провајдери сервера вам дозвољавају да се оглашавате за коришћење у свим регионима који су им доступни.
Ако нисте срећни власник блока ИП адреса, за покретање једноставног ЦДН-а требаће вам:
име домена или поддомена
најмање два сервера у различитим регионима. Сервер може бити наменски или виртуелни
геоДНС алат. Уз његову помоћ, корисник који приступа домену биће усмерен на најближи сервер
Региструјте домен и наручите сервере
Са регистрацијом домена, све је једноставно - региструјемо се у било којој зони код било ког регистратора. Такође можете користити поддомен за ЦДН, на пример нешто попут цдн.домаиннаме.цом. У ствари, у нашем примеру ћемо урадити управо то.
Што се тиче наручивања сервера, они би требало да се изнајмљују у регионима и земљама у којима се налази ваша корисничка публика. Ако је пројекат интерконтинентални, онда је згодно изабрати хостинг провајдере који нуде сервере широм света. Примери: ОВХ, Леасевеб и КСНУМКСТб - за наменске сервере, Вултр и ДигиталОцеан — за виртуелни облак*.
За наш приватни ЦДН наручићемо 3 виртуелна сервера на различитим континентима. У Вултр на серверу за 5 долара месечно добићемо КСНУМКСГБ ССД места и 1ТБ саобраћаја. Током инсталације, изабраћемо најновији Дебиан. Наши сервери:
Франкфурт, ип: 199.247.18.199
Чикаго, ип: 149.28.121.123
Сингапур, ип: 157.230.240.216
*Вултр и ДигиталОцеан обећавају 100 УСД кредита корисницима који се региструју користећи везе у овом чланку када додају начин плаћања. Аутор од овога добија и мали комплимент, који је за њега сада веома значајан. Молимо за разумевање.
Подешавање геоДНС-а
Да бисмо били сигурни да када корисник приступи ЦДН домену или поддомену, буде усмерен на жељени (најближи) сервер, биће нам потребан ДНС сервер са геоДНС функцијом.
Принцип и радна процедура геоДНС-а је следећа:
Дефинише ИП клијента који је послао ДНС захтев или ИП рекурзивног ДНС сервера који се користи приликом обраде клијентског захтева. Такви рекурзивни сервери су обично ДНС провајдери.
ИП клијента идентификује његову земљу или регион. За то се користе ГеоИП базе података којих данас има много. Има добрих бесплатне опције.
У зависности од локације клијента, даје му ИП адресу најближег ЦДН сервера.
ДНС сервер са геоДНС функцијом може бити сами саставите, али је боље користити готова решења са мрежом ДНС сервера широм света и Аницаст из кутије:
ЦлоудДНС из 9.95 долара месечно, ГеоДНС тарифа, подразумевано постоји један ДНС Фаиловер
Зилоре из 25 долара месечно, ДНС Фаиловер је омогућен
Амазон Роуте 53 из 35 долара месечно за чистих 50М гео-упита. ДНС Фаиловер се наплаћује посебно
цлоудфларе, функција „Гео управљање“ је доступна у Ентерприсе тарифама
Приликом наручивања геоДНС-а треба обратити пажњу на број захтева укључених у тарифу и узети у обзир да стварни број захтева на домен може бити вишеструко већи од очекиваног. Милиони паукова, скенера, спамера и других злих духова неуморно раде.
Скоро све ДНС услуге укључују у цену неизоставну услугу за изградњу ЦДН-а - ДНС Фаиловер. Уз његову помоћ можете подесити праћење рада својих сервера и, ако нема знакова живота, аутоматски заменити адресу нерадног сервера у ДНС одговорима резервном.
За изградњу нашег ЦДН-а користићемо ЦлоуДНС, ГеоДНС тарифа.
Хајде да додамо нову ДНС зону у ваш лични налог, указујући на ваш домен. Ако градимо ЦДН на поддомену, а главни домен је већ у употреби, онда одмах након додавања зоне не заборавите да додате постојеће радне ДНС записе. Следећи корак је креирање неколико А-записа за ЦДН домен/поддомен, од којих ће сваки бити коришћен за регион који смо навели. Можете навести континенте или земље као регионе; подрегиони су доступни за САД и Канаду.
У нашем случају, ЦДН ће бити подигнут на поддомену цдн.саит.ин. Додавањем зоне саит.ин, хајде да направимо први А-запис за поддомен и усмеримо целу Северну Америку на сервер у Чикагу:
Поновимо радњу за друге регионе, не заборављајући да креирамо један унос за подразумеване регионе. Ево шта добијате на крају:
Последњи подразумевани унос на снимку екрана значи да ће сви неодређени региони (а то су Европа, Африка, корисници сателитског Интернета, итд.) бити послати на сервер у Франкфурту.
Ово завршава основно подешавање ДНС-а. Остаје само да одете на веб локацију регистратора домена и замените тренутне НС-ове домена онима које је издао ЦлоуДНС. И док се НС ажурирају, ми ћемо припремити сервере.
Инсталирање ССЛ сертификата
Наш ЦДН ће радити преко ХТТПС-а, па ако већ имате ССЛ сертификате за домен или поддомен, отпремите их на све сервере, на пример у директоријум /етц/ссл/иоурдомаин/
Ако немате сертификате, можете добити бесплатан од Лет'с Енцрипт. Савршено за ово АЦМЕ Схелл скрипта. Клијент је згодан и лак за конфигурисање, и што је најважније, омогућава вам да потврдите домен/поддомен користећи ДНС преко АПИ-ја из ЦлоуДНС-а.
Инсталираћемо ацме.сх само на један од сервера - европски 199.247.18.199, са којег ће сертификати бити копирани на све остале. Да бисте инсталирали, урадите:
Током инсталације скрипте, креираће се ЦРОН задатак за даље ажурирање сертификата без нашег учешћа.
Верификација домена приликом издавања сертификата ће се вршити преко ДНС-а помоћу АПИ-ја, тако да у свом ЦлоуДНС личном налогу у Реселлер АПИ менију треба да креирате новог АПИ корисника и поставите лозинку за њега. Добијени аутх-ид са лозинком ћемо записати у датотеку ~/.ацме.сх/днсапи/днс_цлоуднс.сх (не треба мешати са датотеком днс_цлоуdднс.сх). Ево редова које треба опозвати коментарисање и изменити:
У параметрима смо за будућност навели команду за аутоматско поновно учитавање конфигурације веб сервера након сваког будућег ажурирања валидности сертификата.
Цео процес добијања сертификата може трајати до 2 минута, немојте га прекидати. Ако дође до грешке при валидацији домена, покушајте поново да покренете команду. На крају ћемо видети где су сертификати преузети:
Подсетимо се ових путања, потребно их је навести приликом копирања сертификата на друге сервере, као иу подешавањима веб сервера. Не обраћамо пажњу на грешку поновног учитавања Нгинк конфигурација - на потпуно конфигурисаном серверу неће се појавити приликом ажурирања сертификата.
Све што нам преостаје са ССЛ-ом је да копирамо примљени сертификат на два друга сервера, чувајући путању до датотека. Хајде да направимо исте директоријуме на сваком од њих и направимо копију:
Да бисмо редовно ажурирали сертификате, креираћемо дневни ЦРОН задатак на оба сервера са командом:
scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload
У овом случају, приступ удаљеном изворном серверу мора бити конфигурисан по кључу, тј. без уношења лозинке. Не заборавите да урадите ово.
Инсталирање и конфигурисање Нгинк-а
За послуживање статичког садржаја користићемо Нгинк конфигурисан као прокси сервер за кеширање. Хајде да ажурирамо листе пакета и инсталирамо их на сва три сервера:
мак_сизе — величина кеша која не прелази расположиви простор на диску
неактиван — време складиштења за кеширане податке којима се није приступило
ссл_цертифицате и ссл_цертифицате_кеи — путање до ССЛ сертификата и датотека кључева
проки_цацхе_валид — време складиштења кешираних података
проки_пасс — адреса оригиналног сервера са којег ће ЦДН захтевати датотеке за кеширање. У нашем примеру ово је саит.ин
Као што видите, све је једноставно. Једина потешкоћа може настати у подешавању времена кеширања због сличности директива неактиван и проки_цацхе_валид. Погледајмо их користећи наш пример. Ово се дешава када неактиван=7д и проки_цацхе_валид 90д:
ако се захтев не понови у року од 7 дана, подаци ће бити избрисани из кеша након овог периода
ако се захтев понови најмање једном сваких 7 дана, онда ће се подаци у кешу сматрати застарелим након 90 дана и са следећим захтевом Нгинк ће их ажурирати, узимајући их са оригиналног сервера
По завршетку уређивања нгинк.цонф, поново учитајте конфигурацију:
root@cdn:~# service nginx reload
Наш ЦДН је потпуно спреман. За 15 долара месечно. добили смо тачке присуства на три континента и 3 ТБ саобраћаја: 1 ТБ на свакој локацији.
Провера рада ЦДН-а
Хајде да погледамо пингове до нашег ЦДН-а са различитих географских локација. Било који пинг сервис је погодан за ово.
Резултати су добри. Сада поставимо пробну слику у корен главног сајта тест.јпг и проверите његову брзину преузимања преко ЦДН-а. Речено је - направљен. Садржај се испоручује брзо.
Хајде да напишемо малу скрипту у случају да желимо да обришемо кеш на ЦДН тачки. пурге.сх
#!/bin/bash
if [ -z "$1" ]
then
echo "Purging all cache"
rm -rf /var/cache/cdn/*
else
echo "Purging $1"
FILE=`echo -n "$1" | md5sum | awk '{print $1}'`
FULLPATH=/var/cache/cdn/${FILE:31:1}/${FILE:29:2}/${FILE}
rm -f "${FULLPATH}"
fi
Да бисте избрисали цео кеш, само га покрените; можете да обришете засебну датотеку овако:
root@cdn:~# ./purge.sh /test.jpg
Уместо закључака
На крају желим да дам неколико корисних савета како бих одмах прешао преко грабљи од којих ме је некада заболела глава:
Да бисте повећали толеранцију на грешке ЦДН-а, препоручује се да конфигуришете ДНС Фаиловер, што помаже да се А запис брзо промени у случају квара сервера. Ово се ради на контролној табли доменских ДНС записа
Сајтови са широким географским дометом ће несумњиво захтевати велики број ЦДН поена, али немојмо бити фанатични. Највероватније, корисник неће приметити значајну разлику у поређењу са плаћеним ЦДН-ом ако поставите сервере на 6-7 места: Европа, Северна Америка (исток), Северна Америка (запад), Сингапур, Аустралија, Хонг Конг или Јапан
Понекад хостери не дозвољавају коришћење изнајмљених сервера у ЦДН сврхе. Стога, ако изненада одлучите да поставите мрежу за испоруку садржаја као услугу, не заборавите да унапред прочитате правила вашег одређеног хостинг провајдера
Истражите карта подводних комуникацијазамислити како су континенти повезани и узети то у обзир приликом изградње мреже за испоруку садржаја
Покушајте да проверите пингови са различитих места на своје сервере. На овај начин можете видети регионе најближе ЦДН тачкама и исправније конфигурисати ГеоДНС
У зависности од задатака, било би корисно прилагодити Нгинк специфичним захтевима за кеширање и узимајући у обзир оптерећење на серверу. Чланци о Нгинк кешу су ми много помогли у овоме - овде и убрзање рада под великим оптерећењима: овде и овде