Bini u konfigurazzjoni tas-CDN tiegħek

Netwerks ta 'konsenja tal-kontenut (CDNs) jintużaw minn websajts u applikazzjonijiet primarjament biex iħaffu t-tagħbija ta' elementi statiċi. Dan jiġri billi fajls fil-caching fuq servers CDN li jinsabu f'reġjuni ġeografiċi differenti. Billi jitlob dejta permezz tas-CDN, l-utent jirċieviha mill-eqreb server.

Il-prinċipju operattiv u l-funzjonalità tan-netwerks kollha tal-kunsinna tal-kontenut huwa bejn wieħed u ieħor l-istess. Wara li rċieva talba biex tniżżel fajl, is-server tas-CDN jeħodha ta' darba mis-server oriġinali u jagħtiha lill-utent, fl-istess ħin idaħħalha fil-cache għal perjodu ta' żmien speċifikat. It-talbiet kollha sussegwenti jiġu mwieġba mill-cache. Is-CDNs kollha għandhom għażliet għat-tagħbija minn qabel tal-fajls, l-ikklerjar tal-cache, l-issettjar tal-iskadenza tal-cache, u ħafna aktar.

Jiġri li għal xi raġuni jew oħra huwa meħtieġ li torganizza n-netwerk tal-kunsinna tal-kontenut tiegħek stess, u mbagħad - jista 'l-istruzzjonijiet għall-assemblaġġ tar-rota li jmiss ikunu ta' għajnuna għalina.

Bini u konfigurazzjoni tas-CDN tiegħek
Sors: Vettur infografiku maħluq minn pikisuperstar — www.freepik.com

Meta għandek bżonn is-CDN tiegħek?

Ejja nħarsu lejn każijiet fejn it-tħaddim tas-CDN tiegħek jagħmel sens:

  • meta trid tiffranka l-flus, u l-ispejjeż operattivi anke meta tuża CDNs rħas bħal BunnyCDN jammonta għal diversi mijiet ta’ dollari fix-xahar
  • jekk irridu nġibu cache permanenti jew cache mingħajr ġirien fuq is-server u l-kanal
  • Is-servizzi tas-CDN m'għandhomx punti ta' preżenza fir-reġjun li għandek bżonn
  • Kwalunkwe settings speċjali tal-kunsinna tal-kontenut huma meħtieġa
  • irridu nħaffu l-kunsinna ta 'kontenut dinamiku billi nqiegħdu servers ta' produzzjoni eqreb lejn l-utenti
  • hemm tħassib li servizz CDN ta’ parti terza jista’ jiġbor jew juża b’mod mhux xieraq informazzjoni dwar l-imġiba tal-utent (bonjour lil servizzi mhux konformi mal-GDPR) jew jidħol f’attivitajiet illegali oħra

Fil-biċċa l-kbira tal-każijiet l-oħra, huwa aktar xieraq li jintużaw soluzzjonijiet eżistenti lesti.

Dak li għandek bżonn biex tibda

Hija isbaħ jekk għandek is-sistema awtonoma tiegħek (AS). Biha tista 'tassenja l-istess IP lil diversi servers u skond dawn l-istruzzjonijiet fil-livell tan-netwerk, jidderieġi lill-utenti lejn l-eqreb wieħed. Ta 'min jgħid li anke bi blokk ta' indirizzi /24 huwa possibbli li tinbena netwerk ta 'kunsinna ta' kontenut. Xi fornituri tas-server jippermettulek tirreklama għall-użu fir-reġjuni kollha disponibbli għalihom.

Jekk m'intix is-sid xortik tajba ta' blokk ta' indirizzi IP, allura biex tniedi CDN sempliċi ser ikollok bżonn:

  • isem tad-dominju jew sottodominju
  • mill-inqas żewġ servers f'reġjuni differenti. Is-server jista 'jkun jew iddedikat jew virtwali
  • għodda geoDNS. Bl-għajnuna tiegħu, utent li jaċċessa dominju jiġi dirett lejn l-eqreb server

Irreġistra dominju u tordna servers

