Sisu edastamise vĂ”rke (CDN-e) kasutavad veebisaidid ja rakendused peamiselt staatiliste elementide laadimise kiirendamiseks. See juhtub failide vahemĂ€llu salvestamisel erinevates geograafilistes piirkondades asuvates CDN-serverites. CDN-i kaudu andmeid kĂŒsides saab kasutaja need lĂ€himast serverist.
KĂ”igi sisuedastusvĂ”rkude tööpĂ”himĂ”te ja funktsionaalsus on ligikaudu samad. PĂ€rast faili allalaadimise taotluse saamist vĂ”tab CDN-server selle ĂŒhekordselt algsest serverist ja annab selle kasutajale, sĂ€ilitades samal ajal selle kindlaksmÀÀratud ajavahemikuks vahemĂ€llu. KĂ”ikidele jĂ€rgnevatele pĂ€ringutele vastatakse vahemĂ€lust. KĂ”ikidel CDN-idel on vĂ”imalused failide eellaadimiseks, vahemĂ€lu tĂŒhjendamiseks, vahemĂ€lu aegumise mÀÀramiseks ja palju muud.
Juhtub, et ĂŒhel vĂ”i teisel pĂ”hjusel on vaja korraldada oma sisu edastamise vĂ”rgustik ja siis - olgu meile abiks jĂ€rgmise ratta kokkupanemise juhend.

