تجربه من از راه اندازی CDN در آروان کلود

سلام
در این نوشته قصد دارم به صورت کامل از راه اندازی و تنظیمات CDN سایت تجهیزات آشپزخانه آریاتوس در CDN آروان کلود بنویسم.

تصویر راست (بدون CDN ) | تصویر چپ ( با CDN )
تصویر راست (بدون CDN ) | تصویر چپ ( با CDN )


برخی کار CDN را با سرور اصلی اشتباه میگیرن پس شاید بهتر باشه اول یکم از CDN بدونیم.

سی دی ان CDN چیست:

سی دی ان CDN مخفف کلمه "Content delivery network" به معنی شبکه توزیع محتوا می باشد.
به صورت کامل تر میشه اینجوری گفت، تحویل محتوای آنلاین از نزدیک‌ترین نقطه جغرافیایی به دست کاربران.

این کار باعث میشه که وب سایت و یا هر گونه محتوای آنلاین با سرعت و کیفیت بسیار بالاتری برای کاربران باز بشه و تجربه کاربری خیلی بهتری ارائه میشود.

این سرویس به این صورت عمل میکنه که بعد از اینکه یک کاربر برای اولین بار سایت شما را باز کرد، CDN اطلاعات را (مانند فایل کدهای CSS، فایل کدهای جاوااسکریپت، فایل‌های مولتی مدیا و …) از سرور سایت شما کپی ( Pull ) و بر روی nodes یا سرورهای مختلف خود که در سراسر جهان دارد توزیع میکند. حالا از این به بعد وقتی کاربری می‌خواهد سایت شما را ببیند، اطلاعات اول از سرور های CDN که در نزدیک‌ترین نقطه به آن کاربر هست، ارسال میشود. طبیعتا چون این اطلاعات در سرورهای CDN قبلاً ثبت (Cache) شده‌اند و نیاز به پروسه خاصی نیست سرعت تبادل اطلاعات تغییر چشم گیری می‌کند و طبیعتا بار اصلی به روی سرور اصلی کمتر می شود.

سایت های زیادی در دنیا هستند که خدمات CDN ارايه میدهند. چندتا از معروفترین های اونها اینا هستند:


MaxCDN
KeyCDN
Cloudflare
CloudFront
StackPath
Akamai


این سایت ها همه خدمات CDN و توزیع محتوا رو در همه نقاط دنیا به خوبی انجام میدن اما متاسفانه هیچ کدوم از این سایت ها هیچ سروری رو برای توزیع محتوای خود در ایران ندارند.

این یعنی کاربران ایرانی برای دریافت اطلاعات سایت شما باید حتما به سمت سرورهایی بروند که فاصله مکانی زیادی دارند و عملا مهمترین ویژگی CDN که ارسال اطلاعات کش شده از نزدیک ترین نقطه به کاربر هست را از دست می دهد.

آروان کلود، CDN ایرانی:

آروان کلود (آروان به معنی "ایران" ) اولین CDN یا شبکه توزیع محتوا ایرانی هست که تعداد زیادی از سرورهای اون در داخل ایران هست و تقریبا در همه ISP های داخل ایران سرور دارد.

از این بابت برای مدیران سایتهای ایرانی خیلی میتونه گزینه خوبی باشه.

در این نوشته قصد دارم سایت فروشگاهی آریاتوس که با ووکامرس طراحی شده و سرور اصلی اون روی LeaseWeb آلمان هست رو روی CDN های‌ آروان کلود راه اندازی کنم.

ساخت اکانت:
خب فکر میکنم برم سر ثبت نام و راه اندازی CDN.
اول از همه به سایت آروان کلود رفتم و یک اکانت ساختم و فعال سازی انجام دادم.

https://www.arvancloud.com/fa

بعد از ساخت اکانت در داخل پنل "آروان" بر روی گزینه "وب سایت جدید" کلیک کردم.

اضافه کردن وب سایت به آروان کلود
اضافه کردن وب سایت به آروان کلود


