Ho aha le ho hlophisa CDN ea hau

Li-Content Delivery Networks (CDNs) li sebelisoa libakeng tsa marang-rang le lits'ebetsong haholo-holo ho potlakisa ho jara lintho tse sa fetoheng. Sena se etsahala ka lebaka la ho boloka lifaele ho li-server tsa CDN tse libakeng tse fapaneng tsa libaka. Ka ho kopa data ka CDN, mosebelisi o e fumana ho tsoa ho seva se haufi.

Molao-motheo oa ts'ebetso le ts'ebetso ea marang-rang ohle a ho fana ka litaba o batla o tšoana. Ha e se e fumane kopo ea ho khoasolla faele, seva ea CDN e e nka nako e le 'ngoe ho tloha ho seva sa pele ebe e e fa mosebedisi, ka nako e ts'oanang e e boloka ka nako e itseng. Likopo tsohle tse latelang li arajoa ho tsoa ho cache. Li-CDN tsohle li na le likhetho tsa ho kenya lifaele esale pele, ho hlakola cache, ho beha letsatsi la ho felloa ke nako, le tse ling.

Hoa etsahala hore, ka lebaka le leng, o hloka ho hlophisa marang-rang a hau a ho fana ka litaba, ebe - tlohela litaelo tsa ho bokella baesekele e latelang e be thuso ho rona.

Ho aha le ho hlophisa CDN ea hau
Source: Infographic vector e entsoeng ke pikisuperstar - www.freepik.com

Ha o hloka CDN ea hau

Nahana ka maemo ao ho tsamaisa CDN ea hau ho utloahalang:

  • ha ho na le takatso ea ho boloka chelete, le ho tsamaisa litšenyehelo esita le ha u sebelisa li-CDN tse theko e tlaase joaloka BunnyCDN chelete e fihla ho lidolara tse makholo a 'maloa ka khoeli
  • haeba re batla ho fumana cache e sa feleng kapa cache ntle le seva le baahelani ba mocha
  • Litšebeletso tsa CDN ha li na lintlha tsa ho ba teng sebakeng seo u se hlokang
  • ho hlokahala litlhophiso life kapa life tse khethehileng tsa ho fana ka litaba
  • re batla ho potlakisa ho fana ka litaba tse matla ka ho beha seva sa tlhahiso haufi le basebelisi
  • ho na le ngongoreho ea hore tšebeletso ea motho oa boraro ea CDN e ka bokella kapa ea sebelisa tlhahisoleseling mabapi le boitšoaro ba mosebelisi (hello litšebeletso tse sa lumellaneng le GDPR) kapa ea etsa mesebetsi e meng e seng molaong.

Maemong a mang a mangata, ho loketse ho sebelisa litharollo tse seng li ntse li entsoe.

Seo u se hlokang ho qala

Hoa babatseha haeba u na le Autonomous System ea hau (AS). Ka eona, o ka abela IP e tšoanang ho li-server tse 'maloa le ho latela taelo ena boemong ba marang-rang, lebisa basebelisi ho e haufi. Ke habohlokoa ho bolela hore esita le ka block ea aterese ea / 24, hoa khoneha ho haha ​​​​marang-rang a ho fana ka litaba. Bafani ba bang ba li-server ba u lumella ho etsa tsebiso bakeng sa tšebeliso libakeng tsohle tse fumanehang ho bona.

Haeba ha u mong'a ea thabileng oa liaterese tsa IP, joale ho tsamaisa CDN e bonolo u tla e hloka:

  • domain name kapa subdomain
  • bonyane li-server tse peli libakeng tse fapaneng. Seva e ka ba e inehetseng kapa ea sebele
  • sesebelisoa sa geoDNS. Ka eona, mosebelisi, ha a se a buile le sebaka sa marang-rang, o tla lebisoa ho seva se haufi

Ngolisa sebaka sa marang-rang ebe u odara li-server

