ستاسو د CDN جوړول او تنظیم کول

د منځپانګې رسولو شبکې (CDNs) په ویب پاڼو او غوښتنلیکونو کې په عمده توګه د جامد عناصرو بارولو چټکولو لپاره کارول کیږي. دا په CDN سرورونو کې د فایلونو کیچ کولو له امله پیښیږي چې په مختلف جغرافیایی سیمو کې موقعیت لري. د CDN له لارې د معلوماتو غوښتنه کولو سره، کاروونکي دا د نږدې سرور څخه ترلاسه کوي.

د ټولو مینځپانګو رسولو شبکو د عملیاتو او فعالیت اصول نږدې ورته دي. د فایل ډاونلوډ کولو غوښتنه ترلاسه کولو سره ، د CDN سرور دا یو ځل له اصلي سرور څخه اخلي او کارونکي ته یې ورکوي ، په ورته وخت کې دا د ټاکلې مودې لپاره کیش کوي. ټولې راتلونکي غوښتنې د کیچ څخه ځواب شوي. ټول CDNs د فایلونو پریلوډ کولو ، کیچ پاکولو ، د پای نیټه ټاکلو او نور ډیر څه اختیارونه لري.

دا پیښیږي چې د یو یا بل دلیل لپاره ، تاسو اړتیا لرئ د خپل مینځپانګې تحویلي شبکه تنظیم کړئ ، او بیا - اجازه راکړئ د راتلونکي بایسکل راټولولو لارښوونې زموږ سره مرسته وکړي.

ستاسو د CDN جوړول او تنظیم کول
سرچینه: انفوګرافیک ویکتور د pikisuperstar - www.freepik.com لخوا رامینځته شوی

کله چې تاسو خپل CDN ته اړتیا لرئ

هغه قضیو ته پام وکړئ چیرې چې ستاسو د خپل CDN چلول معنی لري:

  • کله چې تاسو غواړئ پیسې خوندي کړئ، او د چلولو لګښتونه حتی کله چې د ارزانه CDNs کارولو په څیر BunnyCDN په میاشت کې څو سوه ډالرو ته رسیږي
  • که موږ غواړو د سرور او چینل ګاونډیانو پرته دایمي زیرمه یا کیچ ترلاسه کړو
  • د CDN خدمتونه په هغه سیمه کې شتون نلري چې تاسو ورته اړتیا لرئ
  • کوم ځانګړي مینځپانګې تحویلي ترتیبات اړین دي
  • موږ غواړو د تولید سرور کاروونکو ته نږدې کولو سره د متحرک مینځپانګې تحویل ګړندی کړو
  • داسې اندیښنه شتون لري چې د دریمې ډلې CDN خدمت ممکن په غیرقانوني ډول د کارونکي چلند په اړه معلومات راټول کړي یا وکاروي (د هیلو غیر GDPR سره مطابقت لرونکي خدمتونه) یا په نورو غیرقانوني فعالیتونو کې ښکیل وي

په ډیری نورو قضیو کې ، دا د موجوده چمتو شوي حلونو کارولو لپاره خورا مناسب دی.

تاسو د پیل کولو لپاره څه ته اړتیا لرئ

دا په زړه پورې ده که تاسو خپل خودمختاره سیسټم (AS) ولرئ. د دې سره تاسو کولی شئ ورته IP څو سرورونو ته وټاکئ او د دې لارښوونې سره سم د شبکې په کچه، نږدې کاروونکو ته مستقیم. دا د ویلو وړ ده چې حتی د /24 پته بلاک سره دا ممکنه ده چې د مینځپانګې تحویلي شبکه رامینځته کړئ. د سرور ځینې چمتو کونکي تاسو ته اجازه درکوي چې د دوی لپاره په ټولو سیمو کې د کارولو لپاره اعلان وکړئ.

که تاسو د IP پتې د بلاک څخه خوشحاله مالک نه یاست، نو د ساده CDN چلولو لپاره تاسو اړتیا لرئ:

  • د ډومین نوم یا فرعي ډومین
  • لږترلږه دوه سرورونه په مختلفو سیمو کې. سرور یا هم وقف یا مجازی کیدی شي
  • geoDNS وسیله. د دې سره، کاروونکي، د ډومین په نښه کولو سره به نږدې سرور ته واستول شي

یو ډومین راجستر کړئ او سرورونه ترتیب کړئ