Bir-reġistrazzjoni tad-dominju, kollox huwa sempliċi - nirreġistraw fi kwalunkwe żona ma 'kwalunkwe reġistratur. Tista 'wkoll tuża subdomain għas-CDN, pereżempju xi ħaġa simili cdn.domainname.com. Fil-fatt, fl-eżempju tagħna aħna se nagħmlu dan.

Fir-rigward tal-ordnijiet tas-servers, dawn għandhom jinkrew fir-reġjuni u l-pajjiżi fejn tinsab l-udjenza tal-utent tiegħek. Jekk il-proġett huwa interkontinentali, allura huwa konvenjenti li tagħżel fornituri ta 'hosting li joffru servers madwar id-dinja kollha. Eżempji: OVH, kiri web и 100TB - għal servers dedikati, Vultr и DigitalOcean — għal sħaba virtwali*.

Għas-CDN privat tagħna, aħna se tordna 3 servers virtwali fuq kontinenti differenti. U Vultr fuq is-server għal $ 5/xahar aħna se tikseb 25GB SSD postijiet u 1TB traffiku. Waqt l-installazzjoni, aħna se nagħżlu l-aħħar Debian. Is-servers tagħna:

Bini u konfigurazzjoni tas-CDN tiegħek Frankfurt, ip: 199.247.18.199

Bini u konfigurazzjoni tas-CDN tiegħek Chicago, ip: 149.28.121.123

Bini u konfigurazzjoni tas-CDN tiegħek Singapor, ip: 157.230.240.216

*Vultr u DigitalOcean qed iwiegħdu $100 fi kreditu lill-utenti li jiffirmaw billi jużaw il-links f'dan l-artikolu ladarba jżidu metodu ta 'ħlas. L-awtur jirċievi wkoll kumpliment żgħir minn dan, li huwa sinifikanti ħafna għalih issa. Jekk jogħġbok kun fehim.

Twaqqif ta' geoDNS

Biex jiġi żgurat li meta utent jaċċessa dominju jew sottodominju CDN, huwa dirett lejn is-server mixtieq (l-eqreb), ikollna bżonn server DNS bil-funzjoni geoDNS.

Il-prinċipju u l-proċedura operattiva tal-geoDNS huma kif ġej:

  1. Jiddefinixxi l-IP tal-klijent li bagħat it-talba DNS, jew l-IP tas-server DNS rikorsiv li jintuża meta tiġi pproċessata t-talba tal-klijent. Dawn is-servers rikorsivi huma normalment fornituri tad-DNS.
  2. L-IP tal-klijent jidentifika l-pajjiż jew ir-reġjun tiegħu. Għal dan, jintużaw databases GeoIP, li llum hemm ħafna minnhom. Hemm xi wħud tajbin għażliet ħielsa.
  3. Skont il-post tal-klijent, jagħtih l-indirizz IP tal-eqreb server CDN.

Server DNS b'funzjoni geoDNS jista 'jkun immunta minnek innifsek, iżda huwa aħjar li tuża soluzzjonijiet lesti ma 'netwerk ta' servers DNS madwar id-dinja u Anycast mill-kaxxa:

  • CloudDNS minn $ 9.95/xahar, Tariffa GeoDNS, b'mod awtomatiku hemm Failover DNS wieħed
  • Zilore minn $ 25/xahar, DNS failover attivat
  • Rotta Amazon 53 minn $ 35/xahar għal 50M ġeo-mistoqsijiet puri. DNS Failover jiġi ċċarġjat separatament
  • DNS Magħmul Faċli minn $ 125/xahar, hemm 10 DNS Failovers
  • Cloudflare, il-funzjoni "Geo Steering" hija disponibbli fit-tariffi tal-Intrapriża

Meta tordna geoDNS, għandek tagħti attenzjoni għan-numru ta 'talbiet inklużi fit-tariffa u tqis li n-numru attwali ta' talbiet għad-dominju jista 'jkun ħafna drabi ogħla milli mistenni. Miljuni ta 'brimb, skaners, spammers u spirti ħżiena oħra jaħdmu bla heda.

Kważi s-servizzi DNS kollha jinkludu fil-prezz servizz indispensabbli għall-bini ta' CDN - DNS Failover. Bl-għajnuna tagħha, tista 'twaqqaf monitoraġġ tal-operat tas-servers tiegħek u, jekk ma jkunx hemm sinjali ta' ħajja, tissostitwixxi awtomatikament l-indirizz tas-server li ma jaħdimx fit-tweġibiet DNS b'wieħed backup.

