Tsim thiab teeb tsa koj lub CDN

Cov Ntsiab Lus Xa Khoom (CDNs) yog siv hauv cov vev xaib thiab cov ntawv thov feem ntau txhawm rau txhawm rau txhawm rau thauj khoom ntawm cov khoom zoo li qub. Qhov no tshwm sim vim lub caching ntawm cov ntaub ntawv ntawm CDN servers nyob rau hauv txawv cheeb tsam. Los ntawm kev thov cov ntaub ntawv ntawm CDN, tus neeg siv tau txais nws los ntawm cov neeg rau zaub mov ze tshaj plaws.

Lub hauv paus ntsiab lus ntawm kev ua haujlwm thiab kev ua haujlwm ntawm tag nrho cov ntsiab lus xa khoom sib txuas yog kwv yees li qub. Tau txais kev thov kom rub tawm cov ntaub ntawv, CDN server siv nws ib zaug los ntawm tus thawj server thiab muab rau tus neeg siv, tib lub sijhawm caching nws rau lub sijhawm teev tseg. Txhua qhov kev thov tom qab tau teb los ntawm cache. Txhua CDNs muaj kev xaiv rau preload cov ntaub ntawv, tshem tawm cov cache, teem hnub tas sij hawm, thiab ntau dua.

Nws tshwm sim tias, rau ib qho laj thawj lossis lwm qhov, koj yuav tsum npaj koj tus kheej cov ntsiab lus xa tawm, thiab tom qab ntawd - cia cov lus qhia rau kev sib sau lub tsheb kauj vab tom ntej yuav pab peb.

Tsim thiab teeb tsa koj lub CDN
Tau qhov twg los: Infographic vector tsim los ntawm pikisuperstar - www.freepik.com

Thaum koj xav tau koj tus kheej CDN

Cia peb saib cov xwm txheej uas khiav koj tus kheej CDN ua rau kev nkag siab:

  • thaum muaj kev xav txuag nyiaj, thiab cov nqi khiav txawm tias siv pheej yig CDNs nyiam BunnyCDN tus nqi rau ntau pua daus las ib hlis
  • yog tias peb xav tau ib lub cache ruaj khov lossis cache tsis muaj server thiab channel cov neeg nyob sib ze
  • CDN cov kev pabcuam tsis muaj cov ntsiab lus muaj nyob hauv cheeb tsam koj xav tau
  • yuav tsum muaj cov ntsiab lus tshwj xeeb xa khoom
  • peb xav kom ceev cov khoom xa tuaj ntawm cov ntsiab lus dynamic los ntawm kev tso cov neeg siv khoom ntau lawm los ze zog rau cov neeg siv
  • muaj kev txhawj xeeb tias qhov kev pabcuam CDN thib peb tuaj yeem sau tsis raug cai lossis siv cov ntaub ntawv hais txog tus neeg siv tus cwj pwm (nyob zoo uas tsis yog-GDPR-raws li kev pabcuam) lossis koom nrog lwm yam kev ua txhaum cai

Hauv lwm qhov xwm txheej, nws tsim nyog siv cov kev daws teeb meem uas twb muaj lawm.

Yam koj xav tau pib

Nws zoo heev yog tias koj muaj koj tus kheej Autonomous System (AS). Nrog nws, koj tuaj yeem muab tib tus IP rau ntau lub servers thiab raws li cov lus qhia no nyob rau theem network, coj cov neeg siv mus rau qhov ze tshaj plaws. Nws tsim nyog hais tias txawm tias nrog /24 chaw nyob thaiv, nws muaj peev xwm tsim kom muaj cov ntsiab lus xa tawm. Qee cov chaw muab kev pabcuam pub rau koj tshaj tawm rau kev siv hauv txhua cheeb tsam muaj rau lawv.

Yog tias koj tsis yog tus tswv zoo siab ntawm qhov thaiv ntawm IP chaw nyob, ces khiav CDN yooj yim koj yuav xav tau:

  • sau npe los yog subdomain
  • tsawg kawg yog ob lub servers hauv cheeb tsam sib txawv. Cov neeg rau zaub mov tuaj yeem yog nplooj siab lossis virtual
  • geoDNS cov cuab yeej. Nrog nws, tus neeg siv, tau hais txog lub npe, yuav raug coj mus rau tus neeg rau zaub mov ze tshaj plaws

Sau npe sau npe thiab xaj servers

