Ilé ati tunto CDN rẹ

Awọn Nẹtiwọọki Ifijiṣẹ Akoonu (CDNs) ni a lo ni awọn oju opo wẹẹbu ati awọn ohun elo ni akọkọ lati yara ikojọpọ awọn eroja aimi. Eyi ṣẹlẹ nitori fifipamọ awọn faili lori awọn olupin CDN ti o wa ni oriṣiriṣi awọn agbegbe agbegbe. Nipa bibere data nipasẹ CDN, olumulo gba lati ọdọ olupin to sunmọ.

Ilana ti iṣẹ ati iṣẹ ṣiṣe ti gbogbo awọn nẹtiwọọki ifijiṣẹ akoonu jẹ isunmọ kanna. Lẹhin ti o ti gba ibeere kan lati ṣe igbasilẹ faili kan, olupin CDN gba akoko kan lati olupin atilẹba ti o fun olumulo naa, ni akoko kanna fifipamọ rẹ fun akoko kan pato. Gbogbo awọn ibeere ti o tẹle ni idahun lati kaṣe. Gbogbo CDN ni awọn aṣayan lati ṣaju awọn faili, ko kaṣe kuro, ṣeto ọjọ ipari, ati diẹ sii.

O ṣẹlẹ pe, fun idi kan tabi omiiran, o nilo lati ṣeto nẹtiwọọki ifijiṣẹ akoonu tirẹ, ati lẹhinna - jẹ ki awọn ilana fun apejọ keke ti o tẹle jẹ iranlọwọ fun wa.

Ilé ati tunto CDN rẹ
orisun: Infographic fekito ti a ṣẹda nipasẹ pikisuperstar - www.freepik.com

Nigbati o ba nilo CDN tirẹ

Wo awọn ọran nibiti ṣiṣiṣẹ CDN tirẹ jẹ oye:

  • nigba ti ifẹ kan wa lati fi owo pamọ, ati awọn idiyele ṣiṣe paapaa nigba lilo awọn CDN ti ko gbowolori bi BunnyCDN iye to orisirisi awọn ọgọrun dọla osu kan
  • ti a ba fẹ lati gba kaṣe ayeraye tabi kaṣe laisi olupin ati awọn aladugbo ikanni
  • Awọn iṣẹ CDN ko ni awọn aaye ti wiwa ni agbegbe ti o nilo
  • eyikeyi awọn eto ifijiṣẹ akoonu pataki ti o nilo
  • a fẹ lati ṣe iyara ifijiṣẹ akoonu ti o ni agbara nipa gbigbe olupin iṣelọpọ sunmọ awọn olumulo
  • ibakcdun kan wa pe iṣẹ CDN ẹni-kẹta le gba ni ilodi si tabi lo alaye nipa ihuwasi olumulo (hello awọn iṣẹ ti ko ni ibamu pẹlu GDPR) tabi ṣe awọn iṣẹ arufin miiran

Ni ọpọlọpọ awọn ọran miiran, o jẹ deede diẹ sii lati lo awọn solusan ti a ti ṣetan tẹlẹ.

Kini o nilo lati bẹrẹ

O jẹ ohun iyanu ti o ba ni Eto Adase ti tirẹ (AS). Pẹlu rẹ, o le fi IP kanna si awọn olupin pupọ ati gẹgẹ bi ilana yii ni ipele nẹtiwọki, taara awọn olumulo si ọkan ti o sunmọ julọ. O tọ lati sọ pe paapaa pẹlu bulọọki adirẹsi / 24, o ṣee ṣe lati kọ nẹtiwọọki ifijiṣẹ akoonu kan. Diẹ ninu awọn olupese olupin gba ọ laaye lati ṣe ikede fun lilo ni gbogbo awọn agbegbe ti o wa fun wọn.

Ti o ko ba jẹ oniwun idunnu ti bulọọki ti awọn adirẹsi IP, lẹhinna lati ṣiṣẹ CDN ti o rọrun iwọ yoo nilo:

  • ašẹ orukọ tabi subdomain
  • o kere ju meji olupin ni orisirisi awọn agbegbe. Awọn olupin le jẹ boya igbẹhin tabi foju
  • geoDNS ọpa. Pẹlu rẹ, olumulo, ti o ba ti koju agbegbe naa, yoo ṣe itọsọna si olupin ti o sunmọ julọ