Biex nibnu CDN tagħna se nużaw CloudDNS, Tariffa GeoDNS.

Ejja nżidu żona DNS ġdida fil-kont personali tiegħek, li tindika d-dominju tiegħek. Jekk qed nibnu CDN fuq sottodominju, u d-dominju prinċipali diġà qed jintuża, imbagħad immedjatament wara li żżid iż-żona, tinsiex iżżid ir-rekords eżistenti tad-DNS tax-xogħol. Il-pass li jmiss huwa li toħloq diversi rekords A għad-dominju/subdominju CDN, li kull wieħed minnhom se jintuża għar-reġjun li speċifikajna. Tista' tispeċifika kontinenti jew pajjiżi bħala reġjuni; is-sottoreġjuni huma disponibbli għall-Istati Uniti u l-Kanada.

Fil-każ tagħna, is-CDN se titqajjem fuq sottodominju cdn.sayt.in. Billi żżid żona sayt.in, ejja noħolqu l-ewwel rekord A għas-sottodominju u nidderieġu l-Amerika ta’ Fuq kollha lejn is-server f’Chicago:

Bini u konfigurazzjoni tas-CDN tiegħek
Ejja nirrepetu l-azzjoni għal reġjuni oħra, mingħajr ma ninsew li noħolqu dħul wieħed għar-reġjuni default. Hawn dak li tikseb fl-aħħar:

Bini u konfigurazzjoni tas-CDN tiegħek

L-aħħar dħul default fil-screenshot tfisser li r-reġjuni kollha mhux speċifikati (u dawn huma l-Ewropa, l-Afrika, utenti tal-Internet bis-satellita, eċċ.) Se jintbagħtu lis-server fi Frankfurt.

Dan itemm is-setup bażiku tad-DNS. Li jibqa 'huwa li tmur fil-websajt tar-reġistratur tad-dominju u tissostitwixxi l-NSs tad-dominju attwali ma' dawk maħruġa minn ClouDNS. U filwaqt li l-NSs qed jiġu aġġornati, aħna se nippreparaw is-servers.

Installazzjoni ta' ċertifikati SSL

Is-CDN tagħna se jaħdem fuq HTTPS, għalhekk jekk diġà għandek ċertifikati SSL għal dominju jew sottodominju, ittellahom fuq is-servers kollha, pereżempju fid-direttorju /etc/ssl/dominju tiegħek/

Jekk m'għandekx ċertifikati, tista' tikseb wieħed b'xejn minn Let's Encrypt. Perfetta għal dan ACME Shell script. Il-klijent huwa konvenjenti u faċli biex jiġi kkonfigurat, u l-aktar importanti, jippermettilek tivvalida dominju/sottodominju billi tuża DNS permezz tal-API minn ClouDNS.

Aħna se ninstallaw acme.sh fuq wieħed biss mis-servers - Ewropew 199.247.18.199, li minnu ċ-ċertifikati jiġu kkupjati lill-oħrajn kollha. Biex tinstalla, agħmel:

root@cdn:~# wget -O - https://get.acme.sh | bash; source ~/.bashrc

Waqt l-installazzjoni tal-iskript, se jinħoloq kompitu CRON għal aktar aġġornament taċ-ċertifikati mingħajr il-parteċipazzjoni tagħna.

Il-verifika tad-dominju meta jinħareġ ċertifikat titwettaq permezz tad-DNS bl-użu tal-API, għalhekk fil-kont personali tiegħek ClouDNS fil-menu tal-API Reseller trid toħloq utent ġdid tal-API u ssettjaha password. Aħna se niktbu l-auth-id li tirriżulta bil-password f'fajl ~/.acme.sh/dnsapi/dns_cloudns.sh (M'għandux jiġi konfuż mal-fajl dns_clouddns.sh). Hawn huma l-linji li jeħtieġ li ma jiġux ikkummentati u editjati:

CLOUDNS_AUTH_ID=<auth-id>
CLOUDNS_AUTH_PASSWORD="<пароль>"

Issa ejja nitolbu ċertifikat SSL għal cdn.sayt.in