Nrog rau npe sau npe, txhua yam yooj yim - peb sau npe hauv ib cheeb tsam nrog rau tus neeg sau npe. Koj tuaj yeem siv lub subdomain rau CDN, piv txwv li qee yam zoo li cdn.domainname.com. Qhov tseeb, hauv peb qhov piv txwv, peb yuav ua li ntawd xwb.

Raws li kev xaj cov servers, lawv yuav tsum tau xauj hauv cheeb tsam thiab lub tebchaws uas koj cov neeg siv khoom nyob. Yog tias qhov project yog intercontinental, ces nws yog qhov yooj yim los xaiv cov chaw muab kev pabcuam uas muaj cov servers thoob plaws ntiaj teb. Piv txwv: OVH, xauj web ΠΈ 100Tb - rau cov servers tshwj xeeb, Vultr ΠΈ DigitalOcean - rau huab virtual *.

Rau peb tus kheej CDN, peb yuav xaj 3 virtual servers ntawm ntau lub teb chaws. Ntawm Vultr ntawm lub server rau $5/ hli peb yuav tau 25GB SSD qhov chaw thiab 1TB tsheb. Thaum lub sij hawm installation, peb yuav xaiv qhov tseeb Debian. Peb cov servers:

Tsim thiab teeb tsa koj lub CDN Frankfurt, ib: 199.247.18.199

Tsim thiab teeb tsa koj lub CDN Chicago, ib: 149.28.121.123

Tsim thiab teeb tsa koj lub CDN Singapore, ib: 157.230.240.216

* Vultr thiab DigitalOcean cog lus $ 100 credit rau cov neeg siv uas sau npe los ntawm cov kev sib txuas hauv kab lus tam sim tom qab ntxiv txoj kev them nyiaj. Tus sau kuj tau txais kev qhuas me me los ntawm qhov no, uas tseem ceeb heev rau nws tam sim no. Thov ua siab ntev.

Teeb tsa geoDNS

Txhawm rau kom tus neeg siv raug coj mus rau qhov xav tau (ze tshaj) server thaum nkag mus rau lub npe lossis CDN subdomain, peb xav tau DNS server nrog geoDNS muaj nuj nqi.

Lub hauv paus ntsiab lus thiab kev ua haujlwm ntawm geoDNS yog raws li hauv qab no:

  1. Txhais tus IP ntawm tus neeg siv khoom uas xa cov lus thov DNS, lossis tus IP ntawm tus neeg siv DNS rov ua dua uas siv thaum ua cov neeg thov kev thov. Cov servers zoo li no feem ntau yog cov chaw muab DNS.
  2. Tus neeg siv khoom tus IP txheeb xyuas nws lub tebchaws lossis cheeb tsam. Rau qhov no, GeoIP databases tau siv, uas muaj ntau yam niaj hnub no. Muaj qee qhov zoo kev xaiv dawb.
  3. Nyob ntawm qhov chaw ntawm tus neeg siv khoom, muab nws qhov chaw nyob IP ntawm CDN server ze tshaj plaws.

DNS server nrog geoDNS muaj nuj nqi tuaj yeem ua tau sib sau los ntawm koj tus kheej, tab sis nws yog qhov zoo dua los siv cov kev daws teeb meem npaj txhij nrog lub network ntawm DNS servers thoob ntiaj teb thiab Anycast los ntawm lub thawv:

  • SlouDNS los ntawm $9.95/ hli, GeoDNS tariff, los ntawm lub neej ntawd muaj ib qho DNS Failover
  • Zilor los ntawm $25/ hli, DNS Failover enabled
  • Amazon Txoj Kev 53 los ntawm $35/ hli rau net 50M geo-thov. DNS Failover raug them nqi cais
  • DNS Ua Yooj Yim los ntawm $125/ hli, muaj 10 DNS Failovers
  • Cloudflare, "Geo Steering" feature muaj nyob rau hauv Enterprise cov phiaj xwm

Thaum xaj geoDNS, koj yuav tsum tau them sai sai rau tus naj npawb ntawm cov lus thov suav nrog hauv tus nqi se thiab nco ntsoov tias tus naj npawb tiag tiag ntawm kev thov rau lub npe tuaj yeem tshaj qhov kev cia siab los ntawm ob peb zaug. Ntau lab tus kab laug sab, scanners, spammers thiab lwm yam dab phem ua haujlwm tsis tu ncua.