Ka ho ngolisoa ha domain, ntho e 'ngoe le e' ngoe e bonolo - re ngolisa sebakeng leha e le sefe le mongoli ofe kapa ofe. U ka boela ua sebelisa subdomain bakeng sa CDN, mohlala ntho e kang cdn.domainname.com. Ha e le hantle, mohlaleng oa rona, re tla etsa joalo.

Ha e le li-server tsa ho laela, li lokela ho hiroa libakeng le linaheng tseo bamameli ba hau ba leng ho tsona. Haeba morero o le intercontinental, joale ho loketse ho khetha bafani ba amohelang baeti ba fanang ka li-server ho pota lefatše hang-hang. Mehlala: OVH, khiriso web и 100TB - bakeng sa li-server tse inehetseng, Vultr и DigitalOcean - bakeng sa leru la sebele*.

Bakeng sa CDN ea rona ea poraefete, re tla odara li-server tse 3 tse fumanehang lik'honthinenteng tse fapaneng. Ho Vultr ho seva bakeng sa $5/kh re tla fumana 25GB SSD libaka le 1TB ea sephethephethe. Ha o kenya, khetha Debian ea morao-rao. Li-server tsa rona:

Ho aha le ho hlophisa CDN ea hau FrankfurtIP: 199.247.18.199

Ho aha le ho hlophisa CDN ea hau ChicagoIP: 149.28.121.123

Ho aha le ho hlophisa CDN ea hau СингапурIP: 157.230.240.216

* Vultr le DigitalOcean li ts'episa mokoloto oa $ 100 ho basebelisi ba ingolisang ka lihokela tsa sengoloa hang kamora ho kenyelletsa mokhoa oa ho patala. Mongoli le eena o fumana thoriso e nyenyane ho sena, e leng ea bohlokoa haholo ho eena hona joale. Ke kopa o utloisise.

Ho theha geoDNS

E le hore mosebedisi a lebisetsoe ho seva se lakatsehang (haufi) ha a fumana sebaka sa marang-rang kapa CDN subdomain, re hloka seva sa DNS se nang le mosebetsi oa geoDNS.

Molao-motheo le ts'ebetso ea geoDNS ke tse latelang:

  1. E totobatsa IP ea moreki ea rometseng kopo ea DNS, kapa IP ea seva sa DNS e sebelisoang ha ho sebetsoa kopo ea moreki. Li-server tse joalo tse iphetang hangata ke li-DNS-s tsa bafani.
  2. IP ea moreki e tseba naha kapa sebaka sa habo. Bakeng sa sena, ho sebelisoa li-database tsa GeoIP, tseo ho tsona ho nang le tse ngata haholo kajeno. Ho na le tse ntle likhetho tsa mahala.
  3. Ho itšetlehile ka sebaka sa mofani, o mo fa aterese ea IP ea seva se haufi sa CDN.

Seva ea DNS e nang le ts'ebetso ea geoDNS e ka ba bokana u le mong, empa ho molemo ho sebelisa litharollo tse lokiselitsoeng ka marang-rang a li-server tsa DNS ho pota lefatše le Leha e le efe ho tloha lebokoseng:

  • CloudDNS от $9.95/kh, Tefiso ea GeoDNS, ka ho sa feleng ho na le DNS Failover e le 'ngoe
  • Zilore от $25/kh, DNS Failover e lumelletsoe
  • Amazon Route 53 от $35/kh bakeng sa likopo tse felletseng tsa 50M tsa geo. DNS Failover e lefisoa ka thoko
  • DNS e entsoe e le bonolo от $125/kh, ho na le 10 DNS Failvers
  • Cloudflare, "Geo Steering" e fumaneha ho merero ea Khoebo

Ha o laela geoDNS, o lokela ho ela hloko palo ea likopo tse kenyellelitsoeng ho tefiso 'me u hopole hore palo ea sebele ea likopo ho domain e ka feta litebello ka makhetlo a' maloa. Limilione tsa likho, li-scanner, li-spammer le meea e meng e khopo li sebetsa ka thata.