Allikas:
Millal vajate oma CDN-i?
Vaatame juhtumeid, kus oma CDN-i kÀitamine on mÔttekas:
- kui soovite sÀÀsta raha ja jooksvaid kulusid isegi siis, kui kasutate selliseid odavaid CDN-e ulatub mitmesaja dollarini kuus
- kui tahame saada pĂŒsivat vahemĂ€lu vĂ”i vahemĂ€lu ilma naabriteta serveris ja kanalis
- CDN-i teenustel pole teie vajalikus piirkonnas kohalolekupunkte
- Vaja on mis tahes spetsiaalseid sisu edastamise seadeid
- tahame kiirendada dĂŒnaamilise sisu edastamist, asetades tootmisserverid kasutajatele lĂ€hemale
- on mure, et kolmanda osapoole CDN-teenus vĂ”ib valesti koguda vĂ”i kasutada teavet kasutaja kĂ€itumise kohta (tere, GDPR-ga mitteĂŒhilduvad teenused) vĂ”i osaleda muus ebaseaduslikus tegevuses
Enamikul muudel juhtudel on Ôigem kasutada olemasolevaid valmislahendusi.
Mida peate alustama
See on suurepĂ€rane, kui teil on oma autonoomne sĂŒsteem (AS). Sellega saate mÀÀrata sama IP mitmele serverile ja vĂ”rgu tasemel suunata kasutajad lĂ€himasse. Tasub öelda, et isegi /24 aadressiplokiga on vĂ”imalik ĂŒles ehitada sisu edastamise vĂ”rk. MĂ”ned serveripakkujad lubavad teil reklaamida kasutamiseks kĂ”igis neile saadaolevates piirkondades.
Kui te pole IP-aadresside ploki Ônnelik omanik, vajate lihtsa CDN-i kÀivitamiseks:
- domeeninimi vÔi alamdomeen
- vĂ€hemalt kaks serverit erinevates piirkondades. Server vĂ”ib olla kas pĂŒhendatud vĂ”i virtuaalne
- geoDNS-i tööriist. Selle abiga suunatakse domeenile ligipÀÀsev kasutaja lÀhimasse serverisse
Registreerige domeen ja tellige servereid
Domeeni registreerimisega on kĂ”ik lihtne â registreerime end igas tsoonis mis tahes registripidaja juures. CDN-i jaoks saate kasutada ka alamdomeeni, nĂ€iteks midagi sellist cdn.domainname.com. Tegelikult teeme meie nĂ€ites just seda.
Mis puutub serverite tellimisse, siis need tuleks rentida nendes piirkondades ja riikides, kus teie kasutajate vaatajaskond asub. Kui projekt on kontinentidevaheline, siis on mugav valida hostingu pakkujad, kes pakuvad servereid ĂŒle kogu maailma. NĂ€ited: , Đž - spetsiaalsete serverite jaoks, Đž â virtuaalse pilve* jaoks.
Meie privaatse CDN-i jaoks tellime 3 virtuaalserverit erinevatel kontinentidel. U Vultr jaoks serveris 5 dollarit kuus me saame 25GB SSD kohad ja 1TB liiklust. Installimise ajal valime uusima Debiani. Meie serverid:
Frankfurt, ip: 199.247.18.199
Chicago, ip: 149.28.121.123
Singapur, ip: 157.230.240.216
*Vultr ja DigitalOcean lubavad 100 dollarit krediiti kasutajatele, kes registreeruvad, kasutades makseviisi lisamist, kasutades selle artikli linke. Sellest saab autor ka vÀikese komplimendi, mis on tema jaoks praegu vÀga mÀrgiline. Palun olge mÔistvad.
GeoDNS-i seadistamine
Tagamaks, et kui kasutaja pöördub CDN-i domeeni vÔi alamdomeeni poole, suunatakse ta soovitud (lÀhimale) serverile, vajame geoDNS-funktsiooniga DNS-serverit.
GeoDNS-i pÔhimÔte ja tööprotseduur on jÀrgmine:
- MÀÀrab DNS-pÀringu saatnud kliendi IP-aadressi vÔi kliendipÀringu töötlemisel kasutatava rekursiivse DNS-serveri IP-aadressi. Sellised rekursiivsed serverid on tavaliselt DNS-i pakkujad.
- Kliendi IP tuvastab tema riigi vÔi piirkonna. Selleks kasutatakse GeoIP andmebaase, mida tÀnapÀeval on vÀga palju. On mÔned head .
- SÔltuvalt kliendi asukohast annab see talle lÀhima CDN-serveri IP-aadressi.
GeoDNS-funktsiooniga DNS-server vĂ”ib olla , kuid parem on kasutada valmislahendusi DNS-serverite vĂ”rguga ĂŒle maailma ja kastist:
- pĂ€rit 9.95 dollarit kuus, GeoDNS-i tariif, vaikimisi on ĂŒks DNS-i tĂ”rkevahetus
- pÀrit 25 dollarit kuus, DNS-i tÔrkevahetus lubatud
- pÀrit 35 dollarit kuus puhta 50 miljoni geopÀringu jaoks. DNS-i tÔrkevahetuse eest tasutakse eraldi
- pÀrit 125 dollarit kuus, on 10 DNS-i tÔrkevahetust
- , on funktsioon âGeo Steeringâ saadaval ettevĂ”tte tariifides
GeoDNS-i tellides tuleks tÀhelepanu pöörata tariifis sisalduvate pÀringute arvule ning arvestada sellega, et tegelik pÀringute arv domeenile vÔib olla oodatust kordades suurem. Miljonid Àmblikud, skannerid, rÀmpspostitajad ja muud kurjad vaimud töötavad vÀsimatult.
Peaaegu kÔik DNS-teenused sisaldavad hinnas asendamatut teenust CDN-i loomiseks - DNS-i tÔrkevahetus. Selle abil saate seadistada oma serverite töö jÀlgimise ja elumÀrkide puudumisel asendada DNS-vastustes mittetöötava serveri aadressi automaatselt varu aadressiga.
CDN-i loomiseks kasutame , GeoDNS-i tariif.
Lisame teie isiklikule kontole uue DNS-tsooni, mis nĂ€itab teie domeeni. Kui ehitame CDN-i alamdomeenile ja pĂ”hidomeen on juba kasutusel, siis Ă€rge unustage kohe pĂ€rast tsooni lisamist lisada olemasolevad töötavad DNS-kirjed. JĂ€rgmise sammuna tuleb luua CDN-i domeeni/alamdomeeni jaoks mitu A-kirjet, millest igaĂŒht kasutatakse meie mÀÀratud piirkonna jaoks. Piirkondadena saate mÀÀrata mandreid vĂ”i riike; alampiirkonnad on saadaval USA ja Kanada jaoks.
Meie puhul tÔstetakse CDN alamdomeenil cdn.sayt.in. Tsooni lisamisega sayt.in, loome alamdomeeni jaoks esimese A-kirje ja suuname kogu PÔhja-Ameerika Chicagos asuvasse serverisse:

Kordame toimingut teiste piirkondade jaoks, unustamata luua vaikepiirkondade jaoks ĂŒht kirjet. Siin on see, mida saate lĂ”puks:

Ekraanipildi viimane vaikekirje tÀhendab, et kÔik mÀÀramata piirkonnad (ja need on Euroopa, Aafrika, satelliit-Interneti kasutajad jne) saadetakse Frankfurdis asuvasse serverisse.
See lĂ”petab DNS-i pĂ”hiseadistuse. JÀÀb ĂŒle minna domeeniregistripidaja veebisaidile ja asendada praegused domeeni NS-id ClouDNS-i vĂ€ljastatud omadega. Ja NS-ide uuendamise ajal valmistame servereid ette.
SSL-sertifikaatide installimine
Meie CDN töötab HTTPS-i kaudu, nii et kui teil on domeeni vĂ”i alamdomeeni jaoks juba SSL-sertifikaadid, laadige need ĂŒles kĂ”ikidesse serveritesse, nĂ€iteks kataloogi /etc/ssl/yourdomain/
Kui teil sertifikaate pole, saate selle tasuta hankida Let's Encrypti kaudu. Ideaalne selleks . Klienti on mugav ja lihtne seadistada ning mis kĂ”ige tĂ€htsam â see vĂ”imaldab DNS-i abil domeeni/alamdomeeni valideerida API kaudu ClouDNS-ist.
Installime acme.sh ainult ĂŒhte serverisse - Euroopa 199.247.18.199, kust sertifikaadid kopeeritakse kĂ”igile teistele. Installimiseks toimige jĂ€rgmiselt.
root@cdn:~# wget -O - https://get.acme.sh | bash; source ~/.bashrcSkripti installimise ajal luuakse CRON-i ĂŒlesanne sertifikaatide edasiseks vĂ€rskendamiseks ilma meie osaluseta.
Domeeni kontrollimine sertifikaadi vĂ€ljastamisel toimub DNS-i kaudu API abil, seega peate oma ClouDNS-i isiklikul kontol edasimĂŒĂŒja API menĂŒĂŒs looma uue API kasutaja ja mÀÀrama sellele parooli. Kirjutame saadud auth-id koos parooliga faili ~/.acme.sh/dnsapi/dns_cloudns.sh (mitte segi ajada failiga dns_clouddns.sh). Siin on read, mida tuleb kommenteerida ja muuta:
CLOUDNS_AUTH_ID=<auth-id>
CLOUDNS_AUTH_PASSWORD="<паŃĐŸĐ»Ń>"
NĂŒĂŒd taotleme SSL-sertifikaati cdn.sayt.in
root@cdn:~# acme.sh --issue --dns dns_cloudns -d cdn.sayt.in --reloadcmd "service nginx reload"Tuleviku parameetrites mÀÀrasime kÀsu veebiserveri konfiguratsiooni automaatseks uuesti laadimiseks pÀrast iga sertifikaadi kehtivuse vÀrskendust tulevikus.
Kogu sertifikaadi saamise protsess vÔib kesta kuni 2 minutit, Àrge katkestage seda. Kui ilmneb domeeni valideerimise tÔrge, proovige kÀsku uuesti kÀivitada. LÔpus nÀeme, kust sertifikaadid alla laaditi:

Pidagem neid teid meeles, need tuleb mÀÀrata nii sertifikaadi kopeerimisel teistesse serveritesse kui ka veebiserveri seadetes. Me ei pööra tÀhelepanu Nginxi konfiguratsioonide uuesti laadimise veale - tÀielikult konfigureeritud serveris seda sertifikaatide vÀrskendamisel ei kuvata.
Meil jÀÀb SSL-iga ĂŒle vaid kopeerida saadud sertifikaat kahte teise serverisse, sĂ€ilitades failide tee. Loome igale neist samad kataloogid ja teeme koopia:
root@cdn:~# mkdir -p /root/.acme.sh/cdn.sayt.in/
root@cdn:~# scp -r root@199.247.18.199:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/
Sertifikaatide korrapĂ€raseks vĂ€rskendamiseks loome mĂ”lemas serveris igapĂ€evase CRON-i ĂŒlesande kĂ€suga:
scp -r root@199.247.18.199:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload
Sellisel juhul tuleb konfigureerida juurdepÀÀs kaugallika serverile , st. ilma parooli sisestamata. Ărge unustage seda teha.
Nginxi installimine ja konfigureerimine
Staatilise sisu teenindamiseks kasutame vahemÀllu salvestava puhverserverina konfigureeritud Nginxi. VÀrskendame pakettide loendeid ja installime selle kÔigisse kolme serverisse:
root@cdn:~# apt update
root@cdn:~# apt install nginxVaikimisi asemel kasutame alloleva spoileri konfiguratsiooni:
nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 4096;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_proxied any;
gzip_vary on;
gzip_types text/plain application/javascript text/javascript text/css application/json application/xml text/xml application/rss+xml;
gunzip on;
proxy_temp_path /var/cache/tmp;
proxy_cache_path /var/cache/cdn levels=1:2 keys_zone=cdn:64m max_size=20g inactive=7d;
proxy_cache_bypass $http_x_update;
server {
listen 443 ssl;
server_name cdn.sayt.in;
ssl_certificate /root/.acme.sh/cdn.sayt.in/cdn.sayt.in.cer;
ssl_certificate_key /root/.acme.sh/cdn.sayt.in/cdn.sayt.in.key;
location / {
proxy_cache cdn;
proxy_cache_key $uri$is_args$args;
proxy_cache_valid 90d;
proxy_pass https://sayt.in;
}
}
}Konfiguratsioonis muudame:
- max_size â vahemĂ€lu maht ei ĂŒleta saadaolevat kettaruumi
- inaktiivne â vahemĂ€llu salvestatud andmete salvestusaeg, millele pole juurde pÀÀsetud
- ssl_certificate Đž ssl_certificate_key â SSL-sertifikaadi ja vĂ”tmefailide teed
- proxy_cache_valid â vahemĂ€llu salvestatud andmete salvestusaeg
- puhverserveri_pÀÀs â algse serveri aadress, kust CDN taotleb failide vahemĂ€llu salvestamist. Meie nĂ€ites on see sayt.in
Nagu nÀete, on kÔik lihtne. Ainus raskus vÔib tekkida vahemÀllu salvestamise aja mÀÀramisel direktiivide sarnasuse tÔttu inaktiivne О proxy_cache_valid. Vaatame neid meie nÀitel. See juhtub siis, kui mitteaktiivne=7d О proxy_cache_valid 90d:
- kui taotlust 7 pÀeva jooksul ei korrata, kustutatakse andmed pÀrast seda perioodi vahemÀlust
- kui taotlust korratakse vÀhemalt kord 7 pÀeva jooksul, loetakse vahemÀlus olevad andmed 90 pÀeva pÀrast aegunuks ja jÀrgmise pÀringuga uuendab Nginx seda, vÔttes need algsest serverist
PÀrast toimetamise lÔpetamist nginx.conf, laadige konfiguratsioon uuesti:
root@cdn:~# service nginx reloadMeie CDN on tÀielikult valmis. 15 dollari eest kuus. saime kohalolekupunkte kolmel kontinendil ja 3 TB liiklust: 1 TB igas asukohas.
CDN-i töö kontrollimine
Vaatame erinevatest geograafilistest asukohtadest meie CDN-i pingisid. Selleks sobivad kÔik pingiteenused.
Alguspunkt
Host
IP
Keskmine aeg, ms
Saksamaa Berliin
cdn.sayt.in
199.247.18.199
9.6
Holland, Amsterdam
cdn.sayt.in
199.247.18.199
10.1
Prantsusmaa Pariis
cdn.sayt.in
199.247.18.199
16.3
Suurbritannia, London
cdn.sayt.in
199.247.18.199
14.9
Kanada, Toronto
cdn.sayt.in
149.28.121.123
16.2
USA, San Francisco
cdn.sayt.in
149.28.121.123
52.7
USA, Dallas
cdn.sayt.in
149.28.121.123
23.1
USA, Chicago
cdn.sayt.in
149.28.121.123
2.6
USA, New York
cdn.sayt.in
149.28.121.123
19.8
Singapur
cdn.sayt.in
157.230.240.216
1.7
Jaapan Tokyo
cdn.sayt.in
157.230.240.216
74.8
Austraalia, Sydney
cdn.sayt.in
157.230.240.216
95.9
Tulemused on head. NĂŒĂŒd asetame pĂ”hisaidi juurtesse testpildi test.jpg ja kontrollige selle allalaadimiskiirust CDN-i kaudu. Ăeldakse- . Sisu tarnitakse kiiresti.
Kirjutame vĂ€ikese skripti juhuks, kui tahame CDN-punkti vahemĂ€lu tĂŒhjendada.
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
Kogu vahemÀlu kustutamiseks kÀivitage see; saate kustutada eraldi faili jÀrgmiselt:
root@cdn:~# ./purge.sh /test.jpgJĂ€relduste asemel
LĂ”petuseks tahan anda mĂ”ned kasulikud nĂ€punĂ€ited, et kohe ĂŒle astuda kunagi peavalu valmistanud rehast:
- CDN-i tÔrketaluvuse suurendamiseks on soovitatav konfigureerida DNS-i tÔrkevahetus, mis aitab serveri rikke korral kiiresti A-kirjet muuta. Seda tehakse domeeni DNS-kirjete juhtpaneelil
- Laia geograafilise ulatusega saidid nÔuavad kahtlemata suurt hulka CDN-punkte, kuid Àrgem olgem fanaatilised. TÔenÀoliselt ei mÀrka kasutaja olulist erinevust tasulise CDN-iga vÔrreldes, kui paigutate serverid 6-7 kohta: Euroopas, PÔhja-Ameerikas (ida), PÔhja-Ameerikas (lÀÀnes), Singapuris, Austraalias, Hongkongis vÔi Jaapanis.
- MÔnikord ei luba hostid CDN-i eesmÀrkidel kasutada renditud servereid. SeetÔttu, kui otsustate ootamatult teenusena kasutusele vÔtta sisuedastusvÔrgu, Àrge unustage eelnevalt lugeda oma konkreetse hostiteenuse pakkuja reegleid
- Avastage kujutleda, kuidas mandrid on omavahel ĂŒhendatud, ja arvestada sellega sisuedastusvĂ”rgu ehitamisel
- Proovige kontrollida teie serveritele. Nii nÀete CDN-punktidele lÀhimaid piirkondi ja GeoDNS-i Ôigemini seadistada
- SĂ”ltuvalt ĂŒlesannetest oleks kasulik kohandada Nginxi konkreetsete vahemĂ€llu salvestamise nĂ”uete ja serveri koormusega. Artiklid Nginxi vahemĂ€lu kohta aitasid mind selles palju - ja töö kiirendamine suurte koormuste korral: Đž
Allikas: www.habr.com