د ډومین ثبتولو سره، هرڅه ساده دي - موږ په هر زون کې د هر راجستر کونکي سره راجستر کوو. تاسو کولی شئ د CDN لپاره فرعي ډومین هم وکاروئ، د بیلګې په توګه یو څه cdn.domainname.com. په حقیقت کې، زموږ په مثال کې، موږ به دا کار وکړو.

لکه څنګه چې د سرورونو امر کولو لپاره، دوی باید په هغو سیمو او هیوادونو کې کرایه شي چیرې چې ستاسو د کاروونکي لیدونکي موقعیت لري. که پروژه انټرکانټینینټل وي ، نو دا د کوربه توب چمتو کونکي غوره کول اسانه دي چې په ټوله نړۍ کې په یوځل کې سرورونه وړاندیز کوي. بېلګې: OVH, لیز ویب и 100TB - د وقف شوي سرورونو لپاره، لیکوال и ډیجیټل اوسیدونکی - د مجازی بادل لپاره *.

زموږ د شخصي CDN لپاره، موږ به په مختلفو براعظمونو کې د 3 مجازی سرورونو امر وکړو. په لیکوال لپاره په سرور کې $5/mo موږ به ترلاسه کړو 25GB SSD ځایونه او د ټرافیک 1TB. کله چې نصب کړئ، وروستی Debian غوره کړئ. زموږ سرورونه:

ستاسو د CDN جوړول او تنظیم کول فرانکفورت, ip: 199.247.18.199

ستاسو د CDN جوړول او تنظیم کول شیکاګو, ip: 149.28.121.123

ستاسو د CDN جوړول او تنظیم کول Сингапур, ip: 157.230.240.216

* Vultr او DigitalOcean هغو کاروونکو ته د $100 کریډیټ ژمنه کوي چې د تادیې میتود اضافه کولو سمدلاسه وروسته په مقاله کې د لینکونو له لارې راجستر کوي. لیکوال هم له دې څخه یو کوچنی ستاینه ترلاسه کوي، کوم چې اوس د هغه لپاره خورا مهم دی. مهرباني وکړئ پوه شئ.

د geoDNS تنظیم کول

د دې لپاره چې کاروونکي مطلوب (نږدې) سرور ته لارښود شي کله چې ډومین یا CDN فرعي ډومین ته لاسرسی ومومي، موږ د جیو ډی این ایس فعالیت سره د DNS سرور ته اړتیا لرو.

د geoDNS اصول او عملیات په لاندې ډول دي:

  1. د پیرودونکي IP مشخص کوي چې د DNS غوښتنه یې لیږلې ، یا د تکراري DNS سرور IP چې د پیرودونکي غوښتنې پروسس کولو پرمهال کارول کیږي. دا ډول تکراري سرورونه معمولا د چمتو کونکو DNS-s دي.
  2. د پیرودونکي IP خپل هیواد یا سیمه پیژني. د دې لپاره، GeoIP ډیټابیسونه کارول کیږي، چې نن ورځ ډیری شتون لري. ځینې ​​​​ښه دي وړیا انتخابونه.
  3. د پیرودونکي موقعیت پورې اړه لري، هغه ته د نږدې CDN سرور IP پته ورکوي.

د geoDNS فعالیت سره DNS سرور کیدی شي خپل ځان سره راټول کړئ، مګر دا غوره ده چې په ټوله نړۍ کې د DNS سرورونو شبکې سره چمتو شوي حلونه وکاروئ او هر ډول له بکس څخه:

  • د ‏‎SlouDNS от $9.95/moد GeoDNS تعرفه، په ډیفالټ کې یو د DNS ناکامۍ شتون لري
  • زیلور от $25/moد DNS ناکامۍ فعاله شوې
  • د ایمیزون لاره 53 от $35/mo د خالص 50M جیو غوښتنو لپاره. د DNS ناکامۍ په جلا توګه بیل کیږي
  • DNS اسانه شوی от $125/mo، د DNS 10 ناکامۍ شتون لري
  • Cloudflare، د "جیو سټیرینګ" خصوصیت د تصدۍ پلانونو کې شتون لري

کله چې د geoDNS امر کول، تاسو باید په تعرفه کې شامل شوي غوښتنو شمیر ته پام وکړئ او په پام کې ونیسئ چې ډومین ته د غوښتنو حقیقي شمیره د څو څو ځله تمه کیدی شي. ملیونونه مکړه ، سکینرونه ، سپیمرونه او نور بد روحونه نه ستړي کیدونکي کار کوي.