Hoo e ka bang lits'ebeletso tsohle tsa DNS li kenyelletsa ts'ebeletso ea bohlokoahali bakeng sa ho aha CDN - DNS Failover. Ka thuso ea eona, o ka theha leihlo la ts'ebetso ea li-server tsa hau, 'me, ha ho se na matšoao a bophelo, o ka nkela aterese ea seva e sa sebetseng sebaka ka mokhoa o bolokang likarabo tsa DNS.

Ho aha CDN ea rona, re tla e sebelisa CloudDNS, Tefiso ea GeoDNS.

Ha re kenyeng sebaka se secha sa DNS akhaonteng ea hau, re hlakisa sebaka sa hau sa marang-rang. Haeba re ntse re haha ​​​​CDN ho subdomain, 'me sebaka se seholo se se se ntse se sebelisoa, joale hang ka mor'a ho eketsa sebaka seo, u se ke ua lebala ho eketsa lirekoto tsa DNS tse teng tse sebetsang. Mohato o latelang ke ho theha lirekoto tse 'maloa tsa A bakeng sa sebaka sa CDN / subdomain, e' ngoe le e 'ngoe e tla sebelisoa sebakeng seo re se boletseng. O ka hlakisa lik'honthinente kapa linaha joalo ka libaka, libaka tse nyane li fumaneha bakeng sa USA le Canada.

Tabeng ea rona, CDN e tla phahamisoa ho subdomain cdn.sayt.in. Ka ho eketsa sebaka sat.in, theha rekoto ea pele ea A bakeng sa subdomain 'me u supe Amerika Leboea ho seva e Chicago:

Ho aha le ho hlophisa CDN ea hau
Ha re phete ketso bakeng sa libaka tse ling, re hopola ho theha keno e le 'ngoe bakeng sa libaka tsa kamehla. Mona ke se etsahalang qetellong:

Ho aha le ho hlophisa CDN ea hau

