Mepụta na ịhazi CDN gị

A na-eji netwọk nnyefe ọdịnaya (CDNs) na webụsaịtị na ngwa bụ isi iji mee ka nbudata nke ihe kwụ ọtọ dị ngwa. Nke a na-eme n'ihi caching faịlụ na sava CDN dị na mpaghara mpaghara dị iche iche. Site na ịrịọ data site na CDN, onye ọrụ na-enweta ya site na sava kacha nso.

Ụkpụrụ nke ọrụ na ịrụ ọrụ nke netwọk nnyefe ọdịnaya niile bụ otu ihe ahụ. N'ịbụ onye natara arịrịọ ka ibudata faịlụ, ihe nkesa CDN na-ewepụ ya otu oge site na ihe nkesa mbụ wee nye onye ọrụ, n'otu oge ahụ na-echekwa ya maka oge a kapịrị ọnụ. A na-aza arịrịọ niile na-esote site na cache. CDN niile nwere nhọrọ iji buo ụzọ buo faịlụ, kpochapụ cache, tọọ ụbọchị ngafe, na ndị ọzọ.

Ọ na-eme na, n'ihi otu ihe ma ọ bụ ọzọ, ịkwesịrị ịhazi netwọk nnyefe ọdịnaya nke gị, mgbe ahụ - ka ntụziaka maka ịgbakọta igwe kwụ otu ebe na-esote ga-enyere anyị aka.

Mepụta na ịhazi CDN gị
isi: Infographic vector mepụtara site na pikisuperstar - www.freepik.com

Mgbe ịchọrọ CDN nke gị

Tụlee ikpe ndị na-agba ọsọ CDN nke gị nwere ezi uche:

  • mgbe enwere ọchịchọ ịchekwa ego, na ọnụ ahịa na-agba ọsọ ọbụna mgbe ị na-eji CDN ọnụ ala dị ka BunnyCDN ruru ọtụtụ narị dollar kwa ọnwa
  • ọ bụrụ na anyị chọrọ ịnweta cache na-adịgide adịgide ma ọ bụ cache na-enweghị ihe nkesa na ndị agbata obi ọwa
  • Ọrụ CDN enweghị isi ọnụnọ na mpaghara ịchọrọ
  • ntọala nnyefe ọdịnaya pụrụ iche achọrọ
  • anyị chọrọ ime ngwa ngwa nnyefe nke ọdịnaya dị ike site n'itinye ihe nkesa mmepụta nso na ndị ọrụ
  • enwere nchegbu na ọrụ CDN ndị ọzọ nwere ike ịnakọta ma ọ bụ jiri ozi gbasara omume onye ọrụ n'ụzọ iwu na-akwadoghị (ndewo ndị na-akwadoghị GDPR) ma ọ bụ tinye aka na mmemme iwu na-akwadoghị.

N'ọtụtụ ọnọdụ ndị ọzọ, ọ ka mma iji ngwọta edoziworo dị adị.

Kedu ihe ị ga-achọ ịmalite

Ọ bụ ihe magburu onwe ya ma ọ bụrụ na ị nwere sistemụ kwụụrụ onwe gị (AS). Na ya, ị nwere ike ekenye otu IP na ọtụtụ sava na dika ntuziaka a si di na ọkwa netwọkụ, duru ndị ọrụ gaa na nke kacha nso. Ọ bara uru ịsị na ọbụlagodi na ngọngọ adreesị / 24, ọ ga-ekwe omume ịmepụta netwọk nnyefe ọdịnaya. Ụfọdụ ndị na-eweta ihe nkesa na-enye gị ohere ịme ọkwa maka ojiji na mpaghara niile dị ha.

Ọ bụrụ na ị bụghị onye nwere obi ụtọ nke nwere ngọngọ nke adreesị IP, mgbe ahụ iji mee CDN dị mfe ị ga-achọ:

  • ngalaba aha ma ọ bụ subdomain
  • ọ dịkarịa ala sava abụọ na mpaghara dị iche iche. Ihe nkesa ahụ nwere ike ịbụ nke raara onwe ya nye ma ọ bụ mebere ya
  • geoDNS ngwaọrụ. Site na ya, onye ọrụ, na-agwa ngalaba ahụ, a ga-eduzi ya gaa na nkesa kacha nso