Forukọsilẹ agbegbe ati paṣẹ awọn olupin

Pẹlu iforukọsilẹ agbegbe, ohun gbogbo rọrun - a forukọsilẹ ni agbegbe eyikeyi pẹlu Alakoso eyikeyi. O tun le lo subdomain fun CDN, fun apẹẹrẹ nkankan bi cdn.domainname.com. Ní ti gidi, nínú àpẹẹrẹ wa, a óò ṣe bẹ́ẹ̀.

Bi fun pipaṣẹ awọn olupin, wọn yẹ ki o yalo ni awọn agbegbe ati awọn orilẹ-ede nibiti olugbo olumulo rẹ wa. Ti iṣẹ akanṣe naa ba jẹ intercontinental, lẹhinna o rọrun lati yan awọn olupese alejo gbigba ti o pese awọn olupin ni gbogbo agbaye ni ẹẹkan. Awọn apẹẹrẹ: OVH, iyalo wẹẹbu и 100TB - fun awọn olupin ifiṣootọ, Lọ и DigitalOcean — fun foju awọsanma.

Fun CDN aladani wa, a yoo paṣẹ awọn olupin foju 3 lori awọn kọnputa oriṣiriṣi. Ni Lọ lori olupin fun $5 fun osu kan ao gba 25GB SSD ibi ati 1TB ti ijabọ. Nigbati o ba nfi sii, yan Debian tuntun. Awọn olupin wa:

Ilé ati tunto CDN rẹ Frankfurt, IP: 199.247.18.199

Ilé ati tunto CDN rẹ Chicago, IP: 149.28.121.123

Ilé ati tunto CDN rẹ Сингапур, IP: 157.230.240.216

* Vultr ati DigitalOcean ṣe ileri kirẹditi $ 100 si awọn olumulo ti o forukọsilẹ nipasẹ awọn ọna asopọ ninu nkan naa lẹsẹkẹsẹ lẹhin fifi ọna isanwo kun. Onkọwe tun gba iyin kekere kan lati eyi, eyiti o ṣe pataki pupọ fun u ni bayi. Jọwọ jẹ oye.

Ṣiṣeto geoDNS

Ni ibere fun olumulo lati dari si olupin ti o fẹ (sunmọ) nigbati o n wọle si aaye kan tabi CDN subdomain, a nilo olupin DNS pẹlu iṣẹ geoDNS.

Ilana ati iṣẹ ti geoDNS jẹ bi atẹle:

  1. Ni pato IP ti alabara ti o firanṣẹ ibeere DNS, tabi IP ti olupin DNS loorekoore ti o lo nigba ṣiṣe ibeere alabara. Iru awọn olupin ti n ṣe atunṣe nigbagbogbo jẹ awọn DNS-s ti awọn olupese.
  2. IP ti alabara mọ orilẹ-ede tabi agbegbe rẹ. Fun eyi, awọn apoti isura infomesonu GeoIP ti lo, eyiti ọpọlọpọ wa loni. Awọn ti o dara wa free awọn aṣayan.
  3. Ti o da lori ipo ti alabara, yoo fun ni adiresi IP ti olupin CDN ti o sunmọ.

Olupin DNS pẹlu iṣẹ geoDNS le jẹ kojọpọ funrararẹ, ṣugbọn o dara lati lo awọn iṣeduro ti a ti ṣetan pẹlu nẹtiwọki ti awọn olupin DNS ni ayika agbaye ati Anycast lati apoti:

  • Clouds lati $9.95 fun osu kan, GeoDNS idiyele, nipa aiyipada nibẹ ni ọkan DNS Ikuna
  • Zilore lati $25 fun osu kan, Aṣiṣe DNS ṣiṣẹ
  • Ọna Amazon 53 lati $35 fun osu kan fun net 50M geo-ibeere. Ikuna DNS jẹ owo sisan lọtọ
  • DNS Ṣe Rọrun lati $125 fun osu kan, o wa 10 DNS Ikuna
  • Oju awọsanma, "Geo Steering" ẹya wa ni awọn eto Idawọlẹ

Nigbati o ba n paṣẹ geoDNS, o yẹ ki o san ifojusi si nọmba awọn ibeere ti o wa ninu owo idiyele ati ki o ranti pe nọmba gangan ti awọn ibeere si agbegbe le kọja awọn ireti nipasẹ ọpọlọpọ igba. Awọn miliọnu awọn alantakun, awọn ọlọjẹ, awọn spammers ati awọn ẹmi buburu miiran n ṣiṣẹ lainidi.