Keno ea ho qetela skrineng e bolela hore libaka tsohle tse sa hlalosoang ('me tsena ke Europe, Afrika, basebelisi ba Marang-rang ba sathelaete, joalo-joalo) li tla romelloa ho seva e Frankfurt.

Sena se phethela ho seta ha DNS ea mantlha. E sala e le ho ea sebakeng sa marang-rang sa "domain registrar" le ho khutlisa li-NS tsa hajoale ka tse fanoeng ke CloudDNS. 'Me ha li-NS li tla nchafatsoa, ​​​​re tla lokisa li-server.

Ho kenya litifikeiti tsa SSL

CDN ea rona e tla sebetsa holim'a HTTPS, kahoo haeba u se u ntse u e-na le litifikeiti tsa SSL bakeng sa domain kapa subdomain, li kenye ho li-server tsohle, mohlala, ho directory. /etc/ssl/yourdomain/

Haeba ho se na litifikeiti, u ka fumana ea mahala ho Let's Encrypt. E phethahetseng bakeng sa sena ACME Shellscript. Moreki o bonolo ebile o bonolo ho theha, mme ho bohlokoa ka ho fetisisa, e o lumella ho netefatsa domain/subdomain ka DNS ka CloudDNS API.

Re tla kenya acme.sh ho seva se le seng feela - European 199.247.18.199, moo litifikeiti li tla kopitsoa ho tse ling kaofela. Ho kenya, tsamaisa:

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

Nakong ea ho kenya script, ho tla etsoa mosebetsi oa CRON bakeng sa ho nchafatsa litifikeiti ntle le ho kenya letsoho ha rona.

Ha o fana ka setifikeiti, sebaka sa marang-rang se tla hlahlojoa ho sebelisoa DNS ho sebelisa API, kahoo ho akhaonto ea hau ea CloudDNS ho menu ea Reseller API, u lokela ho theha mochine o mocha oa API le ho e beha phasewete bakeng sa eona. Sephetho sa auth-id e nang le password e tla ngoloa faeleng ~/.acme.sh/dnsapi/dns_cloudns.sh (ha ea lokela ho ferekanngoa le file dns_clouddns.sh). Mona ke mela e hlokang ho hlakoloa le ho hlophisoa:

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

Joale re tla kopa setifikeiti sa SSL bakeng sa cdn.sayt.in

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

Likhethong, nakong e tlang, re fane ka taelo ea ho kenya ts'ebetso ea seva sa webo ka bo eona ka mor'a nchafatso e ngoe le e ngoe ea nako ea ho netefatsa setifikeiti nakong e tlang.

Ts'ebetso eohle ea ho fumana setifikeiti e ka nka metsotso e 2, u se ke ua e sitisa. Haeba phoso ea netefatso ea domain e etsahala, leka ho tsamaisa taelo hape. Qetellong re tla bona moo litifikeiti li kentsoeng teng:

Ho aha le ho hlophisa CDN ea hau

Hopola litsela tsena, li tla hloka ho hlalosoa ha u kopitsa setifikeiti ho li-server tse ling, hammoho le ho litlhophiso tsa seva sa marang-rang. Ha re ele hloko phoso ea ho kenya li-configs tsa Nginx hape - e ke ke ea ba ho seva e hlophisitsoeng ka botlalo ha u nchafatsa litifikeiti.

Sohle seo re se siileng bakeng sa SSL ke ho kopitsa setifikeiti se amoheloang ho li-server tse ling tse peli ha re ntse re boloka tsela ea lifaele. Ha re theheng li-directory tse tšoanang ho e 'ngoe le e' ngoe ea tsona ebe re etsa kopi:

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/

Ho ntlafatsa setifikeiti khafetsa, theha mosebetsi oa letsatsi le letsatsi oa CRON ho li-server ka bobeli ka taelo:

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

Tabeng ena, ho fihlella ho seva sa mohloli o hole ho tlameha ho lokisoa ka senotlolo, ke. ntle le ho kenya phasewete. Se lebale ho e etsa.

Ho kenya le ho lokisa Nginx

Ho sebeletsa litaba tse tsitsitseng, re tla sebelisa Nginx e hlophisitsoeng e le seva sa proxy ea caching. Ntlafatsa lethathamo la liphutheloana ebe u li kenya ho li-server tse tharo:

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

Sebakeng sa kamehla, re sebelisa config ho tsoa ho spoiler e ka tlase:
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;
    }
  }
}

Fetola ho config:

  • boholo_bo boholo - boholo ba cache, e sa feteng sebaka sa disk se fumanehang
  • ha e sebetse - nako ea polokelo ea data e bolokiloeng eo ho seng motho ea e fihletseng
  • ssl_certificate и ssl_certificate_key - litsela tsa setifikeiti sa SSL le lifaele tsa bohlokoa
  • proxy_cache_valid - nako ea ho boloka data e bolokiloeng
  • proxy_pass — aterese ea seva sa mantlha moo CDN e tla kopa lifaele bakeng sa caching. Mohlala oa rona, sena sat.in

Joalokaha u ka bona, ntho e 'ngoe le e' ngoe e bonolo. Bothata bo ka hlaha feela ho beha nako ea caching ka lebaka la ho tšoana ha litaelo ha e sebetse и proxy_cache_valid. A re li hlahlobeng ka mohlala oa rōna. Ke sena se etsahalang ha e sa sebetse=7d и proxy_cache_valid 90d:

  • haeba kopo e sa phetoa nakong ea matsatsi a 7, joale data e tla hlakoloa ho cache ka mor'a nako ena
  • haeba kopo e phetoa bonyane hanngoe ka matsatsi a 7, joale data e ka har'a cache e tla nkoa e sa sebetse ka mor'a matsatsi a 90 'me Nginx e tla e ntlafatsa ka kopo e latelang, e e nke ho tswa ho seva sa pele.