Debanye aha ngalaba wee tụọ ihe nkesa

Site na ndebanye aha ngalaba, ihe niile dị mfe - anyị na-edebanye aha na mpaghara ọ bụla na onye na-edeba aha ọ bụla. Ị nwekwara ike iji subdomain maka CDN, dịka ọmụmaatụ ihe dị ka cdn.domainname.com. N'ezie, n'ihe atụ anyị, anyị ga-eme nke ahụ.

Banyere ịtụ ihe nkesa, ekwesịrị ịgbazite ha na mpaghara na obodo ebe ndị na-ege gị ntị nọ. Ọ bụrụ na oru ngo a bụ intercontinental, mgbe ahụ, ọ dị mma ịhọrọ ndị na-enye ndị na-eweta ihe nkesa na-enye ihe nkesa n'ụwa nile n'otu oge. Ọmụmaatụ: OVH, mgbazinye webụ и 100Tb - maka sava raara onwe ya nye, Nwee и DigitalOcean - maka igwe ojii mebere *.

Maka CDN nkeonwe anyị, anyị ga-enye iwu sava 3 mebere na kọntinent dị iche iche. Na Nwee na ihe nkesa maka $5/mo anyị ga-enweta 25GB SSD ebe na 1TB nke okporo ụzọ. Mgbe ị na-etinye, họrọ Debian kacha ọhụrụ. Sava anyị:

Mepụta na ịhazi CDN gị Frankfurt, IP: 199.247.18.199

Mepụta na ịhazi CDN gị Chicago, IP: 149.28.121.123

Mepụta na ịhazi CDN gị Сингапур, IP: 157.230.240.216

*Vultr na DigitalOcean kwere nkwa $100 kredit nye ndị ọrụ debanyere aha site na njikọ dị n'isiokwu ahụ ozugbo agbakwunyere usoro ịkwụ ụgwọ. Onye edemede ahụ na-enwetakwa otuto dị nta site na nke a, nke dị oke mkpa nye ya ugbu a. Biko nwee nghọta.

Ịtọlite ​​​​geoDNS

Ka e wee duru onye ọrụ ahụ gaa na ihe nkesa chọrọ (nke kacha nso) mgbe ị na-enweta ngalaba ma ọ bụ subdomain CDN, anyị chọrọ sava DNS nwere ọrụ geoDNS.

Ụkpụrụ na ọrụ nke geoDNS bụ ndị a:

  1. Na-akọwapụta IP nke onye ahịa zitere arịrịọ DNS, ma ọ bụ IP nke sava DNS recursive nke a na-eji mgbe ị na-ahazi arịrịọ ndị ahịa. Sava na-emegharịghachi ndị dị otú ahụ na-abụkarị DNS-s nke ndị na-eweta ya.
  2. IP nke onye ahịa na-amata obodo ma ọ bụ mpaghara ya. Maka nke a, a na-eji ọdụ data GeoIP, nke enwere ọtụtụ taa. Enwere ezigbo free nhọrọ.
  3. Dabere na ebe onye ahịa nọ, na-enye ya adreesị IP nke ihe nkesa CDN kacha nso.

Ihe nkesa DNS nwere ọrụ geoDNS nwere ike ịbụ kpọkọta onwe gị, ma ọ ka mma iji ngwọta dị njikere na netwọk nke sava DNS gburugburu ụwa na Anycast site na igbe:

  • CloudS si $9.95/mo, GeoDNS tarifu, na ndabara enwere otu DNS Failover
  • Zilore si $25/mo, Agbanyere ọdịda DNS
  • Ụzọ Amazon 53 si $35/mo maka net 50M geo-arịrịọ. A na-akwụ ụgwọ Failover DNS iche iche
  • DNS Dị Mfe si $125/mo, e nwere 10 DNS ọdịda
  • Igwe ojii, "Geo Steering" dị na atụmatụ ụlọ ọrụ

Mgbe ị na-enye iwu geoDNS, ị kwesịrị ịṅa ntị na ọnụ ọgụgụ nke arịrịọ gụnyere na tarifu ma buru n'uche na ọnụ ọgụgụ nke arịrịọ na ngalaba nwere ike karịa ihe a tụrụ anya ọtụtụ ugboro. Ọtụtụ nde spiders, scanners, spammers na ndị mmụọ ọjọọ ndị ọzọ na-arụ ọrụ ike.