root@cdn:~# acme.sh --issue --dns dns_cloudns -d cdn.sayt.in --reloadcmd "service nginx reload"

Fil-parametri, għall-ġejjieni, speċifikajna kmand biex awtomatikament terġa' tgħabbi l-konfigurazzjoni tas-server tal-web wara kull aġġornament tal-validità taċ-ċertifikat fil-futur.

Il-proċess kollu tal-kisba ta 'ċertifikat jista' jieħu sa 2 minuti, tinterrompihx. Jekk iseħħ żball ta' validazzjoni tad-dominju, ipprova erġa' ħaddem il-kmand. Fl-aħħar se naraw minn fejn ġew imniżżla ċ-ċertifikati:

Bini u konfigurazzjoni tas-CDN tiegħek

Ejja niftakru dawn il-mogħdijiet; iridu jiġu speċifikati meta tikkopja ċ-ċertifikat għal servers oħra, kif ukoll fis-settings tas-server tal-web. Aħna ma nagħtux attenzjoni għall-iżball tat-tagħbija mill-ġdid tal-konfigurazzjonijiet Nginx - fuq server konfigurat bis-sħiħ, mhux se jidher meta taġġorna ċ-ċertifikati.

Dak kollu li jibqa għalina bl-SSL huwa li nikkopja ċ-ċertifikat riċevut għal żewġ servers oħra, billi nippreservaw it-triq għall-fajls. Ejja noħolqu l-istess direttorji fuq kull wieħed minnhom u nagħmlu kopja:

root@cdn:~# mkdir -p /root/.acme.sh/cdn.sayt.in/
root@cdn:~# scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/

Biex taġġorna ċ-ċertifikati regolarment, aħna noħolqu kompitu CRON ta 'kuljum fuq iż-żewġ servers bil-kmand:

scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload

F'dan il-każ, l-aċċess għas-server tas-sors remot għandu jiġi kkonfigurat biċ-ċavetta, i.e. mingħajr ma ddaħħal password. Tinsiex tagħmel dan.

Installazzjoni u konfigurazzjoni ta 'Nginx

Biex isservi kontenut statiku, se nużaw Nginx konfigurat bħala server proxy caching. Ejja naġġornaw il-listi tal-pakketti u ninstallawha fuq it-tliet servers kollha:

root@cdn:~# apt update
root@cdn:~# apt install nginx

Minflok il-default, nużaw il-konfigurazzjoni mill-ispoiler hawn taħt:
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;
    }
  }
}

Fil-konfigurazzjoni aħna neditjaw:

  • max_size — id-daqs tal-cache li ma jaqbiżx l-ispazju tad-diska disponibbli
  • inattivi — ħin ta' ħażna għal data fil-cache li ma tkunx ġiet aċċessata
  • ssl_certificate и ssl_certificate_key — mogħdijiet għaċ-ċertifikat SSL u fajls ewlenin
  • proxy_cache_valid — il-ħin tal-ħażna tad-dejta fil-cache
  • proxy_pass — l-indirizz tas-server oriġinali li minnu s-CDN se jitlob fajls għall-caching. Fl-eżempju tagħna dan hu sayt.in

Kif tistgħu taraw, kollox huwa sempliċi. L-unika diffikultà tista' tinħoloq fl-iffissar tal-ħin tal-caching minħabba x-xebh tad-direttivi inattivi и proxy_cache_valid. Ejja nħarsu lejhom bl-eżempju tagħna. Dan huwa dak li jiġri meta inattiv=7d и proxy_cache_valid 90d:

  • jekk it-talba ma tiġix ripetuta fi żmien 7 ijiem, id-dejta titħassar mill-cache wara dan il-perjodu
  • jekk it-talba tiġi ripetuta mill-inqas darba kull 7 ijiem, allura d-dejta fil-cache titqies skaduta wara 90 jum u bit-talba li jmiss Nginx jaġġornaha, u jeħodha mis-server oriġinali

Wara li spiċċajt l-editjar nginx.conf, erġa' tagħbija l-konfigurazzjoni:

root@cdn:~# service nginx reload

Is-CDN tagħna hija kompletament lesta. Għal $15/xahar. irċevejna punti ta' preżenza fi tliet kontinenti u 3 TB ta' traffiku: 1 TB f'kull post.

