CDN
Мақалада Terraform көмегімен CDN-ресурсты және көздерді жасау мен баптау, көз shielding-ін қосу және SSL сертификатын қосу мысалы келтірілген.
Мысалдарда мыналар пайдаланылады:
-
Ресурстар (resource):
-
Дереккөздер (data source):
Параметрлердің толық сипаттамасы — Terraform провайдері құжаттамасында.
-
Қызметтің жұмыс істеу қағидаларын түсіну үшін VK Cloud CDN құжаттамасымен танысыңыз.
-
Квоталарды тексеріңіз. Таңдалған аймақта CDN-ресурс жасау үшін жеткілікті ресурстар бар екеніне көз жеткізіңіз. Әртүрлі аймақтар үшін әртүрлі квоталар бапталуы мүмкін.
Қажет болса, квоталарды арттырыңыз.
-
Егер әлі жасалмаған болса, Terraform орнатып, провайдерді баптаңыз.
Көздер топтары контентті орналастыру мен жеткізуге жауап беретін ішкі серверлерді басқарады. CDN-ресурс үшін топ жасау және оған кемінде бір көз қосу қажет. Сенімділік пен ақауға төзімділікті арттыру үшін топқа бірнеше көз қосыңыз.
cdn.tf Terraform конфигурация файлын жасаңыз және оған келесі мазмұнды қосыңыз:
# Create an origin groupresource "vkcs_cdn_origin_group" "origin_group" {name = "tfexample-origin-group"origins = [{source = "origin1.vk.com"},{source = "origin2.vk.com",backup = true},{source = "origin3.vk.com",enabled = false}]use_next = true}
Мұнда:
name— көздер тобының атауы. Міндетті параметр.origins— көздер тізімі.source— көздің IP мекенжайы немесе домені және пайдаланушы порты қолданылса, порты. Міндетті параметр.enabled— көздің қолжетімділігі:enabled = trueнемесе параметр көрсетілмеген — көз қосылған;enabled = false— көз өшірілген.
backup— резервтік көз түрінің белгісі (көз деңгейінде беріледі):backup = true— көз резервтік болып табылады;backup = falseнемесе параметр көрсетілмеген — көз белсенді болып табылады.
use_next— тізімдегі келесі көзді пайдалану (бүкіл топ деңгейінде беріледі):use_next = true— CDN-сервер контентті бірінші белсенді көзден сұрайды. Егер 4XX немесе 5XX диапазонындағы HTTP күйі қайтарылса, CDN-сервер тізім бойынша төмен жылжып, олардың түріне қарамастан қалған көздерден контент сұрайды.use_next = falseнемесе параметр көрсетілмеген — CDN-сервер алдымен белсенді көздердің бірінен контент сұрайды. Егер белсенді көзден 5XX диапазонындағы HTTP күйі қайтарылса, CDN-сервер резервтік көздердің бірінен контент сұрайды. Белсенді немесе резервтік көзден 4XX диапазонындағы HTTP күйі қайтарылса, CDN-сервер тұтынушыға қате қайтарады.
Көз shielding-і көзді жоғары жүктемелерден қорғауға мүмкіндік береді. Ол үшін precache сервері қолданылады: ол пайдаланушылардың барлық сұрауларын жинап, қажетті контент precache серверінің өз кэшінде болмаса, оларды көзге бір-бірден жібереді.
Егер shielding пайдалануды жоспарламасаңыз, SSL сертификатын қосуға өтіңіз.
CDN-ресурс конфигурациясына shielding қосу үшін қолжетімді precache серверлерінің тізімін алып, контент тұтынушыларына ең жақынын таңдаңыз.
-
shieldings.tfTerraform конфигурация файлын жасаңыз және оған келесі мазмұнды қосыңыз:data "vkcs_cdn_shielding_pops" "pops" {}output "shielding_locations" {value = data.vkcs_cdn_shielding_pops.pops.shielding_pops} -
Terraform конфигурация файлдарын бір директорияға орналастырыңыз:
vkcs_provider.tf;shieldings.tf.
-
Осы директорияға өтіңіз.
-
Өзгерістерді қолданыңыз:
terraform applyЖауапта қолжетімді precache серверлері туралы ақпарат қайтарылады.
Жауап мысалы:
shielding_locations = tolist([{"city" = "Moscow-Megafon""country" = "Russia""datacenter" = "mgf""id" = 138},])Мұнда:
city,country— precache серверінің қатысу нүктелері орналасқан қала мен ел.datacenter— precache сервері орналасқан ДЦ.id— қатысу нүктесінің идентификаторы.
-
Precache серверінің қатысу нүктесін таңдап, оның деректерін CDN-ресурс конфигурация файлына қосыңыз. Ол үшін
cdn.tfфайлын ашып, оған келесі мазмұнды қосыңыз:# Add shieldingdata "vkcs_cdn_shielding_pop" "pop" {city = "Moscow-Megafon"}
Контент HTTPS протоколы арқылы жеткізілген кезде SSL сертификаттары пайдаланылады. Сіз өз SSL сертификатыңызды қоса аласыз, тегін Let's Encrypt сертификатын пайдалана аласыз немесе SSL сертификатын мүлде қолданбауыңызға болады, бұл жағдайда контент HTTP протоколы арқылы жеткізіледі.
Егер Let's Encrypt сертификатын пайдалануды немесе SSL сертификатын мүлде қолданбауды жоспарласаңыз, CDN-ресурсты қосуға өтіңіз.
-
SSL сертификатыңыздың public бөлігі бар
certificate.pemжәне private бөлігі барprivate-key.keyфайлдарын ресурстар жасайтын директорияға орналастырыңыз. -
Файлдарда сертификаттың барлық жолдары бар екеніне көз жеткізіңіз.
-
cdn.tfфайлын ашып, оған келесі мазмұнды қосыңыз:# Add your own SSL-certificateresource "vkcs_cdn_ssl_certificate" "certificate" {name = "tfexample-ssl-certificate"certificate = file("${path.module}/certificate.pem")private_key = file("${path.module}/private-key.key")}Мұнда:
name— SSL сертификатының атауы.certificate— сертификаттың public бөлігін қамтитын файлға дейінгі жол. Сертификаттың public бөлігінің барлық жолдары файлда болуы керек.private_key— сертификаттың private бөлігін қамтитын файлға дейінгі жол. Сертификаттың private бөлігінің барлық жолдары файлда болуы керек.
Үш параметрдің бәрі де міндетті.
cdn.tf файлын ашып, оған келесі мазмұнды қосыңыз:
# Create a CDN resourceresource "vkcs_cdn_resource" "resource" {cname = cdn.example.comorigin_group = vkcs_cdn_origin_group.origin_group.idactive = trueoptions = {edge_cache_settings = {value = "10m"}forward_host_header = true}origin_protocol = "http, https"shielding = {enabled = truepop_id = data.vkcs_cdn_shielding_pop.pop.id}ssl_certificate = {type = "own"id = vkcs_cdn_ssl_certificate.certificate.id}}
Мұнда:
-
cname— осы доменге жүгінгенде контент CDN көмегімен жеткізілетін доменнің FQDN-ы. Міндетті параметр.FQDN-ге түбірлік домен атауын қоспаңыз:
cdn.example.comтүріндегі жазба рұқсат етіледі, алcdn.example.com.рұқсат етілмейді. CDN үшін қосымша домендер қосу үшін олардыsecondary_hostnamesпараметрінде көрсетіңіз. -
origin_group— CDN-ресурс үшін көздер тобының идентификаторы. Идентификаторды конфигурация файлында көрсетуге, дереккөзден немесе ресурстан алуға болады. Міндетті параметр. -
active— ресурстың қолжетімділігі:active = trueнемесе параметр көрсетілмеген — CDN-ресурсАктивенкүйіне өтеді, контент тұтынушыларға жеткізіледі;active = false— CDN-ресурсПриостановленкүйіне өтеді, контент тұтынушыларға жеткізілмейді.
-
options— CDN-ресурстың баптаулары. Барлық қолжетімді баптаулардың сипаттамасы VKCS-провайдері құжаттамасында келтірілген. -
origin_protocol— көзбен өзара әрекеттесу протоколы:"http"немесе параметр көрсетілмеген — көздегі контент тек HTTP (80 порт) арқылы қолжетімді немесе көз HTTPS-тен HTTP-ке қайта бағыттауды қолдайды."https"— көздегі контент тек HTTPS (443 порт) арқылы қолжетімді немесе көз HTTP-тен HTTPS-ке қайта бағыттауды қолдайды."http, https"— көздегі контент HTTP және HTTPS арқылы қолжетімді. Бұл жағдайда CDN-ресурстан көзге жіберілетін сұрауда соңғы пайдаланушы сұрауының протоколы сақталады. Бұл ретте CDN-ресурс кэшінде әр протокол үшін файлдың екі нұсқасы сақталады.
-
shielding— CDN-ресурс үшін көз shielding-ін қосу.-
enabled— shielding-ті қосу:true(қосылған) немесеfalse(өшірулі). -
pop_id— shielding қатысу нүктесінің идентификаторы. Бұл мысалда идентификаторvkcs_cdn_shielding_popдереккөзінен алынады. Оны конфигурацияда тікелей көрсетуге де болады. Мысалы:pop_id = 138.Егер көз shielding-ін қоспасаңыз, параметрлер блогын конфигурациядан алып тастаңыз.
-
-
ssl_certificate— HTTPS протоколы арқылы контент жеткізуге арналған SSL сертификаты:type— SSL сертификатының түрі. Қолжетімді мәндер:"not_used"— SSL сертификаты пайдаланылмайды."own"— пайдаланушы сертификаты қосылады."lets_encrypt"— тегін Let's Encrypt сертификаты қосылады. Сертификатты шығару үшін CDN-ресурс белсенді болуы керек (active = true). Сертификат CDN-ресурс жасалғаннан кейін, көз серверлері қолжетімді болғанда және жеке домендерге арналған CNAME жазбаларына қатысты DNS өзгерістері таралғаннан кейін жасалады. Әдетте бұл 30 минутқа дейін уақыт алады.
id— CDN-ресурсқа байланыстырылған SSL сертификатының идентификаторы. Егерtype = "own"болса, идентификатор көрсетілуі керек. Берілгенcdn.tfфайлында идентификатор бұрын қосылғанvkcs_cdn_ssl_certificateресурсынан алынады.
-
Terraform конфигурация файлдарын SSL сертификаты файлдарымен бірге бір директорияға орналастырыңыз:
vkcs_provider.tf;cdn.tf.
-
Осы директорияға өтіңіз.
-
Конфигурация файлдарының дұрыс екенін және қажетті өзгерістер бар екенін тексеріңіз:
terraform validate && terraform plan -
Өзгерістерді қолданыңыз:
terraform applyРастауды сұрағанда
yesенгізіңіз. -
Операцияның аяқталуын күтіңіз.
Ресурстардың сәтті жасалғанына көз жеткізіңіз:
- VK Cloud жеке кабинетіне өтіңіз.
- CDN → CDN-ресурсы бөліміне өтіңіз. CDN-ресурстың жасалғанына көз жеткізіңіз.
- CDN → Көздер топтары бөліміне өтіңіз. Көздер топтарының жасалғанына көз жеткізіңіз.
- CDN → SSL сертификаттары бөліміне өтіңіз. SSL сертификатының жобаға қосылғанына көз жеткізіңіз.
Егер Terraform көмегімен жасалған ресурстар енді қажет болмаса, оларды жойыңыз:
-
Terraform конфигурация файлдары бар директорияға өтіңіз.
-
Команданы орындаңыз:
terraform destroyРастауды сұрағанда
yesенгізіңіз. -
Операцияның аяқталуын күтіңіз.