Ihe fọrọ nke nta ka ọ bụrụ ọrụ DNS niile gụnyere ọrụ dị mkpa maka iwulite CDN - DNS Failover. Site n'enyemaka ya, ị nwere ike melite nlekota oru nke sava gị na, na enweghị akara nke ndụ, na-akpaghị aka dochie adreesị nke ihe nkesa na-adịghị arụ ọrụ na nkwado ndabere na mpaghara nzaghachi DNS.

Iji wuo CDN anyị, anyị ga-eji Cloud, GeoDNS tarifu.

Ka anyị tinye mpaghara DNS ọhụrụ na akaụntụ nkeonwe gị, na-akọwa ngalaba gị. Ọ bụrụ na anyị na-ewu CDN na subdomain, na isi ngalaba ejirila ya, ozugbo agbakwunyere mpaghara ahụ, echefula ịgbakwunye ndekọ DNS na-arụ ọrụ dị ugbu a. Nzọụkwụ ọzọ bụ ịmepụta ọtụtụ A-ndekọ maka ngalaba CDN / subdomain, nke ọ bụla a ga-etinye n'ọrụ na mpaghara anyị kwuru. Ị nwere ike ịkọwa kọntinent ma ọ bụ obodo dịka mpaghara, mpaghara mpaghara dị maka USA na Canada.

N'ọnọdụ anyị, CDN ga-ebuli na ngalaba subdomain cdn.syt.in. Site na ịgbakwunye mpaghara sịt.in, mepụta ndekọ A nke mbụ maka subdomain wee tụọ North America niile na ihe nkesa dị na Chicago:

Mepụta na ịhazi CDN gị
Ka anyị kwugharịa ihe omume maka mpaghara ndị ọzọ, na-echeta ịmepụta otu ntinye maka mpaghara ndabara. Nke a bụ ihe na-eme n'ikpeazụ:

Mepụta na ịhazi CDN gị

Ntinye ndabara ikpeazụ na nseta ihuenyo pụtara na mpaghara niile akọwapụtaghị (ma ndị a bụ Europe, Africa, ndị ọrụ ịntanetị satịlaịtị, wdg) ga-eziga na sava dị na Frankfurt.

Nke a na-emecha ntọala DNS bụ isi. Ọ ka dị ka ịga na webụsaịtị onye na-edeba aha wee dochie ngalaba NS dị ugbu a na nke ClouDNS nyere. Ma mgbe NS ga-emelite, anyị ga-akwadebe sava.

Nwụnye asambodo SSL

CDN anyị ga-arụ ọrụ karịa HTTPS, yabụ ọ bụrụ na ịnweelarị asambodo SSL maka ngalaba ma ọ bụ ngalaba ngalaba, bulite ha na sava niile, dịka ọmụmaatụ, na ndekọ. /etc/ssl/domain gị/

Ọ bụrụ na enweghị asambodo, ị nwere ike nweta nke efu na Let's Encrypt. Zuru oke maka nke a ACME Shellscript. Onye ahịa ahụ dị mfe ma dị mfe ịtọlite, na nke kachasị mkpa, ọ na-enye gị ohere ịkwado ngalaba / subdomain site na DNS site na ClouDNS API.

Anyị ga-etinye acme.sh na naanị otu n'ime sava - European 199.247.18.199, nke a ga-esi na ya depụtaghachi ndị ọzọ niile asambodo. Iji wụnye, gbaa ọsọ:

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

N'oge ntinye nke edemede ahụ, a ga-emepụta ọrụ CRON maka mmeghari ọzọ nke asambodo na-enweghị ikere òkè anyị.

Mgbe ị na-enye asambodo, a ga-enyocha ngalaba ahụ site na iji DNS site na iji API, yabụ na akaụntụ ClouDNS nkeonwe na menu Reseller API, ịkwesịrị ịmepụta API onye ọrụ ọhụrụ wee tọọ paswọọdụ maka ya. A ga-ede akwụkwọ ikike nke ga-esi na ya nwere paswọọdụ n'ime faịlụ ahụ ~/.acme.sh/dnsapi/dns_cloudns.sh (ka ị ghara inwe mgbagwoju anya na faịlụ DNS_clouddns.sh). Nke a bụ ahịrị ndị ekwesịrị ka edeghị ya ma dezie:

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