نږدې ټول DNS خدمات په نرخ کې شامل دي د CDN - DNS ناکامۍ رامینځته کولو لپاره لازمي خدمت. د دې په مرسته ، تاسو کولی شئ د خپلو سرورونو عملیاتو نظارت تنظیم کړئ او که چیرې د ژوند نښې شتون ونلري ، په اتوماتيک ډول د DNS ځوابونو کې د غیر کار کونکي سرور پته د بیک اپ سره بدل کړئ.

زموږ د CDN جوړولو لپاره، موږ به وکاروو کلود، GeoDNS تعرفه.

راځئ چې ستاسو په شخصي حساب کې یو نوی DNS زون اضافه کړو، ستاسو ډومین مشخص کړئ. که موږ په فرعي ډومین کې CDN جوړوو، او اصلي ډومین لا دمخه کارول کیږي، نو د زون اضافه کولو وروسته سمدلاسه، د موجوده کاري DNS ریکارډونو اضافه کول مه هیروئ. بل ګام د CDN ډومین / فرعي ډومین لپاره څو A-ریکارډونه رامینځته کول دي، چې هر یو به په هغه سیمه کې پلي شي چې موږ یې مشخص کړي. تاسو کولی شئ براعظمونه یا هیوادونه د سیمو په توګه مشخص کړئ، فرعي سیمې د متحده ایالاتو او کاناډا لپاره شتون لري.

زموږ په قضیه کې، CDN به په فرعي ډومین کې پورته شي cdn.sayt.in. د زون په اضافه کولو سره sayt.in، د فرعي ډومین لپاره لومړی A-ریکارډ رامینځته کړئ او ټوله شمالي امریکا په شیکاګو کې سرور ته په ګوته کړئ:

ستاسو د CDN جوړول او تنظیم کول
راځئ چې د نورو سیمو لپاره عمل تکرار کړو، د ډیفالټ سیمو لپاره د ننوتلو رامینځته کول مه هیروئ. دلته هغه څه دي چې تاسو یې په پای کې ترلاسه کوئ:

ستاسو د CDN جوړول او تنظیم کول

په سکرین شاټ کې وروستی ډیفالټ ننوتل پدې معنی دي چې ټولې نامعلومې سیمې (او دا اروپا ، افریقا ، د سپوږمکۍ انټرنیټ کارونکي او نور دي) به په فرانکفورت کې سرور ته واستول شي.

دا د DNS بنسټیز تنظیم بشپړوي. دا پاتې ده چې د ډومین راجستر کونکي ویب پاڼې ته لاړ شئ او اوسنی ډومین NSs د CloudDNS لخوا صادر شوي سره بدل کړئ. او پداسې حال کې چې NSs به نوي شي، موږ به سرورونه چمتو کړو.

د SSL سندونو نصب کول

زموږ CDN به په HTTPS کې کار وکړي، نو که تاسو دمخه د ډومین یا فرعي ډومین لپاره د SSL سندونه لرئ، دوی ټولو سرورونو ته پورته کړئ، د بیلګې په توګه، ډایرکټر ته /etc/ssl/yourdomain/

که تاسو سندونه نلرئ، تاسو کولی شئ د لیټ انکریپټ څخه وړیا ترلاسه کړئ. د دې لپاره کامل د ACME شیل سکریپټ. پیرودونکی د تنظیم کولو لپاره اسانه او اسانه دی ، او خورا مهم ، دا تاسو ته اجازه درکوي د DNS لخوا د CloudDNS API له لارې ډومین / فرعي ډومین تایید کړئ.

موږ به acme.sh یوازې په یو سرور کې نصب کړو - اروپایی 199.247.18.199، له کوم څخه چې سندونه به نورو ټولو ته کاپي شي. د نصبولو لپاره، چلول:

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

د سکریپټ نصبولو په جریان کې، د CRON دنده به زموږ د ګډون پرته د سندونو نور نوي کولو لپاره رامینځته شي.

کله چې یو سند صادر کړئ ، ډومین به د API په کارولو سره د DNS په کارولو سره چیک شي ، نو د پلورونکي API مینو کې د CloudDNS شخصي حساب کې ، تاسو اړتیا لرئ د نوي کارونکي API رامینځته کړئ او د دې لپاره پاسورډ تنظیم کړئ. د پاسورډ سره پایله لرونکی auth-id به په فایل کې ولیکل شي ~/.acme.sh/dnsapi/dns_cloudns.sh (د فایل سره مغشوش نه شئ dns_clouddns.sh). دلته هغه لینونه دي چې باید غیر تبصره او ترمیم شي:

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