مرحله بعدی انتخاب پلن در "آروان" هست که پیشنهاد من انتخاب پلن پیشرفته است.
( در حال حاظر ماهیانه 373 هزار تومان ) برای یک وب سایت فروشگاهی متوسط رو به بالا گزینه خیلی خوبیه.

(در ضمن پلن رایگان آروان کلود فقط خدمات DNS Server ارایه میدهند و خدمات CDN ندارد.)

انتخاب پلن آروان کلود
انتخاب پلن آروان کلود


در مرحله بعدی سرور اصلی شما برای ارتباط با سرور های CDN به صورت اتومات شناسایی میشه. به عنوان مثال آی پی سرور اصلی من در سرور لیس وب رو شناسایی کرد.
(اینجا میشه برای تنظیمات بیشتر و لود بالانس کردن چندین سرور رو معرفی کنین که البته بعدا هم میتونین در پنل تنظیمات رو انجام بدین.)

شناسایی و انتخاب سرور اصلی ارتباط با CDN
شناسایی و انتخاب سرور اصلی ارتباط با CDN


مرحله بعدی مربوط میشه به تنظیمات DNS که یکی از مهمترین بخش هایی هست که باید با دقت انجام بدین. یکم جلوتر دربخش تنظیمات DNS کامل توضیح میدم این قسمتو.

برای اولین بار که راه اندازی میکنین صفحه ای شبیه زیر رو میبینین که اطلاعاتی در مورد DNS شما نمایش داده میشه.

مرحله 4: تنظیمات DNS
مرحله 4: تنظیمات DNS


بعد از اینکه مرحله پرداخت انجام شد وارد صفحه پرداخت شدم که شبیه صفحه زیر هست.

مرحله 5: پرداخت و تغییر NS ها
مرحله 5: پرداخت و تغییر NS ها


بعد از پرداخت وارد صفحه پیشخوان آروان کلود میشین که به صورت کامل قسمت براتون توضیح میدم.


معرفی محیط مدیریت CDN آروان کلود:

خب. به ترتیب در محیط مدیریت بخش های زیر رو میبینید:

پیشخوان
سرورهای اصلی
تنظیمات DNS
تنظیمات CDN
امنیت ابری
شتاب دهنده
گزارشات

هر کدوم از این بخش ها تنظیماتی داره که حتما باید دقیق و با حوصله انجام بشه.
همه این بخش ها رو با دقت پیش میریم.

پیشخوان:
صفحه پیشخوان که به صورت کلی نمایی از ترافیک و گزارشات کاربران و درخواستهای صرفه جویی شده را نمایش میدهد:

صفحه پیشخوان AriaToos بعد از یک هفته استفاده از CDN آروان
صفحه پیشخوان AriaToos بعد از یک هفته استفاده از CDN آروان


صفحه سرورهای اصلی:

تنظیمات بخش "سرورهای اصلی" به شما اجازه میده که اگر چند سرور مختلف دارین، به سرورهای CDN آروان معرفی کنین که در صورتی که در هنگام Pull کردن اطلاعات، بار روی یکی از سرور های شما زیاد شد به سرور دوم شما مراجعه شود.
(مفهوم لود بالانسینگ و کلاستر )
من برای سایت اریاتوس این تنظیمات رو انجام ندادم اما برای آشنایی بیشتر اینجا از تنظیماتش میذارم شاید بتونه کمکی کنه.

تعریف کلاستر جدید
تعریف کلاستر جدید

حالا میشه در اون کلاستر هم آی پی سرور دوم رو معرفی کنین.

تعریف سرور جدید در کلاستر رای وب سایت آریاتوس من بخش سرور های اصلی رو تغییری ندادم و به صورت پیشفرض قرار دادم.
تعریف سرور جدید در کلاستر رای وب سایت آریاتوس من بخش سرور های اصلی رو تغییری ندادم و به صورت پیشفرض قرار دادم.


تنظیمات DNS:

برای اینکه بتونیم تنظیمات DNS را درست انجام بدیم باید مفهوم DNS و پارامتر های مربوط به اون رو تا حدودی اشنا باشیم

آشنایی خلاصه با DNS:

دی ان اس DNS مخفف کلمه Domain Name Service هست. سرویسی که باعث میشه شما به جای وارد کردن آی پی هر سایت نام اون رو در مرورگر بزنین.
 A Record DNS
A Record DNS


وقتی در مرورگرت تایپ میکنی ariatoos.com ، مرورگرتون یک درخواست (query) به DNS سرور ها ارسال میکنه، مبنی بر اینکه آی پی ariatoos.com را پیدا کنید. A Query وظیفه داره پاسخ این رو پیدا کنه. و میتونه جواب این سوال رو از DNS سرور بپرسه.

https://www.verisign.com/en_US/website-presence/online/how-dns-works/index.xhtml
https://www.verisign.com/en_US/website-presence/online/how-dns-works/index.xhtml


انواع مختلفی از DNS Record ها وجود داره که هر کدومشون کاری رو انجام میدن.
مثلا رکورد A به آی پی دامنه مربوطه رو اشاره میکند.

یا رکورد MX مربوط میشه Mail Exchange ها که به سرویس ایمیلتون اشاره میکنه.

و CNAME Record شبیه رکورد A عمل میکنه با این فرق که ادرس دامنه مربوطه را به دامنه دیگه ای اشاره میکنه

انواع مختلف رکورد ها رو تو عکس زیر میتونین ببینین:

انواع مختلف DNS Record
انواع مختلف DNS Record


خب، بذاریم ببینیم وقتی میخواهیم CDN رو فعال کنیم چه کار باید کرد.

برای اتصال سرور اصلی به CDN چندین راه وجود دارد. و میشود از یکی از دو روش زیر استفاده کنیم:

1: تعریف CNAME
در DNS Server دامنه، یک CNAME Record تعریف کنیم و در اونجا به CNAME Record آروان کلود اشاره میکنیم.

مثلا تعریف رکورد CNAME در DNS Server صرفا جهت نمایش است و برای  آریاتوس از روش 2 تغییر ns ها استفاده کردم
مثلا تعریف رکورد CNAME در DNS Server صرفا جهت نمایش است و برای آریاتوس از روش 2 تغییر ns ها استفاده کردم


2 یا تغییر NS Record

در پنل مدیریتی دامنه، یک NS Record تعریف میکنیم و در اونجا رو به NS Record آروان کلود اشاره میکنیم

خب من در اینجا برای دامنه آریاتوس وارد پنل دامنه خودم شدم ( NAME .com ) و رکورد های NS را به آروان کلود تغییر دادم.در سیستم آروان کلود، برای اینکه بتونین از خدمات DNS Server آروان کلود استفاده کنید حالت دوم یعنی تغییر NS Record رو پیشنهاد میکنم،

 قطعا نمای ظاهری این برای هر محیط مدیریت دامنه دیگه ای میتونه متفاوت باشه. تغییر NS رکورد
قطعا نمای ظاهری این برای هر محیط مدیریت دامنه دیگه ای میتونه متفاوت باشه. تغییر NS رکورد


نکته خیلی خیلی مهم

وقتی NS Record های یک دامنه رو تغییر میدین، یعنی DNS Server شما به جایی که NS رکورد اشاره میکند تغییر پیدا کرده است، یعنی وقتی NS رکورد های آروان را برای دامنه خودتون ست میکنین، از این به بعد آروان کلود dns server شماست.

پس حتما باید همه Record Zone های دیگه ای که قبلا در DNS سرور قبلی خود ست کردین را به DNS Server آروان کلود خود منتقل کنید.

انتقال DNS Server

برای نمونه تنظیمات DNS برای آریاتوس را در نظر بگیرید:

رکورد هایی که از قبل در DNS Server دامنه ariatoos.com ثبت کرده بودم را میتونین تو عکس زیر ببینید.

