Defnyddir Rhwydweithiau Cyflenwi Cynnwys (CDNs) mewn gwefannau a chymwysiadau yn bennaf i gyflymu llwytho elfennau statig. Mae hyn yn digwydd oherwydd bod ffeiliau'n cael eu storio ar weinyddion CDN sydd wedi'u lleoli mewn gwahanol ranbarthau daearyddol. Trwy ofyn am ddata trwy CDN, mae'r defnyddiwr yn ei dderbyn gan y gweinydd agosaf.
Mae egwyddor gweithrediad ac ymarferoldeb pob rhwydwaith darparu cynnwys fwy neu lai yr un peth. Ar Γ΄l derbyn cais i lawrlwytho ffeil, mae'r gweinydd CDN yn ei gymryd un-amser o'r gweinydd gwreiddiol ac yn ei roi i'r defnyddiwr, gan ei gadw ar yr un pryd am gyfnod penodol o amser. Mae pob cais dilynol yn cael ei ateb o'r storfa. Mae gan bob CDN opsiynau i raglwytho ffeiliau, clirio'r storfa, gosod y dyddiad dod i ben, a mwy.
Mae'n digwydd bod angen i chi, am ryw reswm neu'i gilydd, drefnu eich rhwydwaith cyflwyno cynnwys eich hun, ac yna - gadewch i'r cyfarwyddiadau ar gyfer gosod y beic nesaf fod o gymorth i ni.
Ystyriwch yr achosion lle mae rhedeg eich CDN eich hun yn gwneud synnwyr:
pan fo awydd i arbed arian, a chostau rhedeg hyd yn oed wrth ddefnyddio CDN rhad fel BunnyCDN swm i rai cannoedd o ddoleri y mis
os ydym am gael storfa barhaol neu storfa heb weinydd a chymdogion sianel
Nid oes gan wasanaethau CDN bwyntiau presenoldeb yn y rhanbarth sydd ei angen arnoch
unrhyw osodiadau cyflwyno cynnwys arbennig sydd eu hangen
rydym am gyflymu'r broses o ddarparu cynnwys deinamig trwy osod y gweinydd cynhyrchu yn agosach at ddefnyddwyr
mae pryder y gallai gwasanaeth CDN trydydd parti gasglu neu ddefnyddio gwybodaeth yn anghyfreithlon am ymddygiad defnyddwyr (helo gwasanaethau nad ydynt yn cydymffurfio Γ’ GDPR) neu gymryd rhan mewn gweithgareddau anghyfreithlon eraill
Yn y rhan fwyaf o achosion eraill, mae'n fwy priodol defnyddio datrysiadau parod presennol.
Beth sydd angen i chi ddechrau
Mae'n wych os oes gennych chi'ch System Ymreolaethol (AS) eich hun. Ag ef, gallwch chi aseinio'r un IP i sawl gweinydd a yn ol y cyfarwyddyd hwn ar lefel y rhwydwaith, cyfeiriwch ddefnyddwyr at yr un agosaf. Mae'n werth dweud, hyd yn oed gyda'r bloc cyfeiriad /24, mae'n bosibl adeiladu rhwydwaith darparu cynnwys. Mae rhai darparwyr gweinyddwyr yn caniatΓ‘u ichi wneud cyhoeddiad i'w ddefnyddio ym mhob rhanbarth sydd ar gael iddynt.
Os nad ydych yn berchennog hapus ar floc o gyfeiriadau IP, yna i redeg CDN syml bydd angen:
enw parth neu is-barth
o leiaf dau weinydd mewn gwahanol ranbarthau. Gall y gweinydd fod naill ai'n ymroddedig neu'n rhithwir
teclyn geoDNS. Ag ef, bydd y defnyddiwr, ar Γ΄l mynd i'r afael Γ’'r parth, yn cael ei gyfeirio at y gweinydd agosaf
Cofrestru parth ac archebu gweinyddwyr
Gyda chofrestru parth, mae popeth yn syml - rydym yn cofrestru mewn unrhyw barth gydag unrhyw gofrestrydd. Gallwch hefyd ddefnyddio is-barth ar gyfer CDN, er enghraifft rhywbeth tebyg cdn.domainname.com. A dweud y gwir, yn ein hesiampl ni, fe wnawn ni'n union hynny.
O ran archebu gweinyddwyr, dylid eu rhentu yn y rhanbarthau a'r gwledydd lle mae'ch cynulleidfa ddefnyddwyr wedi'i lleoli. Os yw'r prosiect yn rhyng-gyfandirol, yna mae'n gyfleus dewis darparwyr cynnal sy'n cynnig gweinyddwyr ledled y byd ar unwaith. Enghreifftiau: OVH, gwe les ΠΈ 100TB - ar gyfer gweinyddwyr pwrpasol, Vultr ΠΈ Ocean digidol β ar gyfer cwmwl rhithwir*.
Ar gyfer ein CDN preifat, byddwn yn archebu 3 gweinydd rhithwir ar wahanol gyfandiroedd. Yn Vultr ar y gweinydd ar gyfer $5 y mis byddwn yn cael 25GB AGC lleoedd a 1TB o draffig. Wrth osod, dewiswch y Debian diweddaraf. Ein gweinyddion:
Frankfurt, ip: 199.247.18.199
Chicago, ip: 149.28.121.123
Singapore, ip: 157.230.240.216
* Mae Vultr a DigitalOcean yn addo credyd o $100 i ddefnyddwyr sy'n cofrestru trwy'r dolenni yn yr erthygl yn syth ar Γ΄l ychwanegu dull talu. Derbynia yr awdwr hefyd ganmoliaeth fechan oddiwrth hyn, yr hyn sydd arwyddocaol iawn iddo yn awr. Byddwch yn ddeallus os gwelwch yn dda.
Sefydlu geoDNS
Er mwyn i'r defnyddiwr gael ei gyfeirio at y gweinydd dymunol (agosaf) wrth gyrchu parth neu is-barth CDN, mae angen gweinydd DNS arnom gyda'r swyddogaeth geoDNS.
Mae egwyddor a gweithrediad geoDNS fel a ganlyn:
Yn nodi IP y cleient a anfonodd y cais DNS, neu IP y gweinydd DNS ailadroddus a ddefnyddir wrth brosesu cais y cleient. Mae gweinyddwyr ailadroddus o'r fath fel arfer yn DNS-s o ddarparwyr.
Mae IP y cleient yn cydnabod ei wlad neu ranbarth. Ar gyfer hyn, defnyddir cronfeydd data GeoIP, y mae llawer iawn ohonynt heddiw. Mae da opsiynau am ddim.
Yn dibynnu ar leoliad y cleient, yn rhoi cyfeiriad IP y gweinydd CDN agosaf iddo.
Gall gweinydd DNS gyda swyddogaeth geoDNS fod ymgynnull ar eich pen eich hun, ond mae'n well defnyddio atebion parod gyda rhwydwaith o weinyddion DNS ledled y byd a Anycast o'r bocs:
CloudDNS o $9.95 y mis, tariff GeoDNS, yn ddiofyn mae un Methiant DNS
Cloudflare, Mae nodwedd "Geo Steering" ar gael mewn cynlluniau Menter
Wrth archebu geoDNS, dylech dalu sylw i nifer y ceisiadau sydd wedi'u cynnwys yn y tariff a chadw mewn cof y gall nifer gwirioneddol y ceisiadau i'r parth fod yn fwy na'r disgwyliadau sawl gwaith. Mae miliynau o bryfed cop, sganwyr, sbamwyr ac ysbrydion drwg eraill yn gweithio'n ddiflino.
Mae bron pob gwasanaeth DNS yn cynnwys gwasanaeth anhepgor ar gyfer adeiladu CDN - Methiant DNS. Gyda'i help, gallwch sefydlu monitro gweithrediad eich gweinyddwyr ac, yn absenoldeb arwyddion o fywyd, yn awtomatig disodli cyfeiriad gweinydd nad yw'n gweithio gydag un wrth gefn mewn ymatebion DNS.
I adeiladu ein CDN, byddwn yn defnyddio CloudDNS, tariff GeoDNS.
Gadewch i ni ychwanegu parth DNS newydd yn eich cyfrif personol, gan nodi'ch parth. Os ydym yn adeiladu CDN ar is-barth, a bod y prif barth eisoes yn cael ei ddefnyddio, yna yn syth ar Γ΄l ychwanegu'r parth, peidiwch ag anghofio ychwanegu'r cofnodion DNS gweithio presennol. Y cam nesaf yw creu sawl cofnod A ar gyfer y parth / is-barth CDN, a bydd pob un ohonynt yn cael ei gymhwyso i'r rhanbarth a nodwyd gennym. Gallwch nodi cyfandiroedd neu wledydd fel rhanbarthau, mae isranbarthau ar gael ar gyfer UDA a Chanada.
Yn ein hachos ni, bydd y CDN yn cael ei godi ar is-barth cdn.sayt.in. Trwy ychwanegu parth sayt.in, creu'r cofnod A cyntaf ar gyfer yr is-barth a phwyntio Gogledd America i gyd at y gweinydd yn Chicago:
Gadewch i ni ailadrodd y camau gweithredu ar gyfer rhanbarthau eraill, gan gofio creu un cofnod ar gyfer y rhanbarthau diofyn. Dyma beth sy'n digwydd yn y diwedd:
Mae'r cofnod rhagosodedig olaf yn y sgrin yn golygu y bydd yr holl ranbarthau amhenodol (a'r rhain yw Ewrop, Affrica, defnyddwyr Rhyngrwyd lloeren, ac ati) yn cael eu hanfon at y gweinydd yn Frankfurt.
Mae hyn yn cwblhau'r gosodiad DNS sylfaenol. Mae'n aros i fynd i wefan y cofrestrydd parth a disodli'r NSs parth cyfredol gyda'r rhai a gyhoeddir gan CloudDNS. Ac er y bydd yr NSs yn cael eu diweddaru, byddwn yn paratoi'r gweinyddwyr.
Gosod tystysgrifau SSL
Bydd ein CDN yn gweithio dros HTTPS, felly os oes gennych eisoes dystysgrifau SSL ar gyfer parth neu is-barth, uwchlwythwch nhw i bob gweinydd, er enghraifft, i'r cyfeiriadur /etc/ssl/eich parth/
Os nad oes tystysgrifau, gallwch gael un am ddim gan Let's Encrypt. Perffaith ar gyfer hyn Sgript Cregyn ACME. Mae'r cleient yn gyfleus ac yn hawdd i'w sefydlu, ac yn bwysicaf oll, mae'n caniatΓ‘u ichi ddilysu parth / is-barth gan DNS trwy API ClouDNS.
Byddwn yn gosod acme.sh ar un o'r gweinyddwyr yn unig - 199.247.18.199 Ewropeaidd, y bydd tystysgrifau'n cael eu copΓ―o ohono i'r holl weinyddion eraill. I osod, rhedeg:
Yn ystod gosod y sgript, bydd swydd CRON yn cael ei chreu ar gyfer adnewyddu tystysgrifau ymhellach heb ein cyfranogiad.
Wrth gyhoeddi tystysgrif, bydd y parth yn cael ei wirio gan ddefnyddio DNS gan ddefnyddio'r API, felly yn y cyfrif personol ClouDNS yn newislen Reseller API, mae angen i chi greu API defnyddiwr newydd a gosod cyfrinair ar ei gyfer. Bydd yr auth-id canlyniadol gyda chyfrinair yn cael ei ysgrifennu yn y ffeil ~/.acme.sh/dnsapi/dns_cloudns.sh (peidio Γ’ chael ei gymysgu Γ’ ffeil dns_clouddns.sh). Dyma'r llinellau sydd angen eu diystyru a'u golygu:
Yn yr opsiynau, ar gyfer y dyfodol, rydym wedi nodi gorchymyn i ail-lwytho'r cyfluniad gweinydd gwe yn awtomatig ar Γ΄l pob adnewyddiad o gyfnod dilysrwydd y dystysgrif yn y dyfodol.
Gall y broses gyfan o gael tystysgrif gymryd hyd at 2 funud, peidiwch Γ’ thorri ar ei draws. Os bydd gwall dilysu parth yn digwydd, ceisiwch redeg y gorchymyn eto. Ar y diwedd byddwn yn gweld lle mae'r tystysgrifau wedi'u llwytho i fyny:
Cofiwch y llwybrau hyn, bydd angen eu nodi wrth gopΓ―o'r dystysgrif i weinyddion eraill, yn ogystal ag yn y gosodiadau gweinydd gwe. Nid ydym yn rhoi sylw i'r gwall wrth ail-lwytho configs Nginx - ni fydd ar weinydd wedi'i ffurfweddu'n llawn wrth ddiweddaru tystysgrifau.
Y cyfan sydd gennym ar Γ΄l i SSL yw copΓ―o'r dystysgrif a dderbyniwyd i ddau weinydd arall wrth gynnal y llwybr i'r ffeiliau. Gadewch i ni greu'r un cyfeiriaduron ar bob un ohonynt a gwneud copi:
I ddiweddaru tystysgrifau yn rheolaidd, crΓ«wch swydd CRON dyddiol ar y ddau weinydd gyda'r gorchymyn:
scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload
Yn yr achos hwn, rhaid ffurfweddu mynediad i'r gweinydd ffynhonnell bell gan allwedd, h.y. heb fynd i mewn i gyfrinair. Peidiwch ag anghofio ei wneud.
Gosod a ffurfweddu Nginx
I wasanaethu cynnwys statig, byddwn yn defnyddio Nginx wedi'i ffurfweddu fel gweinydd dirprwy caching. Diweddarwch y rhestrau pecyn a'i osod ar bob un o'r tri gweinydd:
uchafswm_maint - maint y storfa, heb fod yn fwy na'r gofod disg sydd ar gael
anweithgar - amser storio data wedi'i storio na chafodd neb fynediad iddo
tystysgrif ssl_ ΠΈ ssl_certificate_key β llwybrau i dystysgrif SSL a ffeiliau allweddol
dirprwy_cache_valid - amser storio data wedi'i storio
dirprwy_pass β cyfeiriad y gweinydd gwreiddiol y bydd y CDN yn gofyn amdano i gadw ffeiliau. Yn ein hesiampl, hyn sayt.in
Fel y gwelwch, mae popeth yn syml. Dim ond oherwydd tebygrwydd y cyfarwyddebau y gall anhawster godi wrth osod yr amser caching anweithgar ΠΈ dirprwy_cache_valid. Gadewch i ni eu dadansoddi gyda'n hesiampl. Dyma beth sy'n digwydd pryd anactif=7d ΠΈ dirprwy_cache_valid 90d:
os na chaiff y cais ei ailadrodd o fewn 7 diwrnod, yna bydd y data'n cael ei ddileu o'r storfa ar Γ΄l y cyfnod hwn
os yw'r cais yn cael ei ailadrodd o leiaf unwaith bob 7 diwrnod, yna bydd y data yn y storfa yn cael ei ystyried yn ddarfodedig ar Γ΄l 90 diwrnod a bydd Nginx yn ei ddiweddaru gyda'r cais nesaf, gan ei gymryd o'r gweinydd gwreiddiol
Wedi gorffen i olygu nginx.conf, ail-lwythwch y ffurfweddiad:
root@cdn:~# service nginx reload
Mae ein CDN yn barod. Am $15 y mis. cawsom bwyntiau presenoldeb ar dri chyfandir a 3 TB o draffig: 1 TB ym mhob lleoliad.
Gwirio gwaith CDN
Gadewch i ni edrych ar y pings i'n CDN o wahanol leoliadau daearyddol. Bydd unrhyw wasanaeth ping yn gweithio ar gyfer hyn.
Man lansio
Gwesteiwr
IP
Avg amser, ms
Yr Almaen Berlin
cdn.sayt.in
199.247.18.199
9.6
Yr Iseldiroedd, Amsterdam
cdn.sayt.in
199.247.18.199
10.1
Ffrainc Paris
cdn.sayt.in
199.247.18.199
16.3
Deyrnas Unedig, Llundain
cdn.sayt.in
199.247.18.199
14.9
Canada, Toronto
cdn.sayt.in
149.28.121.123
16.2
UDA, San Francisco
cdn.sayt.in
149.28.121.123
52.7
UDA, Dallas
cdn.sayt.in
149.28.121.123
23.1
UDA, Chicago
cdn.sayt.in
149.28.121.123
2.6
UDA, Efrog Newydd
cdn.sayt.in
149.28.121.123
19.8
Singapore
cdn.sayt.in
157.230.240.216
1.7
Japan Tokyo
cdn.sayt.in
157.230.240.216
74.8
Awstralia, Sydney
cdn.sayt.in
157.230.240.216
95.9
Mae'r canlyniadau'n dda. Nawr byddwn yn gosod delwedd brawf yng ngwraidd y prif wefan prawf.jpg a gwirio ei gyflymder llwytho i lawr trwy CDN. Dywedir - wedi'i wneud. Mae cynnwys yn cael ei gyflwyno'n gyflym.
Gadewch i ni ysgrifennu sgript fach rhag ofn y byddwn am glirio'r storfa ar y pwynt CDN. 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
I ddileu'r storfa gyfan, dim ond ei redeg, gellir glanhau ffeil ar wahΓ’n fel hyn:
root@cdn:~# ./purge.sh /test.jpg
Yn lle casgliadau
Yn olaf, rwyf am roi rhai awgrymiadau defnyddiol er mwyn camu ar unwaith dros y rhaca a wnaeth i fy mhen frifo ar y pryd:
Er mwyn cynyddu goddefgarwch nam ar y CDN, argymhellir ffurfweddu DNS Failover, sy'n helpu i newid y cofnod A yn gyflym os bydd gweinydd yn chwalu. Gwneir hyn yng nghofnodion DNS y panel rheoli o'r parth.
Heb os, mae angen nifer fawr o CDNs ar safleoedd sydd Γ’ chwmpas daearyddol eang, ond gadewch i ni beidio Γ’ bod yn ffanatig. Yn fwyaf tebygol, ni fydd y defnyddiwr yn sylwi ar wahaniaeth sylweddol o'i gymharu Γ’ CDN taledig os ydych chi'n gosod gweinyddwyr mewn 6-7 lleoliad: Ewrop, Gogledd America (dwyrain), Gogledd America (gorllewin), SingapΓ΄r, Awstralia, Hong Kong neu Japan
Weithiau nid yw gwesteiwyr yn caniatΓ‘u defnyddio gweinyddion ar rent at ddibenion CDN. Felly, os penderfynwch yn sydyn ddefnyddio rhwydwaith darparu cynnwys fel gwasanaeth, peidiwch ag anghofio darllen rheolau darparwr cynnal penodol ymlaen llaw
Archwiliwch map cyfathrebu tanddwrcynrychioli sut mae'r cyfandiroedd wedi'u cysylltu ac ystyried hyn wrth adeiladu rhwydwaith darparu cynnwys
Ceisiwch wirio pings o wahanol leoedd i'ch gweinyddion. Fel hyn gallwch weld y rhanbarthau sydd agosaf at y pwyntiau CDN a ffurfweddu GeoDNS yn fwy cywir
Yn dibynnu ar y tasgau, bydd yn ddefnyddiol mireinio Nginx ar gyfer gofynion caching penodol a chan ystyried y llwyth ar y gweinydd. Roedd yr erthyglau am storfa Nginx wedi fy helpu llawer yn hyn o beth - yma a chyflymu gwaith o dan lwythi trwm: yma ΠΈ yma