Ugbu a, anyị ga-arịọ ihe SSL akwụkwọ maka cdn.syt.in

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

Na nhọrọ, n'ihi na n'ọdịnihu, anyị kpọmkwem iwu na-akpaghị aka bugharịa ihe nkesa weebụ nhazi mgbe ọ bụla ọhụrụ nke akwụkwọ ndaba oge n'ọdịnihu.

Usoro niile nke inweta asambodo nwere ike were ihe ruru nkeji 2, akwụsịla ya. Ọ bụrụ na njehie nkwado ngalaba emee, nwaa ịmegharị iwu ahụ ọzọ. Na njedebe anyị ga-ahụ ebe ebugoro asambodo:

Mepụta na ịhazi CDN gị

Cheta ụzọ ndị a, ọ ga-adị mkpa ka akọwapụta ha mgbe ị na-edegharị akwụkwọ ahụ na sava ndị ọzọ, yana na ntọala sava weebụ. Anyị anaghị ege ntị na njehie nke ibugharị Nginx configs - ọ gaghị adị na sava ahaziri nke ọma mgbe ị na-emelite asambodo.

Naanị ihe anyị hapụrụ maka SSL bụ idetuo akwụkwọ enwetara na sava abụọ ọzọ ka ị na-ejigide ụzọ faịlụ. Ka anyị mepụta otu akwụkwọ ndekọ aha na nke ọ bụla n'ime ha wee mee otu:

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/

Ka imelite asambodo oge niile, mepụta ọrụ CRON kwa ụbọchị na sava abụọ ahụ site na iwu:

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

N'okwu a, a ga-ahazirịrị ịnweta ihe nkesa isi mmalite site igodo, i.e. na-etinyeghị paswọọdụ. Echefula ime ya.

Ịwụnye na ịhazi Nginx

Iji nye ọdịnaya kwụ ọtọ, anyị ga-eji Nginx ahaziri dị ka sava proxy caching. Melite ndepụta ngwugwu wee wụnye ya na sava atọ niile:

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

Kama nke ndabara, anyị na-eji nhazi site na spoiler n'okpuru:
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;
    }
  }
}

Dezie na nhazi:

  • max_size - nha nke cache, agaghị agafe ohere diski dị
  • adighi arụ ọrụ - oge nchekwa data echekwara nke ọ nweghị onye nwetara
  • ssl_certificate и ssl_certificate_key - ụzọ na akwụkwọ SSL na faịlụ igodo
  • proxy_cache_valid - oge nchekwa data echekwara
  • proxy_pass - adreesị nke ihe nkesa mbụ nke CDN ga-arịọ faịlụ maka caching. N'ihe atụ anyị, nke a sịt.in

Dị ka ị pụrụ ịhụ, ihe niile dị mfe. Naanị ihe isi ike nwere ike ibili n'ịtọ oge ndochi anya n'ihi myirịta nke ntuziaka ahụ adighi arụ ọrụ и proxy_cache_valid. Ka anyị jiri ihe atụ anyị nyochaa ha. Nke a bụ ihe na-eme mgbe adịghị arụ ọrụ=7d и proxy_cache_valid 90d:

  • Ọ bụrụ na emeghịghachi arịrịọ ahụ n'ime ụbọchị 7, mgbe ahụ, a ga-ehichapụ data na cache mgbe oge a gasịrị
  • Ọ bụrụ na a na-emeghachi arịrịọ ahụ ma ọ dịkarịa ala otu ugboro kwa ụbọchị 7, mgbe ahụ, a ga-ewere data dị na cache dị ka ihe na-adịghị mma mgbe ụbọchị 90 gasịrị na Nginx ga-emelite ya na arịrịọ ọzọ, na-ewere ya na nkesa mbụ.

Emechara idezi nginx.conf, bugharịa nhazi ahụ:

root@cdn:~# service nginx reload

CDN anyị adịla njikere. Maka $15 / mo. anyị nwetara isi ọnụnọ na kọntinent atọ na 3 TB nke okporo ụzọ: 1 TB na ebe ọ bụla.