Iċċekkjar tal-operat tas-CDN

Ejja nħarsu lejn il-pings għas-CDN tagħna minn postijiet ġeografiċi differenti. Kwalunkwe servizz ta 'ping huwa adattat għal dan.

Punt tal-bidu
Ospitanti
IP
Ħin medju, ms

Il-Ġermanja Berlin
cdn.sayt.in
199.247.18.199
9.6

L-Olanda, Amsterdam
cdn.sayt.in
199.247.18.199
10.1

Franza Pariġi
cdn.sayt.in
199.247.18.199
16.3

Ir-Renju Unit, Londra
cdn.sayt.in
199.247.18.199
14.9

Il-Kanada, Toronto
cdn.sayt.in
149.28.121.123
16.2

L-Istati Uniti, San Francisco
cdn.sayt.in
149.28.121.123
52.7

L-Istati Uniti, Dallas
cdn.sayt.in
149.28.121.123
23.1

L-Istati Uniti, Chicago
cdn.sayt.in
149.28.121.123
2.6

L-Istati Uniti, New York
cdn.sayt.in
149.28.121.123
19.8

Singapor
cdn.sayt.in
157.230.240.216
1.7

Ġappun Tokyo
cdn.sayt.in
157.230.240.216
74.8

L-Awstralja, Sydney
cdn.sayt.in
157.230.240.216
95.9

Ir-riżultati huma tajbin. Issa ejja npoġġu immaġni tat-test fl-għerq tas-sit prinċipali test.jpg u iċċekkja l-veloċità tat-tniżżil tagħha permezz tas-CDN. Jingħad - magħmula. Il-kontenut jitwassal malajr.

Ejja niktbu skript żgħir f'każ li rridu naddfu l-cache fil-punt CDN.
tindif.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

Biex tħassar il-cache kollu, mexxiha biss; tista' tneħħi fajl separat bħal dan:

root@cdn:~# ./purge.sh /test.jpg

Minflok il-konklużjonijiet

Fl-aħħarnett, irrid nagħti xi suġġerimenti utli sabiex immedjatament nersaq fuq ir-rake li darba tatni uġigħ ta 'ras:

  • Biex tiżdied it-tolleranza tal-ħsarat tas-CDN, huwa rrakkomandat li jiġi kkonfigurat DNS Failover, li jgħin biex jinbidel malajr ir-rekord A fil-każ ta 'falliment tas-server. Dan isir fil-pannell tal-kontroll tar-rekords tad-dominju DNS
  • Siti b'firxa ġeografika wiesgħa bla dubju se jeħtieġu numru kbir ta 'punti CDN, iżda ejja ma nkunux fanatiċi. Probabbilment, l-utent mhux se jinnota differenza sinifikanti meta mqabbel ma’ CDN imħallas jekk tpoġġi servers f’6-7 postijiet: Ewropa, Amerika ta’ Fuq (lvant), Amerika ta’ Fuq (punent), Singapor, Awstralja, Ħong Kong jew Ġappun
  • Kultant hosters ma jippermettux l-użu ta 'servers mikrija għal skopijiet ta' CDN. Għalhekk, jekk f'daqqa waħda tiddeċiedi li tuża netwerk ta' kunsinna ta' kontenut bħala servizz, tinsiex taqra r-regoli tal-fornitur speċifiku ta' hosting tiegħek minn qabel
  • Esplora mappa tal-komunikazzjoni taħt l-ilmabiex timmaġina kif il-kontinenti huma konnessi u tqis dan meta tibni netwerk ta’ kunsinna ta’ kontenut
  • Ipprova iċċekkja pings minn postijiet differenti għas-servers tiegħek. Dan il-mod tista 'tara r-reġjuni l-eqreb għall-punti CDN u tikkonfigura GeoDNS b'mod aktar korrett
  • Skont il-kompiti, ikun utli li Nginx jiġi ppersonalizzat għal rekwiżiti speċifiċi ta 'caching u b'kont meħud tat-tagħbija fuq is-server. Artikoli dwar Nginx cache għenuni ħafna f'dan - hawn u aċċelerazzjoni tax-xogħol taħt tagħbijiet tqal: hawn и hawn

Sors: www.habr.com