Yuav luag txhua qhov kev pabcuam DNS suav nrog qhov kev pabcuam tseem ceeb rau kev tsim CDN - DNS Failover. Nrog nws cov kev pab, koj tuaj yeem teeb tsa kev saib xyuas kev ua haujlwm ntawm koj cov servers thiab, thaum tsis muaj cov cim qhia ntawm lub neej, cia li hloov qhov chaw nyob ntawm tus neeg rau zaub mov tsis ua haujlwm nrog ib qho thaub qab hauv DNS cov lus teb.

Txhawm rau tsim peb CDN peb yuav siv CloudDNS, GeoDNS tariff.

Cia peb ntxiv ib cheeb tsam DNS tshiab hauv koj tus kheej tus account, qhia koj lub npe. Yog tias peb tab tom tsim CDN ntawm lub subdomain, thiab lub ntsiab tseem ceeb twb tau siv lawm, ces tam sim ntawd tom qab ntxiv thaj tsam, tsis txhob hnov ​​​​qab ntxiv cov ntaub ntawv DNS uas twb muaj lawm ua haujlwm. Cov kauj ruam tom ntej yog los tsim ob peb A-cov ntaub ntawv rau CDN sau / subdomain, txhua qhov yuav raug siv rau thaj tsam peb teev. Koj tuaj yeem teev cov continents los yog lub teb chaws raws li cheeb tsam, sub-regions muaj nyob rau teb chaws USA thiab Canada.

Hauv peb qhov xwm txheej, CDN yuav raug tsa los ntawm subdomain cdn.sayt.in. Los ntawm kev ntxiv ib cheeb tsam hais.in, tsim thawj A-cov ntaub ntawv rau lub subdomain thiab taw tes tag nrho ntawm North America mus rau lub server hauv Chicago:

Tsim thiab teeb tsa koj lub CDN
Cia peb rov ua qhov kev txiav txim rau lwm cheeb tsam, nco ntsoov tsim ib qho kev nkag mus rau thaj chaw default. Nov yog qhov tshwm sim thaum kawg:

Tsim thiab teeb tsa koj lub CDN

Qhov kawg default nkag rau hauv lub screenshot txhais tau hais tias tag nrho cov cheeb tsam tsis tau teev tseg (thiab cov no yog Europe, Africa, satellite Internet cov neeg siv, thiab lwm yam) yuav raug xa mus rau lub server hauv Frankfurt.

Qhov no ua tiav cov kev teeb tsa DNS yooj yim. Nws tseem yuav mus rau tus sau npe sau npe lub vev xaib thiab hloov cov npe tam sim no NSs nrog cov uas tau muab los ntawm ClouDNS. Thiab thaum NSs yuav hloov kho, peb yuav npaj cov servers.

Kev teeb tsa ntawm SSL daim ntawv pov thawj

Peb CDN yuav ua haujlwm dhau HTTPS, yog li yog tias koj twb muaj SSL daim ntawv pov thawj rau tus sau lossis subdomain, xa lawv mus rau txhua tus servers, piv txwv li, mus rau cov npe. /etc/ssl/yourdomain/

Yog tias tsis muaj daim ntawv pov thawj, koj tuaj yeem tau txais ib qho dawb los ntawm Let's Encrypt. Zoo meej rau qhov no ACME Shellscript. Tus neeg siv khoom yooj yim thiab yooj yim teeb tsa, thiab qhov tseem ceeb tshaj plaws, nws tso cai rau koj kom siv tau tus sau / subdomain los ntawm DNS ntawm ClouDNS API.

Peb yuav nruab acme.sh ntawm tsuas yog ib qho ntawm cov servers - European 199.247.18.199, los ntawm cov ntawv pov thawj yuav muab theej rau tag nrho lwm tus. Txhawm rau nruab, khiav:

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

Thaum lub sij hawm installation ntawm tsab ntawv, ib txoj hauj lwm CRON yuav raug tsim kom rov ua dua tshiab ntawm daim ntawv pov thawj yam tsis muaj peb koom nrog.

Thaum muab daim ntawv pov thawj, tus sau yuav raug kuaj xyuas siv DNS siv API, yog li hauv ClouDNS tus kheej tus account hauv Reseller API menu, koj yuav tsum tsim ib tus neeg siv API tshiab thiab teeb tus password rau nws. Qhov tshwm sim auth-id nrog tus password yuav raug sau rau hauv cov ntaub ntawv ~/.acme.sh/dnsapi/dns_cloudns.sh (tsis txhob totaub nrog cov ntaub ntawv dns_clouddns sh). Nov yog cov kab uas yuav tsum tsis txhob hais thiab kho:

CLOUDNS_AUTH_ID=<auth-id>
CLOUDNS_AUTH_PASSWORD="<ΠΏΠ°Ρ€ΠΎΠ»ΡŒ>"

Tam sim no peb yuav thov daim ntawv pov thawj SSL rau cdn.sayt.in

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

Hauv cov kev xaiv, rau yav tom ntej, peb tau teev cov lus txib kom rov pib lub web server configuration tom qab txhua qhov txuas ntxiv ntawm daim ntawv pov thawj siv tau lub sijhawm yav tom ntej.

Tag nrho cov txheej txheem ntawm kev tau txais daim ntawv pov thawj yuav siv sijhawm li 2 feeb, tsis txhob cuam tshuam nws. Yog hais tias muaj qhov yuam kev validation tshwm sim, sim khiav cov lus txib dua. Thaum kawg peb yuav pom qhov twg cov ntawv pov thawj tau rub tawm:

Tsim thiab teeb tsa koj lub CDN

Nco ntsoov cov kab no, lawv yuav tsum tau teev tseg thaum luam daim ntawv pov thawj mus rau lwm lub servers, nrog rau hauv lub vev xaib server. Peb tsis xyuam xim rau qhov yuam kev ntawm reloading Nginx configs - nws yuav tsis nyob rau hauv tag nrho configured server thaum hloov kho daim ntawv pov thawj.

Txhua yam uas tseem tshuav rau peb nrog SSL yog luam daim ntawv pov thawj tau txais mus rau ob lub servers, khaws cia txoj hauv kev rau cov ntaub ntawv. Cia peb tsim tib lub npe ntawm lawv txhua tus thiab ua ib daim ntawv luam:

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/

Txhawm rau hloov kho daim ntawv pov thawj tsis tu ncua, tsim txoj haujlwm CRON txhua hnub ntawm ob lub servers nrog cov lus txib:

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

Hauv qhov no, kev nkag mus rau cov chaw nyob deb nroog yuav tsum tau teeb tsa los ntawm tus yuam sij, i.e. tsis nkag mus rau tus password. Tsis txhob hnov ​​qab ua nws.

Txhim kho thiab teeb tsa Nginx

Txhawm rau pab cov ntsiab lus zoo li qub, peb yuav siv Nginx teeb tsa raws li caching neeg rau zaub mov. Hloov kho cov npe pob thiab nruab nws ntawm tag nrho peb lub servers:

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

Es tsis txhob ntawm lub neej ntawd, peb siv lub config los ntawm spoiler hauv qab no:
nginx.conf ib

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;
    }
  }
}

Kho kom raug nyob rau hauv config:

  • max_size - qhov loj ntawm lub cache, tsis pub tshaj qhov chaw disk muaj
  • tsaug zog - lub sijhawm khaws cia ntawm cov ntaub ntawv cached uas tsis muaj leej twg nkag mus
  • ssl_ ntawv pov thawj ΠΈ ssl_certificate_key - txoj hauv kev rau SSL daim ntawv pov thawj thiab cov ntaub ntawv tseem ceeb
  • proxy_cache_valid - lub sijhawm khaws cia ntawm cov ntaub ntawv cached
  • proxy_pass - chaw nyob ntawm tus thawj server uas CDN yuav thov cov ntaub ntawv rau caching. Hauv peb qhov piv txwv, qhov no hais.in

Raws li koj tau pom, txhua yam yog yooj yim. Qhov teeb meem nkaus xwb yuav tshwm sim hauv kev teeb tsa lub sijhawm caching vim qhov zoo sib xws ntawm cov lus qhia tsaug zog ΠΈ proxy_cache_valid. Cia peb txheeb xyuas lawv nrog peb tus qauv. Nov yog qhov tshwm sim thaum twg inactive = 7d ΠΈ proxy_cache_valid 90d:

  • yog tias qhov kev thov tsis rov ua dua hauv 7 hnub, cov ntaub ntawv yuav raug muab tshem tawm ntawm lub cache tom qab lub sijhawm no
  • Yog tias qhov kev thov rov ua dua tsawg kawg ib zaug txhua 7 hnub, tom qab ntawd cov ntaub ntawv hauv cache yuav raug txiav txim siab tsis tu ncua tom qab 90 hnub thiab nrog rau qhov kev thov tom ntej Nginx yuav hloov kho nws, coj nws los ntawm tus thawj server.

