Satura piegÄdes tÄ«kli (CDN) tiek izmantoti vietnÄs un lietojumprogrammÄs galvenokÄrt, lai paÄtrinÄtu statisko elementu ielÄdi. Tas notiek, pateicoties failu saglabÄÅ”anai keÅ”atmiÅÄ CDN serveros, kas atrodas dažÄdos Ä£eogrÄfiskos reÄ£ionos. Pieprasot datus caur CDN, lietotÄjs tos saÅem no tuvÄkÄ servera.
Visu satura piegÄdes tÄ«klu darbÄ«bas princips un funkcionalitÄte ir aptuveni vienÄda. SaÅemot pieprasÄ«jumu lejupielÄdÄt failu, CDN serveris to vienreiz paÅem no sÄkotnÄjÄ servera un nodod lietotÄjam, vienlaikus saglabÄjot to keÅ”atmiÅÄ uz noteiktu laiku. Uz visiem turpmÄkajiem pieprasÄ«jumiem tiek atbildÄts no keÅ”atmiÅas. Visiem CDN ir iespÄjas iepriekÅ” ielÄdÄt failus, notÄ«rÄ«t keÅ”atmiÅu, iestatÄ«t derÄ«guma termiÅu un veikt citas darbÄ«bas.
GadÄs, ka tÄ vai cita iemesla dÄļ ir jÄsakÄrto savs satura piegÄdes tÄ«kls un tad - lai mums noder nÄkamÄ velosipÄda komplektÄÅ”anas instrukcija.
pastÄv bažas, ka treÅ”Äs puses CDN pakalpojums var nelikumÄ«gi vÄkt vai izmantot informÄciju par lietotÄju uzvedÄ«bu (sveicinÄti ar GDPR nesaderÄ«gie pakalpojumi) vai iesaistÄ«ties citÄs nelikumÄ«gÄs darbÄ«bÄs.
VairumÄ citu gadÄ«jumu lietderÄ«gÄk ir izmantot esoÅ”os gatavos risinÄjumus.
Kas jums ir nepiecieÅ”ams, lai sÄktu
Tas ir lieliski, ja jums ir sava autonomÄ sistÄma (AS). Ar to jÅ«s varat pieŔķirt vienu un to paÅ”u IP vairÄkiem serveriem un saskaÅÄ ar Å”o instrukciju tÄ«kla lÄ«menÄ« novirzÄ«t lietotÄjus uz tuvÄko. Ir vÄrts teikt, ka pat ar /24 adreÅ”u bloku ir iespÄjams izveidot satura piegÄdes tÄ«klu. Daži serveru nodroÅ”inÄtÄji ļauj jums sniegt paziÅojumu lietoÅ”anai visos tiem pieejamajos reÄ£ionos.
Ja neesat laimÄ«gs IP adreÅ”u bloka Ä«paÅ”nieks, tad, lai palaistu vienkÄrÅ”u CDN, jums bÅ«s nepiecieÅ”ams:
domÄna vÄrds vai apakÅ”domÄns
vismaz divi serveri dažÄdos reÄ£ionos. Serveris var bÅ«t gan veltÄ«ts, gan virtuÄls
geoDNS rÄ«ks. Ar to lietotÄjs, uzrunÄjis domÄnu, tiks novirzÄ«ts uz tuvÄko serveri
ReÄ£istrÄjiet domÄnu un pasÅ«tiet serverus
Ar domÄna reÄ£istrÄciju viss ir vienkÄrÅ”i ā mÄs reÄ£istrÄjamies jebkurÄ zonÄ pie jebkura reÄ£istratÅ«ras. Varat arÄ« izmantot CDN apakÅ”domÄnu, piemÄram, kaut ko lÄ«dzÄ«gu cdn.domainname.com. PatiesÄ«bÄ mÅ«su piemÄrÄ mÄs to darÄ«sim.
RunÄjot par serveru pasÅ«tÄ«Å”anu, tie ir jÄnomÄ reÄ£ionos un valstÄ«s, kur atrodas jÅ«su lietotÄju auditorija. Ja projekts ir starpkontinentÄls, tad Ärti izvÄlÄties hostinga pakalpojumu sniedzÄjus, kas piedÄvÄ serverus uzreiz visÄ pasaulÄ. PiemÄri: OVH, nomas tÄ«meklis Šø 100Tb - veltÄ«tiem serveriem, Vultr Šø DigitalOcean ā virtuÄlajam mÄkonim*.
* Vultr un DigitalOcean sola 100 USD kredÄ«tu lietotÄjiem, kuri reÄ£istrÄjas, izmantojot rakstÄ esoÅ”Äs saites, tÅ«lÄ«t pÄc maksÄjuma veida pievienoÅ”anas. Autors no tÄ saÅem arÄ« nelielu komplimentu, kas viÅam Å”obrÄ«d ir ļoti nozÄ«mÄ«gs. LÅ«dzu, esiet saprotoÅ”i.
ĢeoDNS iestatīŔana
Lai lietotÄjs, piekļūstot domÄnam vai CDN apakÅ”domÄnam, tiktu novirzÄ«ts uz vÄlamo (tuvÄko) serveri, nepiecieÅ”ams DNS serveris ar geoDNS funkciju.
Ä¢eoDNS princips un darbÄ«ba ir Å”Äda:
NorÄda DNS pieprasÄ«jumu nosÅ«tÄ«juÅ”Ä klienta IP vai rekursÄ«vÄ DNS servera IP, kas tiek izmantots, apstrÄdÄjot klienta pieprasÄ«jumu. Å Ädi rekursÄ«vie serveri parasti ir pakalpojumu sniedzÄju DNS.
Klienta IP atpazÄ«st viÅa valsti vai reÄ£ionu. Å im nolÅ«kam tiek izmantotas GeoIP datu bÄzes, kuru mÅ«sdienÄs ir ļoti daudz. Ir labi bezmaksas iespÄjas.
AtkarÄ«bÄ no klienta atraÅ”anÄs vietas pieŔķir viÅam tuvÄkÄ CDN servera IP adresi.
DNS serveris ar geoDNS funkciju var bÅ«t salikt pats, bet labÄk ir izmantot gatavus risinÄjumus ar DNS serveru tÄ«klu visÄ pasaulÄ un JebkurÅ” no kastes:
CloudDNS no 9.95 $/mÄn, GeoDNS tarifs, pÄc noklusÄjuma ir viens DNS kļūmjpÄrlÄce
Zilore no 25 $/mÄn, DNS kļūmjpÄrlÄce ir iespÄjota
Amazon Route 53 no 35 $/mÄn neto 50 miljoniem Ä£eogrÄfisko pieprasÄ«jumu. DNS kļūmjpÄrlÄce tiek iekasÄta atseviŔķi
DNS ir viegli no 125 $/mÄn, ir 10 DNS kļūmjpÄrlÄces
Cloudflare, Funkcija "Ä¢eogrÄfiskÄ vadÄ«ba" ir pieejama uzÅÄmuma plÄnos
PasÅ«tot geoDNS, jÄpievÄrÅ” uzmanÄ«ba tarifÄ iekļauto pieprasÄ«jumu skaitam un jÄpatur prÄtÄ, ka reÄlais pieprasÄ«jumu skaits domÄnam var vairÄkas reizes pÄrsniegt cerÄto. Miljoniem zirnekļu, skeneru, surogÄtpasta izplatÄ«tÄju un citu ļauno garu nenogurstoÅ”i strÄdÄ.
GandrÄ«z visos DNS pakalpojumos ir iekļauts neaizstÄjams pakalpojums CDN izveidoÅ”anai - DNS kļūmjpÄrlÄce. Ar tÄs palÄ«dzÄ«bu jÅ«s varat iestatÄ«t savu serveru darbÄ«bas uzraudzÄ«bu un, ja nav dzÄ«vÄ«bas pazÄ«mju, DNS atbildÄs automÄtiski aizstÄt nestrÄdÄjoÅ”a servera adresi ar rezerves adresi.
Lai izveidotu mÅ«su CDN, mÄs izmantosim CloudDNS, GeoDNS tarifs.
Pievienosim jaunu DNS zonu jÅ«su personÄ«gajÄ kontÄ, norÄdot jÅ«su domÄnu. Ja mÄs veidojam CDN apakÅ”domÄnÄ un galvenais domÄns jau tiek izmantots, tad uzreiz pÄc zonas pievienoÅ”anas neaizmirstiet pievienot esoÅ”os darba DNS ierakstus. NÄkamais solis ir izveidot vairÄkus A ierakstus CDN domÄnam/apakÅ”domÄnam, no kuriem katrs tiks piemÄrots mÅ«su norÄdÄ«tajam reÄ£ionam. KÄ reÄ£ionus varat norÄdÄ«t kontinentus vai valstis, ASV un KanÄdai ir pieejami apakÅ”reÄ£ioni.
MÅ«su gadÄ«jumÄ CDN tiks paaugstinÄts apakÅ”domÄnÄ cdn.sayt.in. Pievienojot zonu sayt.in, izveidojiet pirmo A ierakstu apakÅ”domÄnam un norÄdiet visu Ziemeļameriku uz serveri ÄikÄgÄ:
AtkÄrtosim darbÄ«bu citiem reÄ£ioniem, neaizmirstot izveidot vienu ierakstu noklusÄjuma reÄ£ioniem. LÅ«k, kas notiek beigÄs:
PÄdÄjais noklusÄjuma ieraksts ekrÄnuzÅÄmumÄ nozÄ«mÄ, ka visi nenorÄdÄ«tie reÄ£ioni (un tie ir Eiropa, Äfrika, satelÄ«ta interneta lietotÄji utt.) tiks nosÅ«tÄ«ti uz serveri FrankfurtÄ.
Tas pabeidz pamata DNS iestatÄ«Å”anu. Atliek doties uz domÄna reÄ£istratÅ«ras vietni un aizstÄt paÅ”reizÄjos domÄna NS ar tiem, ko izsniedz ClouDNS. Un kamÄr tiks atjauninÄti NS, mÄs sagatavosim serverus.
SSL sertifikÄtu uzstÄdÄ«Å”ana
MÅ«su CDN darbosies, izmantojot HTTPS, tÄdÄļ, ja jums jau ir SSL sertifikÄti domÄnam vai apakÅ”domÄnam, augÅ”upielÄdÄjiet tos visos serveros, piemÄram, direktorijÄ. /etc/ssl/yourdomain/
Ja sertifikÄtu nav, varat saÅemt bezmaksas sertifikÄtu vietnÄ Let's Encrypt. IdeÄls Å”im ACME Shellscript. Klients ir Ärti un viegli iestatÄms, un, pats galvenais, tas ļauj apstiprinÄt domÄnu/apakÅ”domÄnu, izmantojot DNS, izmantojot ClouDNS API.
MÄs uzstÄdÄ«sim acme.sh tikai vienÄ no serveriem - Eiropas 199.247.18.199, no kura sertifikÄti tiks kopÄti uz visiem pÄrÄjiem. Lai instalÄtu, palaidiet:
Skripta instalÄÅ”anas laikÄ tiks izveidots CRON darbs turpmÄkai sertifikÄtu atjaunoÅ”anai bez mÅ«su lÄ«dzdalÄ«bas.
Izsniedzot sertifikÄtu, domÄns tiks pÄrbaudÄ«ts, izmantojot DNS, izmantojot API, tÄpÄc ClouDNS personÄ«gajÄ kontÄ tÄlÄkpÄrdevÄja API izvÄlnÄ ir jÄizveido jauns lietotÄja API un jÄiestata tam parole. IegÅ«tais autentifikÄcijas ID ar paroli tiks ierakstÄ«ts failÄ ~/.acme.sh/dnsapi/dns_cloudns.sh (nejaukt ar failu dns_clouddns.sh). TÄlÄk ir norÄdÄ«tas rindas, kuras ir jÄatbrÄ«vo no komentÄriem un jÄrediÄ£Ä:
NÄkotnes opcijÄs esam norÄdÄ«juÅ”i komandu automÄtiski pÄrlÄdÄt tÄ«mekļa servera konfigurÄciju pÄc katras sertifikÄta derÄ«guma perioda atjaunoÅ”anas nÄkotnÄ.
Viss sertifikÄta iegÅ«Å”anas process var ilgt lÄ«dz 2 minÅ«tÄm, nepÄrtrauciet to. Ja rodas domÄna validÄcijas kļūda, mÄÄ£iniet palaist komandu vÄlreiz. BeigÄs redzÄsim, kur ir augÅ”upielÄdÄti sertifikÄti:
Viss, kas mums atliek SSL, ir pÄrkopÄt saÅemto sertifikÄtu uz diviem citiem serveriem, vienlaikus saglabÄjot ceļu uz failiem. Izveidosim vienÄdus direktorijus katrÄ no tiem un izveidosim kopiju:
Lai regulÄri atjauninÄtu sertifikÄtus, izveidojiet ikdienas CRON darbu abos serveros ar komandu:
scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload
Å ÄdÄ gadÄ«jumÄ ir jÄkonfigurÄ piekļuve attÄlÄ avota serverim pÄc atslÄgas, t.i. neievadot paroli. Neaizmirstiet to izdarÄ«t.
Nginx instalÄÅ”ana un konfigurÄÅ”ana
Lai apkalpotu statisku saturu, mÄs izmantosim Nginx, kas konfigurÄts kÄ keÅ”atmiÅas starpniekserveris. Atjauniniet pakotÅu sarakstus un instalÄjiet to visos trÄ«s serveros:
max_size ā keÅ”atmiÅas lielums, nepÄrsniedzot pieejamo diska vietu
neaktÄ«vs - keÅ”atmiÅÄ saglabÄto datu uzglabÄÅ”anas laiks, kam neviens nav piekļuvis
ssl_certificate Šø ssl_certificate_key ā ceļi uz SSL sertifikÄtu un atslÄgu failiem
proxy_cache_valid - keÅ”atmiÅÄ saglabÄto datu uzglabÄÅ”anas laiks
starpniekserveris ā sÄkotnÄjÄ servera adrese, no kuras CDN pieprasÄ«s failus keÅ”atmiÅÄ. MÅ«su piemÄrÄ Å”is sayt.in
KÄ redzat, viss ir vienkÄrÅ”i. GrÅ«tÄ«bas var rasties tikai keÅ”atmiÅas laika iestatÄ«Å”anÄ direktÄ«vu lÄ«dzÄ«bas dÄļ neaktÄ«vs Šø proxy_cache_valid. AnalizÄsim tos ar mÅ«su piemÄru. LÅ«k, kas notiek, kad neaktÄ«vs=7d Šø proxy_cache_valid 90d:
ja pieprasÄ«jums netiek atkÄrtots 7 dienu laikÄ, pÄc Ŕī perioda dati no keÅ”atmiÅas tiks dzÄsti
ja pieprasÄ«jums tiek atkÄrtots vismaz reizi 7 dienÄs, keÅ”atmiÅÄ esoÅ”ie dati tiks uzskatÄ«ti par novecojuÅ”iem pÄc 90 dienÄm un Nginx tos atjauninÄs ar nÄkamo pieprasÄ«jumu, Åemot tos no sÄkotnÄjÄ servera
RediÄ£ÄÅ”ana pabeigta nginx.conf, atkÄrtoti ielÄdÄjiet konfigurÄciju:
root@cdn:~# service nginx reload
MÅ«su CDN ir gatavs. Par USD 15 mÄnesÄ«. mÄs saÅÄmÄm klÄtbÅ«tnes punktus trÄ«s kontinentos un 3 TB satiksmes: 1 TB katrÄ vietÄ.
CDN darba pÄrbaude
ApskatÄ«sim ping uz mÅ«su CDN no dažÄdÄm Ä£eogrÄfiskÄm vietÄm. Å im nolÅ«kam darbosies jebkurÅ” ping pakalpojums.
PalaiŔanas punkts
Saimnieks
IP
VidÄjais laiks, ms
RezultÄti ir labi. Tagad mÄs ievietosim testa attÄlu galvenÄs vietnes saknÄ test.jpg un pÄrbaudiet tÄ lejupielÄdes Ätrumu, izmantojot CDN. Tas ir pateikts - izgatavots. Saturs tiek piegÄdÄts Ätri.
UzrakstÄ«sim nelielu skriptu, ja vÄlamies notÄ«rÄ«t CDN punkta keÅ”atmiÅu. purge.sh
#!/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
Lai izdzÄstu visu keÅ”atmiÅu, vienkÄrÅ”i palaidiet to, atseviŔķu failu var notÄ«rÄ«t Å”Ädi:
root@cdn:~# ./purge.sh /test.jpg
SecinÄjumu vietÄ
NobeigumÄ vÄlos sniegt dažus noderÄ«gus padomus, lai uzreiz pÄrkÄptu pÄri grÄbeklim, no kura tobrÄ«d sÄpÄja galva:
Lai palielinÄtu CDN kļūdu toleranci, ieteicams konfigurÄt DNS kļūmjpÄreju, kas palÄ«dz Ätri mainÄ«t A ierakstu servera bojÄjuma gadÄ«jumÄ. Tas tiek darÄ«ts domÄna vadÄ«bas paneļa DNS ierakstos.
VietnÄm ar plaÅ”u Ä£eogrÄfisko pÄrklÄjumu, bez Å”aubÄm, ir nepiecieÅ”ams liels skaits CDN, taÄu nebÅ«sim fanÄtiski. VisticamÄk, lietotÄjs nepamanÄ«s bÅ«tisku atŔķirÄ«bu salÄ«dzinÄjumÄ ar maksas CDN, ja izvietosiet serverus 6-7 vietÄs: EiropÄ, ZiemeļamerikÄ (austrumos), ZiemeļamerikÄ (rietumos), SingapÅ«rÄ, AustrÄlijÄ, HonkongÄ vai JapÄnÄ.
Dažreiz mitinÄtÄji neļauj izmantot nomÄtos serverus CDN vajadzÄ«bÄm. TÄpÄc, ja pÄkÅ”Åi nolemjat kÄ pakalpojumu izvietot satura piegÄdes tÄ«klu, neaizmirstiet iepriekÅ” izlasÄ«t konkrÄta mitinÄÅ”anas pakalpojumu sniedzÄja noteikumus.
IzpÄtÄ«t zemÅ«dens sakaru kartelai attÄlotu kontinentu savienojumu un Åemtu to vÄrÄ, veidojot satura piegÄdes tÄ«klu
MÄÄ£iniet pÄrbaudÄ«t ping no dažÄdÄm vietÄm uz jÅ«su serveriem. TÄdÄ veidÄ jÅ«s varat redzÄt CDN punktiem tuvÄkos reÄ£ionus un pareizÄk konfigurÄt GeoDNS
AtkarÄ«bÄ no uzdevumiem bÅ«s lietderÄ«gi precÄ«zi noregulÄt Nginx, lai atbilstu Ä«paÅ”Äm keÅ”atmiÅas prasÄ«bÄm un Åemot vÄrÄ servera slodzi. Raksti par Nginx keÅ”atmiÅu man ļoti palÄ«dzÄja Å”ajÄ - Å”eit un darba paÄtrinÄÅ”ana lielÄs slodzÄs: Å”eit Šø Å”eit