عکس از محیط تنظیمات DNS سی پنل دامنه آریاتوس AriaToos DNS Recordu
عکس از محیط تنظیمات DNS سی پنل دامنه آریاتوس AriaToos DNS Recordu


حالا با تغییر NS ها و تغییر DNS Server به آروان کلود باید اونها رو به آروان کلود منتقل کنم.

مثلا برای اریاتوس zone فایل های MX Record و CNAME و TXT های مختلفی داشتم که به اینجا منتقل کردم. طبیعتا اگر این کارو نمیکردم ایمیل های شرکت رو که از طریق MX به mailgun اشاره شده بود رو از دست میدادم

انتقال تمام رکورد های DNS Server قبلی آریاتوس به پنل DNS Server آروان:

عکس از محیط مدیریت DNS Server آروان
عکس از محیط مدیریت DNS Server آروان


بعد از تغییر NS ها در صورتی که دامنه شما از TLD های بین المللی باشد، مثل .com .net .me و ... بین چند دقیقه و تا حداکثر 3 ساعت تغییرات انجام می شود.

ولی دامنه های .ir متاسفانه حدود 24 ساعت زمان میبره .

برای اینکه چک کنین که تغییرات DNS کامل انجام شده یا نه از سایت های زیر میتونین استفاده کنید:

dnschecker.org

dnspropagation.net

nexcess.net

MXtoolbox.com

دقت کنید تا زمانی که رکورد NS های دامنه شما به NS های آروان کلود تغییر پیدا نکرده نماد ابر خودتون رو خاموش بذارین و بعد از اینکه مطمن شدید NS ها به NS آروان کلود تغییر کرده نماد ابر رو روشن کنید.

غیر فعال کردن ابر تا زمانی که NS ها تنظیم شود و وارد کردن NS Record های
غیر فعال کردن ابر تا زمانی که NS ها تنظیم شود و وارد کردن NS Record های

.

چک کردن تنظیمات:

آیا CDN آروان کلود روی سایت من فعال است؟

برای اینکه مطمن بشیم تنظیمات درست عمل کرده و آروان کلود روی سایت من عمل میکنه،

اول از همه به منو تنظیمات به بخش تنظیمات DNS میریم و مطمن میشیم که نماد ابر فعال باشد.

فعال سازی نماد ابر آروان کلود
فعال سازی نماد ابر آروان کلود


حالا وب سایت خود را باز کنید و در مرورگر راست کلیک و inspect element باز کنید و تب network رو باز کنید. در اینجا مطمن بشید ای پی شما، آی پی آروان کلود نمایش داده میشه

تست ارینکه آوان کلود فعال است
تست ارینکه آوان کلود فعال است

همچنین میتونین از سایت زیر برای این کار استفاده کنید و ببینید آی پی که به شما بر میگرده ای پی های آروان کلود باشه

check-host.net

درضمن هر زمان که خواستین میتونین نماد ابر رو فعال ( عبور دیتا از سرور های ابر آروان )

و غیر فعال ( عبور دیتا مستقیما از سرور اصلی شما ) نمایید. و نیاز به تغییرات دیگه ای نیست.

اضافه کردن سرور های CDN به white list

از اونجا که در هر درخواست جدید ، CDN های آروان کلود در حال pull کردن اطلاعات سایت شما و کش کردن اون ها هست، حتما توصیه میکنم برای اینکه فایروال سرور اصلی شما، اشتباها سرورهای ابری آروان رو بلاک نکنند، آی پی های CDN آروان رو به white list فایروال خود اضافه کنید.

لیست آی پی های CDN آروان را میتونید اینجا ببینید:

https://www.arvancloud.com/fa/ips

اگر شما دسترسی به فایروال سرورتون ندارین، از فردی که دسترسی سرور اصلی شما را دارد بخواهید این کار رو براتون انجام بده.

خب، تا اینجا نصب CDN با موفقیت انجام شده.

بذارین ببینیم داره در عمل چه اتفاقی میافته:

فلو عملکرد CDN
فلو عملکرد CDN