اوس موږ به د SSL سند غوښتنه وکړو cdn.sayt.in

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

په اختیارونو کې ، د راتلونکي لپاره ، موږ په راتلونکي کې د سند اعتبار دورې هر نوي کولو وروسته د ویب سرور ترتیب په اوتومات ډول بیا پورته کولو لپاره قومانده مشخص کړې.

د سند ترلاسه کولو ټوله پروسه ممکن 2 دقیقې وخت ونیسي ، مداخله مه کوئ. که د ډومین تصدیق کولو تېروتنه رامنځته شي، نو بیا د قوماندې چلولو هڅه وکړئ. په پای کې به موږ وګورو چې سندونه چیرته ډاونلوډ شوي:

ستاسو د CDN جوړول او تنظیم کول

راځئ چې دا لارې په یاد ولرو؛ دوی به مشخص شي کله چې نورو سرورونو ته سند کاپي کول ، او همدارنګه د ویب سرور تنظیماتو کې. موږ د نګینکس تشکیلاتو بیا پورته کولو غلطۍ ته پام نه کوو - په بشپړ ډول ترتیب شوي سرور کې ، دا به د سندونو تازه کولو پرمهال څرګند نشي.

ټول هغه څه چې موږ د SSL لپاره پریښودل دا دي چې ترلاسه شوي سند دوه نورو سرورونو ته کاپي کړو پداسې حال کې چې فایلونو ته لاره ساتو. راځئ چې په هر یو کې ورته لارښودونه جوړ کړو او کاپي یې جوړه کړو:

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/

په منظم ډول د سندونو تازه کولو لپاره ، د کمانډ سره په دواړو سرورونو کې د CRON ورځنۍ دنده رامینځته کړئ:

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

په دې حالت کې، د ریموټ سرچینې سرور ته لاسرسی باید تنظیم شي د کیلي په واسطه، i.e. پرته له دې چې پاسورډ داخل کړئ. دا کول مه هیروئ.

د Nginx نصب او تنظیم کول

د جامد مینځپانګې خدمت کولو لپاره ، موږ به د کیشینګ پراکسي سرور په توګه تنظیم شوي نګینکس وکاروو. د بسته بندۍ لیستونه تازه کړئ او په ټولو دریو سرورونو کې یې نصب کړئ:

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

د ډیفالټ پرځای ، موږ د لاندې سپیلر څخه تشکیل کاروو:
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;
    }
  }
}

په ترتیب کې موږ ترمیم کوو:

  • max_size - د زیرمې اندازه، د شته ډیسک ځای څخه زیات نه وي
  • غیر فعال - د زیرمه شوي ډیټا ذخیره کولو وخت چې هیڅوک ورته لاسرسی نلري
  • ssl_certificate и ssl_certificate_key - د SSL سند او کلیدي فایلونو ته لارې
  • proxy_cache_valid - د زیرمه شوي معلوماتو ذخیره کولو وخت
  • پراکسي_ پاس - د اصلي سرور پته چې له هغه څخه CDN به د کیچ کولو لپاره د فایلونو غوښتنه وکړي. زموږ په مثال کې، دا sayt.in

لکه څنګه چې تاسو لیدلی شئ، هرڅه ساده دي. یوازینۍ ستونزه ممکن د لارښودونو ورته والي له امله د کیچ کولو وخت تنظیم کولو کې رامینځته شي غیر فعال и proxy_cache_valid. راځئ چې دوی زموږ د مثال په کارولو سره وګورو. دا هغه څه دي کله چې پیښیږي غیر فعال = 7d и proxy_cache_valid 90d:

  • که غوښتنه په 7 ورځو کې تکرار نشي ، نو بیا به ډاټا د دې مودې وروسته له کیچ څخه حذف شي
  • که غوښتنه لږترلږه په هرو 7 ورځو کې یو ځل تکرار شي ، نو په کیچ کې ډاټا به د 90 ورځو وروسته متروک وګڼل شي او نګینکس به دا د بلې غوښتنې سره تازه کړي ، دا به له اصلي سرور څخه واخلي.

د ترمیم لپاره پای ته ورسید nginx.conf، ترتیب بیا پورته کړئ:

root@cdn:~# service nginx reload

زموږ CDN چمتو دی. د $15/mo لپاره. موږ په دریو براعظمونو کې د شتون نقطې او 3 TB ترافیک ترلاسه کړل: په هر ځای کې 1 TB.