Nyochaa ọrụ nke CDN

Ka anyị lelee pings na CDN anyị site na mpaghara mpaghara dị iche iche. Ọrụ ping ọ bụla ga-arụ ọrụ maka nke a.

Ebe mmalite
Onye ọbịa
IP
Nkeji oge, ms

Germany Berlin
cdn.syt.in
199.247.18.199
9.6

Netherlands, Amsterdam
cdn.syt.in
199.247.18.199
10.1

France Paris
cdn.syt.in
199.247.18.199
16.3

Great Britain, London
cdn.syt.in
199.247.18.199
14.9

Canada, Toronto
cdn.syt.in
149.28.121.123
16.2

USA, San Francisco
cdn.syt.in
149.28.121.123
52.7

USA, Dallas
cdn.syt.in
149.28.121.123
23.1

USA, Chicago
cdn.syt.in
149.28.121.123
2.6

USA, New York
cdn.syt.in
149.28.121.123
19.8

Сингапур
cdn.syt.in
157.230.240.216
1.7

Japan Tokyo
cdn.syt.in
157.230.240.216
74.8

Australia, Sydney
cdn.syt.in
157.230.240.216
95.9

Nsonaazụ dị mma. Ugbu a, anyị ga-etinye ihe nlele ule na mgbọrọgwụ nke saịtị isi nwale.jpg wee lelee ọsọ nbudata ya site na CDN. A na-ekwu - mere. A na-ebuga ọdịnaya ngwa ngwa.

Ka anyị dee obere edemede ma ọ bụrụ na anyị chọrọ ikpochapụ cache na ebe CDN.
kpocha.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

Ka ihichapụ cache niile, naanị mee ya, enwere ike ihicha faịlụ dị iche dịka nke a:

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

Kama ikwubi

N'ikpeazụ, achọrọ m inye ụfọdụ ndụmọdụ bara uru ka m wee gafee ngwa ngwa rake ahụ mere isi m iwe n'oge ahụ:

  • Iji mee ka ntachi obi nke CDN dịkwuo mma, a na-atụ aro ka ịhazi DNS Failover, nke na-enyere aka ịgbanwe ngwa ngwa A ndekọ na ihe omume nke ndakpọ ihe nkesa. A na-eme nke a na njikwa njikwa DNS ndekọ nke ngalaba.
  • Saịtị nwere nnukwu mpaghara ala obi abụọ adịghị ya na ọ chọrọ ọnụọgụ CDN buru ibu, mana ka anyị ghara ịbụ ndị na-anụ ọkụ n'obi. O yikarịrị ka onye ọrụ agaghị achọpụta nnukwu ọdịiche ma e jiri ya tụnyere CDN akwụ ụgwọ ma ọ bụrụ na ị na-etinye sava na ebe 6-7: Europe, North America (ọwụwa anyanwụ), North America (n'ebe ọdịda anyanwụ), Singapore, Australia, Hong Kong ma ọ bụ Japan.
  • Mgbe ụfọdụ ndị nnabata anaghị ekwe ka ojiji nke sava agbaziri agbaziri maka ebumnuche CDN. Ya mere, ọ bụrụ na ị kpebie na mberede ibuga netwọk nnyefe ọdịnaya dị ka ọrụ, echefula ịgụ iwu nke otu onye na-eweta Bochum tupu oge eruo.
  • Nyochaa map nkwukọrịta n'okpuru mmiriiji gosipụta otu esi ejikọta kọntinent ndị ahụ wee buru nke a n'uche mgbe ị na-ewu netwọk nnyefe ọdịnaya
  • Gbalịa ịlele pings si n'ebe dị iche iche na sava gị. Otu a ị nwere ike ịhụ mpaghara kacha nso na isi CDN wee hazie GeoDNS nke ọma
  • Dabere na ọrụ ndị ahụ, ọ ga-aba uru ịmegharị Nginx nke ọma maka ihe dị iche iche caching chọrọ yana iburu n'uche ibu dị na sava ahụ. Akụkọ gbasara cache Nginx nyeere m aka nke ukwuu na nke a - ebe a na osooso ọrụ n'okpuru ibu arọ: ebe a и ebe a

isi: www.habr.com