سناریو عکس بالا را در نظر بگیرین

1: کاربر هنگام بازدید سایت شما، درخواستی رو به فایل logo.png در که در دامنه images.mydomain.com می باشد ارسال میکند.

2: درخواست کاربر با توجه به NS Record یا CNAME مشخص شده در DNS Server دامنه به سمت CDN می رود.

3: سرور CDN در اولین درخواست، فایل logo.png را از سرور اصلی دریافت میکند (Pull می کند) و آن را در سرورهاش ذخیره میکند ( Catch می کند ).

4: اطلاعات کش شده در سرور CDN به کاربر نمایش داده می شود.

5: از این به بعد کاربرانی که درخواست فایل logo.png را داشته باشند، CDN مستقیما از سرورهای خودش به کاربر پاسخ میدهد و درخواست جدیدی رو به سرور اصلی ارسال نمیکند.
( صرفه جویی در ترافیک سرور اصلی شما و صرفه جویی در درخواست های ارسال شده به سرور شما )

برگردیم به پنل آروان کلود و تنظیمات CDN که شامل تنظیمات کش و SSL هست برویم.

تنظیمات CDN

تنظیمات Caching:

سطح عملیات کش رو در حالت حرفه ای قرار دادم. برای اطلاعات بیشتر در مورد کش Query String مقاله زیر رو بخونین:

Cache Based on Query String

تنظیمات HTTPS:

یکی از مهترین بخش هایی که ممکنه در تنظیمات CDN دچار خطا و اشتباه بشین، تنظیمات مربوط به HTTPS هست. برای همین توصیه میکنم این بخش رو با دقت بیشتری دنبال کنید.

در این بخش از تنظیمات آروان کلود سه نوع حالت در نظر گرفته شده است.

حالت خاموش
گواهینامه ابر آروان
گواهینامه کاربر

گواهینامه ssl ابرآروان:

این گواهینامه توسط وب سایت lets encrypt به صورت رایگان ساخته میشه و از دامنه های .IR نیز پشتیبانی میکند

در این حالت نیاز به تنظیم خاصی ندارد.

برای اینکه مطمن بشین HTTPS شما به درستی عمل میکند یا نه حتما از طریق وب سایت زیر تست کنید:

SSLSHOPPER.COM


گواهینامه کاربر:

در صورتی که شما قبلا HTTPS داشته اید، میتونین این گواهینامه رو در پنل آروان اضافه کنید که ارتباط بین سرور شما و سرور CDN نیز از همین بستر عبور کند

برای اینکار باید 2 فایل Private key) .key) و Certificate file) .crt) را داشته باشید.

فایل Private Key در سرور تولید شده است و .crt از شرکتی که SSL را خریداری کرده اید در اختیار شما قرارداده است و در سرور اصلی شما نیز موجود است.

اگر دسترسی به سرور و گواهی ssl خود ندارین،می تونین از مدیر سرور خودتون درخواست کنین که این فایل ها رو در اختیارتون بذاره.

و اگر خودتون مدیریتش رو به عهده دارین و یادتون رفته که فایل .key یا private key کجاست و سرورتون لینوکس هست معمولا در شاخه ای زیر پیدا میشه:

/home/user/ssl/key

و فایل .crt هم در ایمیل یا سایت شرکتی که از اون گواهینامه رو خرید کردین هست.

برای مثال ایمیلی که از شرکت COMODO برای من ارسال شده است:

نمونه ایمیل comodo که 4 فایل گواهینامه را برای من ایمیل کرده است root ca intermediate ca intermediate ca domain ariatoos_com.crt
نمونه ایمیل comodo که 4 فایل گواهینامه را برای من ایمیل کرده است root ca intermediate ca intermediate ca domain ariatoos_com.crt


برای اینکه خطای Chain Trust نداشته باشین باید حتما این 4 فایل .crt را در ویرایشگر متنی مثل nano و vim و ... باز کنید و به صورت یک فایل و به ترتیب زیر قرار دهید.