د CDN کار چک کول

راځئ چې د مختلف جغرافيائی ځایونو څخه زموږ CDN ته پینګونه وګورو. د دې لپاره هر ډول پینګ خدمتونه مناسب دي.

د پیل ټکی
کوربه
IP
اوسط وخت، ms

جرمني برلین
cdn.sayt.in
199.247.18.199
9.6

هالنډ ، امستردام
cdn.sayt.in
199.247.18.199
10.1

فرانسه پاریس
cdn.sayt.in
199.247.18.199
16.3

انګلستان، لندن
cdn.sayt.in
199.247.18.199
14.9

کاناډا، ټورنټو
cdn.sayt.in
149.28.121.123
16.2

امریکا، سان فرانسیسکو
cdn.sayt.in
149.28.121.123
52.7

امریکا، دالاس
cdn.sayt.in
149.28.121.123
23.1

امریکا، شیکاګو
cdn.sayt.in
149.28.121.123
2.6

امریکا، نیویارک
cdn.sayt.in
149.28.121.123
19.8

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

جاپان ټوکیو
cdn.sayt.in
157.230.240.216
74.8

استرالیا، سیډني
cdn.sayt.in
157.230.240.216
95.9

پایلې ښې دي. اوس راځئ چې د اصلي سایټ په ریښه کې د ازموینې عکس ځای په ځای کړو test.jpg او د CDN له لارې یې د ډاونلوډ سرعت وګورئ. ویل کیږي - جوړ شوی. مواد په چټکۍ سره لیږدول کیږي.

راځئ چې یو کوچنی سکریپټ ولیکئ که چیرې موږ غواړو د 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

د ټولې زیرمې حذف کولو لپاره ، یوازې دا چل کړئ ، یو جلا فایل پدې ډول پاک کیدی شي:

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

د پایلو پرځای

په نهایت کې ، زه غواړم یو څه ګټور لارښوونې وړاندې کړم ترڅو سمدلاسه په هغه ریک باندې ګام پورته کړم چې زما سر یې په وخت کې ټپي کړی و:

  • د CDN د غلطۍ زغم زیاتولو لپاره، دا سپارښتنه کیږي چې د DNS ناکامۍ تنظیم کړئ، کوم چې د سرور د خرابیدو په صورت کې د A ریکارډ په چټکۍ سره بدلولو کې مرسته کوي. دا د ډومین د کنټرول پینل DNS ریکارډونو کې ترسره کیږي.
  • د پراخ جغرافیایي پوښښ سره سایټونه بې له شکه د CDNs لوی شمیر ته اړتیا لري، مګر اجازه راکړئ چې تعصب نه وي. ډیری احتمال چې کاروونکي به د تادیه شوي CDN په پرتله د پام وړ توپیر ونه ګوري که تاسو په 6-7 ځایونو کې سرورونه ځای په ځای کړئ: اروپا، شمالي امریکا (ختیځ)، شمالي امریکا (لویدیځ)، سنګاپور، استرالیا، هانګ کانګ یا جاپان
  • ځینې ​​​​وختونه کوربه د CDN موخو لپاره د کرایه شوي سرورونو کارولو ته اجازه نه ورکوي. له همدې امله، که تاسو ناڅاپه پریکړه وکړئ چې د خدمت په توګه د مینځپانګې تحویلي شبکه ځای په ځای کړئ، مخکې له مخکې د ځانګړي کوربه چمتو کونکي قواعد لوستل مه هیروئ.
  • سپړنه د اوبو لاندې مخابراتي نقشهد دې لپاره چې براعظمونه څنګه وصل شي او دا په پام کې ونیسئ کله چې د مینځپانګې تحویلي شبکې رامینځته کړئ
  • د چک کولو هڅه وکړئ د مختلفو ځایونو څخه پینګونه ستاسو سرورونو ته. پدې توګه تاسو کولی شئ د CDN پوائنټونو ته نږدې سیمې وګورئ او GeoDNS په سمه توګه تنظیم کړئ
  • د دندو پورې اړه لري، دا به ګټور وي چې د ځانګړو کیشینګ اړتیاو لپاره نګینکس دودیز کړئ او په سرور کې بار په پام کې ونیسئ. د نګینکس کیچ په اړه مقالې زما سره پدې کې ډیره مرسته وکړه - دلته او د درنو بارونو لاندې د کار سرعت: دلته и دلته

سرچینه: www.habr.com