Inhalt Liwwerung Netzwierker (CDNs) gi vu Websäiten an Uwendungen benotzt haaptsächlech fir d'Luede vu statesche Elementer ze beschleunegen. Dëst geschitt duerch Cache Dateien op CDN Serveren a verschiddene geographesche Regiounen. Andeems Dir Daten iwwer CDN ufrot, kritt de Benotzer se vum nooste Server.
De Betribsprinzip an d'Funktionalitéit vun all Inhalt Liwwerung Netzwierker ass ongeféier d'selwecht. Nodeems Dir eng Ufro kritt hutt fir eng Datei erofzelueden, hëlt den CDN-Server et eemol vum ursprénglechen Server a gitt et dem Benotzer, gläichzäiteg Cache fir eng spezifizéierter Zäit. All spéider Ufroe ginn aus dem Cache geäntwert. All CDNs hunn Optiounen fir Dateien viraus ze lueden, Cache ze läschen, Cache-Verfall a vill méi ze setzen.
Et geschitt datt et aus engem oder anere Grond néideg ass fir Ären eegene Inhaltsliwwernetz ze organiséieren, an dann - d'Instruktioune fir den nächste Vëlo ze montéieren fir eis hëllefen.
Loosst eis op Fäll kucken wou Ären eegene CDN Sënn mécht:
wann Dir Sue wëllt spueren, a lafend Käschten och wann Dir bëlleg CDNs benotzt wéi BunnyCDN Betrag op e puer honnert Dollar pro Mount
wa mir e permanente Cache oder e Cache ouni Noperen um Server a Kanal kréien wëllen
CDN Servicer hunn keng Präsenz Punkten an der Regioun déi Dir braucht
All speziell Inhalt Liwwerung Astellunge sinn néideg
mir wëllen d'Liwwerung vun dynameschen Inhalt beschleunegen andeems d'Produktiounsservere méi no bei de Benotzer setzen
et gëtt Suergen datt en Drëtt Partei CDN Service falsch Informatioun iwwer Benotzerverhalen sammelen oder benotze kann (Moien un net-GDPR-konforme Servicer) oder an aner illegal Aktivitéiten engagéieren
Am meeschten anere Fäll ass et méi ubruecht bestehend fäerdeg Léisungen ze benotzen.
Wat Dir braucht fir unzefänken
Et ass wonnerbar wann Dir Ären eegene autonome System (AS) hutt. Mat et kënnt Dir déi selwecht IP op e puer Serveren an no dëser Instruktioune um Reseau Niveau, Direktnoriichten Benotzer op déi noosten. Et ass derwäert ze soen datt och mat engem /24 Adressblock et méiglech ass en Inhalt Liwwerungsnetz ze bauen. E puer Server Ubidder erlaben Iech Reklamm fir ze benotzen an alle Regiounen déi hinnen verfügbar sinn.
Wann Dir net de gléckleche Besëtzer vun engem Block vun IP Adressen sidd, da fir en einfachen CDN ze starten braucht Dir:
Domain Numm oder Subdomain
op d'mannst zwee Serveren a verschiddene Regiounen. De Server kann entweder engagéiert oder virtuell sinn
GeoDNS Tool. Mat senger Hëllef gëtt e Benotzer, deen op en Domain zougräift, op den nooste Server geleet
Registréiert en Domain an bestellt Serveren
Mat Domainregistrierung ass alles einfach - mir registréieren an all Zone mat all Registrar. Dir kënnt och e Subdomain fir den CDN benotzen, zum Beispill eppes wéi cdn.domainname.com. Tatsächlech wäerte mir an eisem Beispill just dat maachen.
Wat d'Server bestellen, sollten se an de Regiounen a Länner gelount ginn, wou Äre Benotzerpublikum läit. Wann de Projet interkontinental ass, dann ass et praktesch Hosting Ubidder ze wielen déi Serveren op der ganzer Welt ubidden. Beispiller: OVH, Web leasen и 100Tb - fir dedizéierten Serveren, Vultr и DigitalOcean - fir virtuell Wollek*.
Fir eise privaten CDN bestelle mir 3 virtuell Serveren op verschiddene Kontinenter. U Vultr um Server fir $ 5 / Mount mir kréien 25GB SSD Plaze an 1TB Verkéier. Wärend der Installatioun wäerte mir déi lescht Debian auswielen. Eis Serveren:
FrankfurtIP: 199.247.18.199 Standuert
ChicagoIP: 149.28.121.123 Standuert
СингапурIP: 157.230.240.216 Standuert
* Vultr an DigitalOcean verspriechen $ 100 u Kreditt fir Benotzer déi sech mat de Linken an dësem Artikel umellen nodeems se eng Bezuelmethod derbäigesat hunn. Dovunner kritt den Auteur och e klengt Kompliment, dat fir hien elo ganz bedeitend ass. Gitt w.e.g. Verständnis.
GeoDNS opsetzen
Fir sécherzestellen datt wann e Benotzer Zougang zu engem CDN Domain oder Subdomain kritt, hien op de gewënschten (noosten) Server geleet gëtt, brauche mir en DNS Server mat der GeoDNS Funktioun.
De Prinzip an d'Operatiounsprozedur vu GeoDNS ass wéi follegt:
Definéiert d'IP vum Client, deen d'DNS-Ufro geschéckt huet, oder d'IP vum rekursive DNS-Server, dee benotzt gëtt beim Veraarbechtung vun der Client-Ufro. Esou rekursive Servere sinn normalerweis DNS Ubidder.
Dem Client seng IP identifizéiert säi Land oder Regioun. Dofir gi GeoIP-Datebanken benotzt, vun deenen et haut immens vill gëtt. Et ginn e puer gutt fräi Optiounen.
Ofhängeg vum Standuert vum Client gëtt et d'IP Adress vum nooste CDN Server.
DNS Server mat geoDNS Funktioun ka sinn montéiert et selwer, mee et ass besser fäerdeg Léisunge mat engem Netz vun DNS Serveren ronderëm d'Welt ze benotzen an Anycast aus der Këscht:
CloudDNS от $ 9.95 / Mount, GeoDNS Tarif, Par défaut gëtt et een DNS Failover
Amazon Route 53 от $ 35 / Mount fir reng 50M Geo-Ufroen. DNS Failover gëtt separat berechent
DNS Made Easy от $ 125 / Mount, ginn et 10 DNS Failovers
Cloudflare, d'Funktioun "Geo Steering" ass an Enterprise Tariffer verfügbar
Wann Dir GeoDNS bestellt, sollt Dir op d'Zuel vun den Ufroen, déi am Tarif abegraff sinn, oppassen a berücksichtegen datt d'tatsächlech Zuel vun Ufroen un d'Domain vill Mol méi héich sinn wéi erwaart. Millioune Spannen, Scanner, Spammer an aner béis Séilen schaffen onermiddlech.
Bal all DNS Servicer enthalen am Präis en onverzichtbare Service fir en CDN ze bauen - DNS Failover. Mat senger Hëllef kënnt Dir d'Iwwerwaachung vun der Operatioun vun Äre Serveren opstellen an, wann et keng Zeeche vum Liewen sinn, automatesch d'Adress vum net-schaffende Server an DNS-Äntwerten mat engem Backup ersetzen.
Fir eisen CDN ze bauen wäerte mir benotzen CloudDNS, GeoDNS Tarif.
Loosst eis eng nei DNS Zone an Ärem perséinleche Kont addéieren, wat Är Domain uginn. Wa mir e CDN op engem Subdomain bauen, an den Haaptdomän ass schonn am Gebrauch, dann direkt nodeems Dir d'Zone bäigefüügt hutt, vergiesst net déi existent schaffend DNS-Records derbäi ze ginn. De nächste Schrëtt ass e puer A-Records fir den CDN Domain / Subdomain ze kreéieren, jidderee gëtt fir d'Regioun benotzt déi mir spezifizéiert hunn. Dir kënnt Kontinenter oder Länner als Regiounen uginn; Ënnerregiounen si verfügbar fir d'USA a Kanada.
An eisem Fall gëtt den CDN op engem Subdomain erhéicht cdn.sayt.in. Andeems Dir eng Zone bäidréit gesot.in, loosst eis den éischten A-Rekord fir den Ënnerdomain erstellen an all Nordamerika op de Server zu Chicago dirigéieren:
Loosst eis d'Aktioun fir aner Regiounen widderhuelen, net ze vergiessen eng Entrée fir d'Standardregiounen ze kreéieren. Hei ass wat Dir um Enn kritt:
Déi lescht Standardentrée am Screenshot bedeit datt all onspezifizéierte Regiounen (an dëst sinn Europa, Afrika, Satellite Internet Benotzer, etc.) op de Server zu Frankfurt geschéckt ginn.
Dëst fäerdeg de Basis DNS-Setup. Alles wat bleift ass op d'Websäit vum Domain Registrar ze goen an déi aktuell Domain NSs ze ersetzen mat deenen ausgestallt vu ClouDNS. A wärend d'NSs aktualiséiert ginn, preparéiere mir d'Server.
Installatioun vun SSL Certificaten
Eis CDN funktionnéiert iwwer HTTPS, also wann Dir schonn SSL Certificaten fir en Domain oder Subdomain hutt, lued se op all Server erop, zum Beispill an de Verzeichnis /etc/ssl/yourdomain/
Wann Dir keng Certificaten hutt, kënnt Dir e gratis vu Let's Encrypt kréien. Perfekt fir dës ACME Shell Skript. De Client ass bequem an einfach ze konfiguréieren, an am wichtegsten, et erlaabt Iech en Domain / Subdomain mat DNS iwwer d'API vu ClouDNS ze validéieren.
Mir installéieren acme.sh nëmmen op ee vun de Serveren - Europäesch 199.247.18.199, aus deenen d'Zertifikater op all aner kopéiert ginn. Fir ze installéieren, maacht:
Wärend der Installatioun vum Skript gëtt eng CRON Aufgab erstallt fir weider Certificaten ze aktualiséieren ouni eis Participatioun.
Domain Verifizéierung wann Dir e Certificat ausgëtt gëtt iwwer DNS mat der API duerchgefouert, also an Ärem ClouDNS perséinleche Kont am Reseller API Menu musst Dir en neien API Benotzer erstellen an e Passwuert dofir setzen. Mir schreiwen déi resultéierend Auth-ID mat Passwuert an enger Datei ~/.acme.sh/dnsapi/dns_cloudns.sh (net mat der Datei ze verwiesselen dns_clouddns.sch). Hei sinn d'Zeilen déi net kommentéiert a geännert musse ginn:
An de Parameteren, fir d'Zukunft, hu mir e Kommando spezifizéiert fir automatesch d'Webserverkonfiguratioun no all Zertifikatvaliditéitsaktualiséierung an Zukunft nei ze lueden.
De ganze Prozess fir en Zertifika ze kréien kann bis zu 2 Minutten daueren, ënnerbrach et net. Wann en Domain Validatioun Feeler geschitt, probéiert de Kommando nach eng Kéier auszeféieren. Um Enn wäerte mir gesinn wou d'Zertifikater erofgeluede goufen:
Loosst eis dës Weeër erënneren; Si musse spezifizéiert ginn wann Dir den Zertifika op aner Server kopéiert, souwéi an de Webserver-Astellungen. Mir oppassen net op de Feeler beim Neiluede vun Nginx Konfiguratiounen - op engem komplett konfiguréierten Server gëtt et net beim Update vun Zertifikater.
Alles wat fir eis mat SSL bleift ass de kritt Zertifikat op zwee aner Serveren ze kopéieren, de Wee op d'Dateien ze konservéieren. Loosst eis déiselwecht Verzeichnisser op jiddereng vun hinnen erstellen an eng Kopie maachen:
Fir Certificaten regelméisseg ze aktualiséieren, erstellen mir eng deeglech CRON Aufgab op béide Server mam Kommando:
scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload
An dësem Fall muss den Zougang zum Fernquellserver konfiguréiert sinn duerch Schlëssel, d.h. ouni Passwuert aginn. Vergiesst net dëst ze maachen.
Nginx installéieren an konfiguréieren
Fir statesch Inhalter ze déngen, benotze mir Nginx konfiguréiert als Caching Proxy Server. Loosst eis d'Packagelëscht aktualiséieren an se op allen dräi Serveren installéieren:
max_Gréisst - Cache Gréisst net méi wéi de verfügbaren Disk Space
inaktiv - Späicherzäit fir Cache Daten déi net zougänglech sinn
ssl_zertifikat и ssl_certificate_key - Weeër fir SSL Zertifikat a Schlësseldateien
proxy_cache_valid - Späicherzäit vun cachedaten
proxy_pass - d'Adress vum ursprénglechen Server, aus deem den CDN Dateie fir Cache freet. An eisem Beispill ass dëst gesot.in
Wéi Dir kënnt gesinn, ass alles einfach. Déi eenzeg Schwieregkeet kann optrieden fir d'Cachingzäit ze setzen wéinst der Ähnlechkeet vun den Direktiven inaktiv и proxy_cache_valid. Loosst eis se mat eisem Beispill kucken. Dëst ass wat geschitt wann inaktiv = 7d и proxy_cache_valid 90d:
wann d'Ufro net bannent 7 Deeg widderholl gëtt, ginn d'Donnéeë no dëser Period aus dem Cache geläscht
wann d'Demande op d'mannst eemol all 7 Deeg widderholl gëtt, da ginn d'Donnéeën am Cache no 90 Deeg als verréckt ugesinn a mat der nächster Ufro wäert Nginx se aktualiséieren, se vum ursprénglechen Server huelen
Fäerdeg ze änneren nginx.conf, lued d'Konfiguratioun nei:
root@cdn:~# service nginx reload
Eis CDN ass komplett prett. Fir $ 15 / Mount. mir krut Punkten vun Präsenz op dräi Kontinenter an 3 TB Verkéier: 1 TB an all Plaz.
Kontrolléiert d'Operatioun vum CDN
Loosst eis Pings zu eisem CDN vu verschiddene geographesche Plazen kucken. All Ping Servicer si gëeegent fir dëst.
Vereenegt Kinnekräich, 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
Сингапур
cdn.sayt.in
157.230.240.216
1.7
Japan Tokyo
cdn.sayt.in
157.230.240.216
74.8
Australien, Sydney
cdn.sayt.in
157.230.240.216
95.9
D'Resultater si gutt. Loosst eis elo en Testbild an der Wuerzel vun der Haaptsäit setzen test.jpg a kontrolléiert seng Downloadgeschwindegkeet iwwer CDN. Et gëtt gesot - gemaach. Inhalt gëtt séier geliwwert.
Loosst eis e klenge Skript schreiwen am Fall wou mir de Cache um CDN Punkt wëllen läschen. 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
Fir de ganze Cache ze läschen, lafen se einfach; Dir kënnt eng separat Datei wéi dës läschen:
root@cdn:~# ./purge.sh /test.jpg
Amplaz vu Conclusiounen
Schlussendlech wëll ech e puer nëtzlech Tipps ginn fir direkt iwwer de Rake ze goen, deen mir eemol Kappwéi gemaach huet:
Fir d'CDN Feeler Toleranz ze erhéijen, ass et recommandéiert DNS Failover ze konfiguréieren, wat hëlleft séier den A Rekord am Fall vun engem Serverfehler z'änneren. Dëst gëtt am Domain DNS Records Kontrollpanel gemaach
Siten mat enger grousser geographescher Erreeche wäerten ouni Zweifel eng grouss Zuel vun CDN Punkten erfuerderen, awer loosst eis net fanatesch sinn. Wahrscheinlech wäert de Benotzer net e wesentlechen Ënnerscheed am Verglach zu engem bezuelte CDN bemierken wann Dir Serveren op 6-7 Plazen placéiert: Europa, Nordamerika (Osten), Nordamerika (West), Singapur, Australien, Hong Kong oder Japan
Heiansdo erlaben Hoster d'Benotzung vu gelounte Serveren fir CDN Zwecker net. Dofir, wann Dir op eemol décidéiert en Inhalt Liwwerung Netzwierk als Service z'installéieren, vergiesst net d'Regele vun Ärem spezifesche Hosting Provider am Viraus ze liesen
Entdeckt Ënnerwaasser Kommunikatiouns Kaartvirzestellen wéi d'Kontinente verbonne sinn an dëst Rechnung huelen wann Dir en Inhalt Liwwerungsnetz bauen
Probéieren ze kontrolléieren Pings aus verschiddene Plazen op Är Serveren. Op dës Manéier kënnt Dir d'Regiounen am nootste bei CDN Punkten gesinn a GeoDNS méi korrekt konfiguréieren
Ofhängeg vun den Aufgaben, wier et nëtzlech fir Nginx fir spezifesch Cache-Ufuerderungen unzepassen an d'Laascht op de Server ze berücksichtegen. Artikelen iwwer Nginx Cache hunn mir vill mat dësem gehollef - hei a Beschleunegung vun der Aarbecht ënner schwéier Laascht: hei и hei