Ua tiav los kho nginx.conf ib, reload lub configuration:

root@cdn:~# service nginx reload

Peb CDN yog npaj txhij. Rau $15/mo. peb tau txais cov ntsiab lus ntawm qhov muaj nyob ntawm peb lub teb chaws thiab 3 TB ntawm kev khiav tsheb: 1 TB hauv txhua qhov chaw.

Tshawb xyuas cov haujlwm ntawm CDN

Cia peb saib pings rau peb CDN los ntawm qhov chaw sib txawv. Txhua qhov kev pabcuam ping yog tsim nyog rau qhov no.

Launch point
Tug Tswv
IP
Avg sijhawm, ms

Lub teb chaws Yelemees Berlin
cdn.sayt.in
199.247.18.199
9.6

Netherlands, Amsterdam
cdn.sayt.in
199.247.18.199
10.1

Fabkis Paris
cdn.sayt.in
199.247.18.199
16.3

United Kingdom, 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

Singapore
cdn.sayt.in
157.230.240.216
1.7

Nyiv Tokyo
cdn.sayt.in
157.230.240.216
74.8

Australia, Sydney
cdn.sayt.in
157.230.240.216
95.9

Cov txiaj ntsig tau zoo. Tam sim no cia peb tso cov duab sim hauv lub hauv paus ntawm lub vev xaib tseem ceeb tes.jpg thiab xyuas nws qhov ceev download ntawm CDN. Nws yog hais tias - ua. Cov ntsiab lus yog xa sai.

Cia peb sau ib tsab ntawv me me yog tias peb xav tshem cov cache ntawm CDN point.
huv.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

Txhawm rau rho tawm tag nrho cov cache, tsuas yog khiav nws, cov ntaub ntawv cais tuaj yeem raug ntxuav zoo li no:

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

Hloov chaw xaus

Thaum kawg, kuv xav muab qee cov lus qhia tseem ceeb txhawm rau txhawm rau tam sim ntawd hla lub rake uas ib zaug ua rau kuv mob taub hau:

  • Txhawm rau nce qhov ua txhaum cai ntawm CDN, nws raug nquahu kom teeb tsa DNS Failover, uas yuav pab hloov cov ntaub ntawv A sai sai thaum muaj kev cuam tshuam ntawm server. Qhov no yog ua tiav nyob rau hauv lub tswj vaj huam sib luag DNS cov ntaub ntawv ntawm tus sau.
  • Cov chaw uas muaj thaj chaw dav dav tsis muaj qhov tsis ntseeg xav tau ntau tus CDNs, tab sis cia peb tsis txhob ua siab phem. Feem ntau cov neeg siv yuav tsis pom qhov sib txawv tseem ceeb piv rau CDN them yog tias koj tso cov servers hauv 6-7 qhov chaw: Europe, North America (sab hnub tuaj), North America (sab hnub poob), Singapore, Australia, Hong Kong lossis Nyiv
  • Qee lub sij hawm hosters tsis tso cai siv cov servers xauj rau CDN lub hom phiaj. Yog li ntawd, yog tias koj dheev txiav txim siab los xa cov ntsiab lus xa tawm raws li kev pabcuam, tsis txhob hnov ​​​​qab nyeem cov cai ntawm ib tus kws kho mob tshwj xeeb ua ntej
  • Tshawb nrhiav daim ntawv qhia kev sib txuas lus hauv qab dejlos sawv cev yuav ua li cas cov teb chaws txuas nrog thiab coj qhov no mus rau hauv tus account thaum tsim cov ntsiab lus xa khoom network
  • Sim mus xyuas pings los ntawm ntau qhov chaw rau koj cov servers. Txoj kev no koj tuaj yeem pom cov cheeb tsam ze tshaj plaws rau CDN cov ntsiab lus thiab teeb tsa GeoDNS kom raug
  • Nyob ntawm cov haujlwm, nws yuav muaj txiaj ntsig zoo los kho Nginx rau cov cai tshwj xeeb caching thiab suav nrog kev thauj khoom ntawm lub server. Cov lus hais txog Nginx cache tau pab kuv ntau hauv qhov no - no thiab acceleration ntawm kev ua hauj lwm nyob rau hauv hnyav loads: no ΠΈ no

Tau qhov twg los: www.hab.com