Fere gbogbo awọn iṣẹ DNS pẹlu iṣẹ ti ko ṣe pataki fun kikọ CDN kan – Ikuna DNS. Pẹlu iranlọwọ rẹ, o le ṣeto ibojuwo iṣẹ ti awọn olupin rẹ ati, ni laisi awọn ami ti igbesi aye, rọpo adirẹsi ti olupin ti kii ṣe iṣẹ pẹlu ọkan afẹyinti ni awọn idahun DNS.

Lati kọ CDN wa, a yoo lo Aṣayan, GeoDNS idiyele.

Jẹ ki a ṣafikun agbegbe DNS tuntun ninu akọọlẹ ti ara ẹni, ti n ṣalaye agbegbe rẹ. Ti a ba n kọ CDN kan lori subdomain, ati pe agbegbe akọkọ ti wa ni lilo tẹlẹ, lẹhinna lẹsẹkẹsẹ lẹhin fifi agbegbe kun, maṣe gbagbe lati ṣafikun awọn igbasilẹ DNS ti n ṣiṣẹ tẹlẹ. Igbesẹ t’okan ni lati ṣẹda ọpọlọpọ awọn igbasilẹ A fun agbegbe CDN / subdomain, ọkọọkan eyiti yoo lo si agbegbe ti a pato. O le pato awọn continents tabi awọn orilẹ-ede bi awọn agbegbe, awọn agbegbe-ipin wa fun USA ati Canada.

Ninu ọran wa, CDN yoo dide lori subdomain kan cdn.sayt.in. Nipa fifi agbegbe kan kun sọ.in, ṣẹda igbasilẹ A-akọkọ fun subdomain ati tọka gbogbo Ariwa America si olupin ni Chicago:

Ilé ati tunto CDN rẹ
Jẹ ki a tun iṣẹ naa fun awọn agbegbe miiran, ni iranti lati ṣẹda titẹsi kan fun awọn agbegbe aiyipada. Eyi ni ohun ti o ṣẹlẹ ni ipari:

Ilé ati tunto CDN rẹ

Akọsilẹ aiyipada ti o kẹhin ninu sikirinifoto tumọ si pe gbogbo awọn agbegbe ti a ko sọ pato (ati iwọnyi jẹ Yuroopu, Afirika, awọn olumulo Intanẹẹti satẹlaiti, ati bẹbẹ lọ) yoo firanṣẹ si olupin ni Frankfurt.

Eyi pari iṣeto ipilẹ DNS. O ku lati lọ si oju opo wẹẹbu Alakoso agbegbe ati rọpo NSs lọwọlọwọ pẹlu awọn ti a gbejade nipasẹ ClouDNS. Ati nigba ti NS yoo wa ni imudojuiwọn, a yoo mura awọn olupin.

Fifi sori ẹrọ ti awọn iwe-ẹri SSL

CDN wa yoo ṣiṣẹ lori HTTPS, nitorina ti o ba ti ni awọn iwe-ẹri SSL tẹlẹ fun agbegbe kan tabi subdomain, gbe wọn si gbogbo awọn olupin, fun apẹẹrẹ, si itọsọna naa. /ati be be lo/ssl/agbegbe rẹ/

Ti ko ba si awọn iwe-ẹri, o le gba ọkan ọfẹ lati Jẹ ki a Encrypt. Pipe fun eyi ACME Shellscript. Onibara jẹ rọrun ati rọrun lati ṣeto, ati pataki julọ, o fun ọ laaye lati fọwọsi agbegbe kan / subdomain nipasẹ DNS nipasẹ ClouDNS API.

A yoo fi acme.sh sori ọkan ninu awọn olupin nikan - European 199.247.18.199, eyiti awọn iwe-ẹri yoo ṣe daakọ si gbogbo awọn miiran. Lati fi sori ẹrọ, ṣiṣẹ:

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

Lakoko fifi sori ẹrọ ti iwe afọwọkọ, iṣẹ CRON yoo ṣẹda fun isọdọtun siwaju ti awọn iwe-ẹri laisi ikopa wa.