ترتیب قرارگیری فایل های .crt در یک فایل
ترتیب قرارگیری فایل های .crt در یک فایل

اگر این کار براتون سخته یا فقط به فایل .crt دامنه خودتون دسترسی دارین بهتره بیخیال مراحل بالا بشین و برین به سایت زیر و فقط فایل .crt دامنه خودتون رو اپلود کنید.

و بعد اینکه سایت trust chain اون را ساخت، اون رو دانلود کنید:

https://certificatechain.io


دانلود فایل Chain مرتب شده
دانلود فایل Chain مرتب شده


بعد از اینکه دو فایل .key و .crt اماده شد اون رو در بخش تنظیمات HTTPS پنل آروان آپلود کنید

تنظیمات HTTPS با موففیت انجام شد
تنظیمات HTTPS با موففیت انجام شد

خب، این هم انجام شد.


اگر دوست دارید در مورد کلید های عمومی و خصوصی Private Key و Public Key بیشتر بدونین حتما توصیه میکنم دو ویدیو زیر رو ببینید:


نکته اخر در مورد تنظیمات https دو موضوع زیر است:

اجبار به استفاده از HTTPS
ارتباط امن HTTPS با سرورهای اصلی

اجبار به استفاده از HTTPS

مکانیزم HSTS کمک میکند که وب سایت ها در برابر حملات protocol downgrade attacks و
cookie hijacking محافظت شوند.

فعال کردن گزینه اجبار به استفاده HTTPS یا HSTS همینطور یک درخواست را از سمت سرور شما، کمتر می کند به صورتی که HSTS اجازه می دهد که وب سرور مرورگر را وادار به استفاده از HTTPS کند.

در این شرایط هر کاربری که میخواهد سایت شما را باز کند، مرورگر به صورت اتوماتیک کاربر را به صفحه HTTPS انتقال می دهد. نکته مهم این قضیه این هست که درصورت فعال کردن این گزینه چنانچه بخواهید HTTPS را غیر فعال کنید، همه کاربرانی که تا قبل از این از سایت شما بازدید کرده اند تا 1 ماه همچنان به HTTPS منتقل می شوند.

ارتباط امن با سرور اصلی:

چنانچه https سمت سرور اصلی تنظیم و HSTS شما غیر فعال است >> در حالت خودکار قرار دهید

چنانچه https سمت سرور اصلی تنظیم و HSTS شما فعال است >> در حالت روشن قرار دهید


لیست قوانین خاص:

از اونجا که به صورت پیش فرض در تنظیمات همه فایل ها و صفحات در سرورهای CDN کش می شود، ممکنه بخواهید کاری کنید که صفحاتی یا پسوندهایی یا شاخه ای از سایت شما از این قانون مستثنی باشد. مثلا بگین فایل های .css کش نشوند. یا مثلا دایرکتوری wp-admin که مربوط به محیط مدیریت سایت هست کش نشود، که ایرادی در بخش مدیریت سایت پیش نیاید. این کار توسط بخش قوانین خاص شدنیه.

برای مثال برای وب سایت آریاتوس من این قوانین رو تعریف کردم

محیط مدیریت سایت کشینگ ندارد
محیط مدیریت سایت کشینگ ندارد


حالا بذارین سری بزنیم به Gtmetrix بزنیم و نتایج رو ببینیم.


https://gtmetrix.com/reports/ariatoos.com/xtTxKnE5
https://gtmetrix.com/reports/ariatoos.com/xtTxKnE5


با اینکه gtmetrix ملاک خیلی خوبی برای تست سرعت سایت برای کاربر ایرانی نیست (چون سروری در کشور ما برای تست بازدیدکننده ایرانی ندارد ) اما باز هم میشه تفاوت ایجاد شده رو دید.


امیدوارم این آموزش براتون مفید بوده باشه.

نظرراتتون خیلی برام مهمه. و برای اموزش های بعدی به من خیلی کمک میکنه.

شاد و موفق باشید