E qetile ho fetola nginx.conf, kenya tlhophiso hape:

root@cdn:~# service nginx reload

CDN ea rona e lokile. Ka $15/kh. re fumane lintlha tsa ho ba teng lik'honthinenteng tse tharo le 3 TB ea sephethephethe: 1 TB sebakeng se seng le se seng.

Ho hlahloba mosebetsi oa CDN

Ha re shebeng li-pings ho CDN ea rona ho tsoa libakeng tse fapaneng tsa libaka. Tšebeletso efe kapa efe ea ping e tla sebetsa bakeng sa sena.

Sebaka sa ho qala
Moamoheli
IP
Kakaretso ea nako, mof

Jeremane Berlin
cdn.sayt.in
199.247.18.199
9.6

Netherlands, Amsterdam
cdn.sayt.in
199.247.18.199
10.1

France Paris
cdn.sayt.in
199.247.18.199
16.3

Great Britain, London
cdn.sayt.in
199.247.18.199
14.9

Canada, 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

Japane Tokyo
cdn.sayt.in
157.230.240.216
74.8

Australia, Sydney
cdn.sayt.in
157.230.240.216
95.9

Litholoana li ntle. Hona joale re tla beha setšoantšo sa teko motso oa sebaka se seholo teko.jpg 'me u hlahlobe lebelo la eona la ho jarolla ka CDN. Ho thoe - entsoe. Litaba li fanoa kapele.

Ha re ngoleng mongolo o monyane haeba re batla ho hlakola cache sebakeng sa CDN.
hloekisa.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

Ho hlakola cache kaofela, e tsamaise feela, faele e arohaneng e ka hloekisoa ka tsela ena:

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

Sebakeng sa liqeto

Qetellong, ke batla ho fana ka malebela a bohlokoa e le hore ke fete hang-hang se ileng sa utloisa hlooho ea ka bohloko ka nako eo:

  • Ho eketsa mamello ea phoso ea CDN, ho kgothaletswa ho lokisa DNS Failover, e thusang ho fetola ka potlako rekoto ea A ha ho ka ba le ho senyeha ha seva. Sena se etsoa ka har'a lirekoto tsa DNS tsa sebaka sa taolo.
  • Liwebsaete tse nang le libaka tse pharalletseng ha ho pelaelo hore li hloka palo e kholo ea li-CDN, empa re se ke ra cheseha ka ho feteletseng. Mohlomong mosebelisi a ke ke a bona phapang e kholo ha e bapisoa le CDN e lefuoang haeba u beha li-server libakeng tsa 6-7: Europe, Amerika Leboea (bochabela), Amerika Leboea (bophirima), Singapore, Australia, Hong Kong kapa Japane.
  • Ka linako tse ling ba amohelang baeti ha ba lumelle tšebeliso ea li-server tse hiriloeng molemong oa CDN. Ka hona, haeba ka tšohanyetso u etsa qeto ea ho tsamaisa marang-rang a ho fana ka litaba e le tšebeletso, u se ke ua lebala ho bala melao ea mofani ea itseng ea amohelang baeti esale pele.
  • Hlahloba 'mapa oa puisano ka tlas'a metsiho emela hore na lik'honthinente li hokahane joang le ho ela sena hloko ha u haha ​​marang-rang a ho fana ka litaba
  • Leka ho hlahloba pings ho tsoa libakeng tse fapaneng ho li-server tsa hau. Ka tsela ena o ka bona libaka tse haufi haholo le lintlha tsa CDN mme o hlophisa GeoDNS ka nepo
  • Ho itšetlehile ka mesebetsi, ho tla ba molemo ho lokisa Nginx bakeng sa litlhoko tse khethehileng tsa caching le ho ela hloko mojaro o ho seva. Lingoliloeng tse mabapi le cache ea Nginx li nthusitse haholo ho sena - mona le ho potlakisa mosebetsi tlas'a meroalo e boima: mona и mona

Source: www.habr.com