Nigbati o ba n funni ni ijẹrisi kan, agbegbe naa yoo ṣayẹwo ni lilo DNS nipa lilo API, nitorinaa ninu akọọlẹ ti ara ẹni ti ClouDNS ninu atokọ Alatunta API, o nilo lati ṣẹda API olumulo tuntun ati ṣeto ọrọ igbaniwọle kan fun rẹ. Abajade auth-id pẹlu ọrọ igbaniwọle kan yoo kọ sinu faili naa ~/.acme.sh/dnsapi/dns_cloudns.sh (kii ṣe idamu pẹlu faili dns_clouddns.sh). Eyi ni awọn laini ti o nilo lati jẹ aibikita ati ṣatunkọ:

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

Bayi a yoo beere ijẹrisi SSL kan fun cdn.sayt.in

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

Ninu awọn aṣayan, fun ọjọ iwaju, a ti ṣalaye aṣẹ kan lati tun ṣe atunto atunto olupin wẹẹbu laifọwọyi lẹhin isọdọtun kọọkan ti akoko ifọwọsi ijẹrisi ni ọjọ iwaju.

Gbogbo ilana ti gbigba ijẹrisi le gba to awọn iṣẹju 2, ma ṣe da duro. Ti aṣiṣe afọwọsi agbegbe kan ba waye, gbiyanju ṣiṣe aṣẹ naa lẹẹkansi. Ni ipari a yoo rii ibiti a ti gbe awọn iwe-ẹri silẹ:

Ilé ati tunto CDN rẹ

Ranti awọn ọna wọnyi, wọn yoo nilo lati wa ni pato nigbati didakọ iwe-ẹri si awọn olupin miiran, bakannaa ninu awọn eto olupin wẹẹbu. A ko san ifojusi si aṣiṣe ti atunko awọn atunto Nginx - kii yoo wa lori olupin ti a tunto ni kikun nigbati o nmu awọn iwe-ẹri ṣiṣẹ.

Gbogbo ohun ti a ti fi silẹ fun SSL ni lati daakọ iwe-ẹri ti o gba si awọn olupin meji miiran lakoko mimu ọna si awọn faili naa. Jẹ ki a ṣẹda awọn ilana kanna lori ọkọọkan wọn ki o ṣe ẹda kan:

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/

Lati ṣe imudojuiwọn awọn iwe-ẹri nigbagbogbo, ṣẹda iṣẹ CRON lojoojumọ lori olupin mejeeji pẹlu aṣẹ:

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

Ni idi eyi, iraye si olupin orisun latọna jijin gbọdọ wa ni tunto nipa bọtini, i.e. lai titẹ a ọrọigbaniwọle. Maṣe gbagbe lati ṣe.

Fifi ati tunto Nginx

Lati sin akoonu aimi, a yoo lo Nginx tunto bi olupin aṣoju caching. Ṣe imudojuiwọn awọn atokọ package ki o fi sii lori gbogbo awọn olupin mẹta:

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

Dipo aiyipada, a lo atunto lati apanirun ni isalẹ:
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;
    }
  }
}

Ṣatunkọ ninu atunto:

  • max_iwọn - iwọn kaṣe, ko kọja aaye disk ti o wa
  • aláìṣiṣẹ́ - akoko ipamọ data ti a fipamọ ti ko si ẹnikan ti o wọle si
  • ssl_ijẹrisi и ssl_certificate_key - awọn ọna si ijẹrisi SSL ati awọn faili bọtini
  • proxy_cache_valid - akoko ipamọ ti data ipamọ
  • aṣoju-kọja - adirẹsi ti olupin atilẹba lati eyiti CDN yoo beere awọn faili fun caching. Ninu apẹẹrẹ wa, eyi sọ.in

Bi o ti le ri, ohun gbogbo ni o rọrun. Iṣoro le dide nikan ni ṣiṣeto akoko caching nitori ibajọra ti awọn itọsọna naa aláìṣiṣẹ́ и proxy_cache_valid. Jẹ ki a ṣe ayẹwo wọn pẹlu apẹẹrẹ wa. Eyi ni ohun ti o ṣẹlẹ nigbati aláìṣiṣẹ́mọ́=7d и proxy_cache_valid 90d:

  • Ti ibeere naa ko ba tun ṣe laarin awọn ọjọ 7, lẹhinna data naa yoo paarẹ lati kaṣe lẹhin asiko yii
  • Ti ibeere naa ba tun ṣe ni o kere ju lẹẹkan ni gbogbo ọjọ 7, lẹhinna data ti o wa ninu kaṣe naa yoo gba pe o jẹ arugbo lẹhin awọn ọjọ 90 ati Nginx yoo ṣe imudojuiwọn pẹlu ibeere atẹle, mu lati olupin atilẹba.

Ti pari lati ṣatunkọ nginx.conf, tun atunto sori ẹrọ:

root@cdn:~# service nginx reload

CDN wa ti šetan. Fun $15 fun osu kan. a gba awọn aaye ti wiwa lori awọn kọnputa mẹta ati TB 3 ti ijabọ: 1 TB ni ipo kọọkan.

Ṣiṣayẹwo iṣẹ ti CDN

Jẹ ki a wo awọn pings si CDN wa lati oriṣiriṣi awọn ipo agbegbe. Eyikeyi iṣẹ ping yoo ṣiṣẹ fun eyi.

Aaye ifilọlẹ
Gbalejo
IP
Iwọn akoko, ms

Jẹmánì Berlin
cdn.sayt.in
199.247.18.199
9.6

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

Orilẹ Amẹrika, 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

Australia, Sydney
cdn.sayt.in
157.230.240.216
95.9

Awọn esi ti o dara. Bayi a yoo gbe aworan idanwo kan sinu gbongbo aaye akọkọ idanwo.jpg ati ṣayẹwo iyara igbasilẹ rẹ nipasẹ CDN. O ti wa ni wi - ṣe. Akoonu ti wa ni jiṣẹ ni kiakia.

Jẹ ki a kọ iwe afọwọkọ kekere kan ni ọran ti a fẹ lati ko kaṣe kuro lori aaye CDN.
wẹ.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

Lati pa gbogbo kaṣe rẹ, o kan ṣiṣẹ, faili lọtọ le di mimọ bi eleyi:

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

Dipo awọn ipinnu

Nikẹhin, Mo fẹ lati fun awọn imọran to wulo lati le ṣe igbesẹ lẹsẹkẹsẹ lori rake ti o jẹ ki ori mi dun ni akoko naa:

  • Lati mu ifarada aṣiṣe ti CDN pọ si, o niyanju lati tunto Iṣiṣe DNS, eyiti o ṣe iranlọwọ lati yi igbasilẹ A ni kiakia ni iṣẹlẹ ti didenukole olupin. Eyi ni a ṣe ni igbimọ iṣakoso awọn igbasilẹ DNS ti agbegbe naa.
  • Awọn aaye ti o ni agbegbe agbegbe ti o gbooro laisi iyemeji nilo nọmba nla ti CDN, ṣugbọn jẹ ki a maṣe jẹ agba. O ṣeese julọ olumulo kii yoo ṣe akiyesi iyatọ nla ni akawe si CDN ti o san ti o ba gbe awọn olupin si awọn ipo 6-7: Yuroopu, Ariwa America (ila-oorun), North America (oorun), Singapore, Australia, Ilu họngi kọngi tabi Japan
  • Nigba miiran awọn agbalejo ko gba laaye lilo awọn olupin iyalo fun awọn idi CDN. Nitorinaa, ti o ba pinnu lojiji lati fi nẹtiwọọki ifijiṣẹ akoonu ranṣẹ bi iṣẹ kan, maṣe gbagbe lati ka awọn ofin ti olupese alejo gbigba kan ni ilosiwaju.
  • Ye labeomi ibaraẹnisọrọ maplati ṣe aṣoju bi awọn kọnputa naa ṣe sopọ ki o ṣe akiyesi eyi nigbati o ba kọ nẹtiwọọki ifijiṣẹ akoonu kan
  • Gbiyanju lati ṣayẹwo pings lati yatọ si ibiti si awọn olupin rẹ. Ni ọna yii o le rii awọn agbegbe ti o sunmọ awọn aaye CDN ati tunto GeoDNS diẹ sii ni deede
  • Ti o da lori awọn iṣẹ-ṣiṣe, yoo jẹ iwulo lati tunne Nginx daradara fun awọn ibeere caching kan pato ati ni akiyesi fifuye lori olupin naa. Awọn nkan nipa kaṣe Nginx ṣe iranlọwọ fun mi pupọ pẹlu eyi - nibi ati isare ti ise labẹ eru eru: nibi и nibi

orisun: www.habr.com