AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ආයුබෝවන් සියල්ලටම! මගේ නම කිරිල්, මම Adapty හි CTO. අපගේ බොහෝ ගෘහනිර්මාණ ශිල්පය AWS මත වන අතර, අද මම නිෂ්පාදන පරිසරයක ස්ථානීය අවස්ථා භාවිතා කිරීමෙන් සේවාදායක පිරිවැය 3 ගුණයකින් අඩු කළ ආකාරය මෙන්ම ඒවායේ ස්වයංක්‍රීය පරිමාණය සකසන්නේ කෙසේද යන්න ගැන කතා කරමි. මුලින්ම එය ක්රියා කරන ආකාරය පිළිබඳ දළ විශ්ලේෂණයක් ඇත, පසුව ආරම්භ කිරීම සඳහා සවිස්තරාත්මක උපදෙස්.

ස්ථාන අවස්ථා මොනවාද?

ස්ථානය අවස්ථා යනු දැනට ක්‍රියා විරහිතව සිටින අනෙකුත් AWS පරිශීලකයින්ගේ සේවාදායකයන් වන අතර ඔවුන් ඒවා විශාල වට්ටමක් යටතේ විකුණනු ලැබේ (Amazon 90% දක්වා ලියයි, අපගේ අත්දැකීම ~3x, කලාපය, AZ සහ උදාහරණ වර්ගය අනුව වෙනස් වේ). සාමාන්‍ය ඒවාට වඩා ඔවුන්ගේ ප්‍රධාන වෙනස නම් ඒවා ඕනෑම වේලාවක අක්‍රිය කළ හැකි වීමයි. එමනිසා, S3 හෝ දත්ත ගබඩාවේ ඉතිරි කර ඇති අතරමැදි ප්‍රතිඵල සමඟ, කන්‍යා පරිසරයන් සඳහා හෝ යමක් ගණනය කිරීමේ කාර්යයන් සඳහා ඒවා භාවිතා කිරීම සාමාන්‍ය දෙයක් බව අපි බොහෝ කාලයක් විශ්වාස කළෙමු, නමුත් විකුණුම් සඳහා නොවේ. නිෂ්පාදනයේ ලප භාවිතා කිරීමට ඔබට ඉඩ සලසන තෙවන පාර්ශවීය විසඳුම් ඇත, නමුත් අපගේ නඩුව සඳහා බොහෝ අත්වාරු ඇත, එබැවින් අපි ඒවා ක්රියාත්මක නොකළෙමු. ලිපියේ විස්තර කර ඇති ප්‍රවේශය අතිරේක ස්ක්‍රිප්ට්, ඔටුනු ආදිය නොමැතිව සම්මත AWS ක්‍රියාකාරීත්වය තුළ සම්පූර්ණයෙන්ම ක්‍රියා කරයි.

ස්ථානීය අවස්ථා සඳහා මිල ඉතිහාසය පෙන්වන තිරපිටපත් කිහිපයක් පහත දැක්වේ.

m5.eu-west-1 (Ireland) කලාපයේ විශාලයි. මිල මාස 3ක් සඳහා බොහෝ දුරට ස්ථාවර වී ඇති අතර, දැනට 2.9x ඉතිරි වේ.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

m5. US-east-1 කලාපයේ (N. Virginia) විශාලයි. මාස 3ක් පුරා මිල නිරන්තරයෙන් වෙනස් වන අතර, දැනට පවතින කලාපය අනුව 2.3x සිට 2.8x දක්වා ඉතිරි වේ.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

t3.small in the us-east-1 (N. Virginia). මිල මාස 3ක් සඳහා ස්ථාවරව පවතින අතර, දැනට 3.4x ඉතිරි කරයි.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

සේවා ගෘහ නිර්මාණ ශිල්පය

මෙම ලිපියෙන් අප කතා කරන සේවාවේ මූලික ගෘහ නිර්මාණ ශිල්පය පහත රූප සටහනේ දැක්වේ.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

යෙදුම් පැටවුම් ශේෂය → EC2 ඉලක්ක කණ්ඩායම → ඉලාස්ටික් බහාලුම් සේවාව

යෙදුම් පැටවීමේ සමතුලිතකය (ALB) සමතුලිතයක් ලෙස භාවිතා කරයි, එය EC2 ඉලක්ක කණ්ඩායම (TG) වෙත ඉල්ලීම් යවයි. ALB සඳහා අවස්ථා වලදී වරායන් විවෘත කිරීම සහ ඒවා ඉලාස්ටික් බහාලුම් සේවා (ECS) බහාලුම්වල වරායන් වෙත සම්බන්ධ කිරීම සඳහා TG වගකීම දරයි. ECS යනු ඩොකර් බහාලුම් කළමනාකරණය කරන AWS හි Kubernetes හි ප්‍රතිසමයකි.

එක් අවස්ථාවක එකම වරායන් සහිත ධාවන බහාලුම් කිහිපයක් තිබිය හැක, එබැවින් අපට ඒවා ස්ථිරව සැකසිය නොහැක. ECS TG ට පවසන්නේ එය නව කාර්යයක් දියත් කරන බවයි (කුබර්නෙටේස් පාරිභාෂිතයේ මෙය පොඩ් එකක් ලෙස හැඳින්වේ), එය අවස්ථාවෙහිදී නොමිලේ වරායන් පරීක්ෂා කර ඒවායින් එකක් දියත් කළ කාර්යයට පවරයි. සෞඛ්‍ය පරීක්‍ෂාව භාවිතයෙන් නිදසුන සහ API එය මත ක්‍රියා කරන්නේද යන්න TG නිතිපතා පරීක්‍ෂා කරන අතර, එය කිසියම් ගැටලුවක් දුටුවහොත්, එය එහි ඉල්ලීම් යැවීම නවත්වයි.

EC2 Auto Scaling Groups + ECS ධාරිතාව සපයන්නන්

ඉහත රූප සටහන EC2 Auto Scaling Groups (ASG) සේවාව නොපෙන්වයි. පරිමාණ අවස්ථා සඳහා එය වගකිව යුතු බව නමෙන් ඔබට තේරුම් ගත හැකිය. කෙසේ වෙතත්, මෑතක් වන තුරු, ECS වෙතින් ධාවනය වන යන්ත්‍ර ගණන කළමනාකරණය කිරීමට AWS හට ගොඩනඟන ලද හැකියාවක් නොතිබුණි. ECS මඟින් කාර්ය සංඛ්‍යාව පරිමාණය කිරීමට හැකි විය, උදාහරණයක් ලෙස, CPU භාවිතය, RAM හෝ ඉල්ලීම් ගණන. නමුත් සියලු නිදහස් අවස්ථාවන්හි කාර්යයන් අත්පත් කර ගන්නේ නම්, නව යන්ත්‍ර ස්වයංක්‍රීයව නිර්මාණය නොවේ.

ECS Capacity Providers (ECS CP) පැමිණීමත් සමඟ මෙය වෙනස් වී ඇත. දැන් ECS හි සෑම සේවාවක්ම ASG සමඟ සම්බන්ධ කළ හැකි අතර, කාර්යයන් ධාවන අවස්ථාවන්ට නොගැලපේ නම්, නව ඒවා මතු කරනු ලැබේ (නමුත් ස්ථාපිත ASG සීමාවන් තුළ). මෙය ද ප්‍රතිවිරුද්ධ දිශාවට ක්‍රියා කරයි, ECS CP විසින් කාර්යයන් නොමැතිව නිෂ්ක්‍රීය අවස්ථා දකින්නේ නම්, එය ASG විධානය මඟින් ඒවා වසා දැමීමට ලබා දෙනු ඇත. ECS CP හට නිදර්ශන භාරයේ ඉලක්කගත ප්‍රතිශතයක් නියම කිරීමේ හැකියාව ඇත, එවිට නිශ්චිත යන්ත්‍ර සංඛ්‍යාවක් ඉක්මනින් පරිමාණය කිරීමේ කාර්යයන් සඳහා සැමවිටම නොමිලේ; මම මේ ගැන ටිකක් පසුව කතා කරන්නම්.

EC2 ආකෘති දියත් කරන්න

මෙම යටිතල පහසුකම් නිර්මාණය කිරීම ගැන විස්තර කිරීමට පෙර මම කතා කරන අවසාන සේවාව EC2 දියත් කිරීමේ සැකිලි වේ. සෑම විටම මුල සිටම මෙය නැවත නොකිරීමට, සියලුම යන්ත්‍ර ආරම්භ වන පරිදි අච්චුවක් සෑදීමට එය ඔබට ඉඩ සලසයි. මෙහිදී ඔබට ආරම්භ කිරීමට යන්ත්‍ර වර්ගය, ආරක්ෂක කණ්ඩායම, තැටි රූපය සහ තවත් බොහෝ පරාමිති තෝරාගත හැක. දියත් කරන ලද සියලුම අවස්ථා වෙත උඩුගත කෙරෙන පරිශීලක දත්ත ද ඔබට නියම කළ හැක. ඔබට පරිශීලක දත්තවල ස්ක්‍රිප්ට් ධාවනය කළ හැකිය, උදාහරණයක් ලෙස, ඔබට ගොනුවක අන්තර්ගතය සංස්කරණය කළ හැකිය ECS නියෝජිත වින්‍යාසය.

මෙම ලිපිය සඳහා වඩාත් වැදගත් වින්‍යාස පරාමිතීන්ගෙන් එකකි ECS_ENABLE_SPOT_INSTANCE_DRAINING= ඇත්ත. මෙම පරාමිතිය සක්‍රීය කර ඇත්නම්, ECS විසින් ස්ථානීය අවස්ථාවක් ඉවත් කරන බවට සංඥාවක් ලැබුණු විගස, එය මත ක්‍රියා කරන සියලුම කාර්යයන් ජලාපවහන තත්ත්වයට මාරු කරයි. මෙම අවස්ථාවට නව කාර්යයන් පවරනු නොලැබේ; මේ මොහොතේ එය වෙත ගෙන යාමට අවශ්‍ය කාර්යයන් තිබේ නම්, ඒවා අවලංගු කරනු ලැබේ. Balance එකෙන් එන Request එකත් නවතිනවා. නිදසුන් මකාදැමීම පිළිබඳ දැනුම්දීම සත්‍ය සිදුවීමට මිනිත්තු 2කට පෙර පැමිණේ. එමනිසා, ඔබේ සේවාව මිනිත්තු 2 කට වඩා වැඩි කාලයක් කාර්යයන් ඉටු නොකරන්නේ නම් සහ තැටියට කිසිවක් ඉතිරි නොකරන්නේ නම්, ඔබට දත්ත අහිමි නොවී ස්ථානීය අවස්ථා භාවිතා කළ හැකිය.

තැටිය සම්බන්ධයෙන් - AWS මෑතකදී කළා ECS සමඟ ප්‍රත්‍යාස්ථ ගොනු පද්ධතිය (EFS) භාවිතා කළ හැකිය; මෙම යෝජනා ක්‍රමය සමඟ, තැටිය පවා බාධාවක් නොවේ, නමුත් අපි මෙය උත්සාහ කළේ නැත, මන්ද ප්‍රතිපත්තිමය වශයෙන් අපට රාජ්‍යය ගබඩා කිරීමට තැටිය අවශ්‍ය නොවන බැවිනි. පෙරනිමියෙන්, SIGINT ලැබීමෙන් පසු (කාර්යයක් ජලාපවහන තත්ත්වයට මාරු කළ විට යවනු ලැබේ), ධාවනය වන සියලුම කාර්යයන් තවමත් සම්පූර්ණ කර නොමැති වුවද තත්පර 30 කට පසුව නතර වනු ඇත; ඔබට මෙම කාලය පරාමිතිය භාවිතයෙන් වෙනස් කළ හැකිය. ECS_CONTAINER_STOP_TIMEOUT. ප්රධාන දෙය නම් ස්පෝට් මැෂින් සඳහා විනාඩි 2 කට වඩා වැඩි කාලයක් එය සකස් කිරීම නොවේ.

සේවාවක් නිර්මාණය කිරීම

විස්තර කරන ලද සේවාව නිර්මාණය කිරීමට අපි ඉදිරියට යමු. ක්‍රියාවලියේදී, ඉහත සඳහන් නොකළ ප්‍රයෝජනවත් කරුණු කිහිපයක් මම අතිරේකව විස්තර කරමි. පොදුවේ ගත් කල, මෙය පියවරෙන් පියවර උපදෙස් වේ, නමුත් මම ඉතා මූලික හෝ, ඊට පටහැනිව, ඉතා නිශ්චිත අවස්ථා කිහිපයක් සලකා බලන්නේ නැත. සියලුම ක්‍රියා AWS දෘශ්‍ය කොන්සෝලය තුළ සිදු කරනු ලැබේ, නමුත් CloudFormation හෝ Terraform භාවිතයෙන් ක්‍රමලේඛනාත්මකව ප්‍රතිනිෂ්පාදනය කළ හැක. Adapty වලදී අපි Terraform භාවිතා කරනවා.

EC2 දියත් කිරීමේ අච්චුව

මෙම සේවාව භාවිතා කරන යන්ත්‍ර වින්‍යාසයක් නිර්මාණය කරයි. සැකිලි කළමනාකරණය කරනු ලබන්නේ EC2 -> අවස්ථා -> දියත් අච්චු කොටසෙහි ය.

ඇමසන් යන්ත්‍ර රූපය (AMI) — සියලුම අවස්ථා දියත් කරන තැටි රූපය සඳහන් කරන්න. ECS සඳහා, බොහෝ අවස්ථාවලදී Amazon වෙතින් ප්රශස්තකරණය කළ රූපය භාවිතා කිරීම වටී. එය නිතිපතා යාවත්කාලීන වන අතර ECS සඳහා වැඩ කිරීමට අවශ්‍ය සියල්ල අඩංගු වේ. වත්මන් රූප ID සොයා ගැනීමට, පිටුවට යන්න Amazon ECS-ප්‍රශස්ත AMIs, ඔබ භාවිතා කරන කලාපය තෝරන්න සහ ඒ සඳහා AMI ID පිටපත් කරන්න. උදාහරණයක් ලෙස, us-east-1 කලාපය සඳහා, ලියන අවස්ථාවේ වත්මන් ID වේ ami-00c7c1cf5bdc913ed. මෙම හැඳුනුම අභිරුචි අගය අයිතමයක් සඳහන් කිරීමට ඇතුළත් කළ යුතුය.

උදාහරණ වර්ගය - උදාහරණ වර්ගය දක්වන්න. ඔබගේ කාර්යයට වඩාත් ගැලපෙන එකක් තෝරන්න.

යතුරු යුගල (පිවිසීම) — අවශ්‍ය නම්, ඔබට SSH හරහා අවස්ථාවට සම්බන්ධ විය හැකි සහතිකයක් සඳහන් කරන්න.

ජාල සැකසුම් - ජාල පරාමිතීන් සඳහන් කරන්න. ජාලකරණ වේදිකාව බොහෝ අවස්ථාවලදී Virtual Private Cloud (VPC) තිබිය යුතුය. ආරක්ෂක කණ්ඩායම් - ඔබගේ අවස්ථා සඳහා ආරක්ෂක කණ්ඩායම්. අපි අවස්ථා ඉදිරියේ සමතුලිතයක් භාවිතා කරන බැවින්, සමතුලිතයෙන් පමණක් ලැබෙන සම්බන්ධතා වලට ඉඩ දෙන කණ්ඩායමක් මෙහි සඳහන් කිරීමට මම නිර්දේශ කරමි. එනම්, ඔබට ආරක්‍ෂක කණ්ඩායම් 2ක් ඇත, එකක් balancer සඳහා වන අතර, 80 (http) සහ 443 (https) වරායන්හි ඕනෑම තැනක සිට පැමිණෙන සම්බන්ධතාවලට ඉඩ ලබා දෙන අතර, දෙවනුව balancer කණ්ඩායමෙන් ඕනෑම වරායකට පැමිණෙන සම්බන්ධතාවලට ඉඩ සලසන යන්ත්‍ර සඳහා. . කණ්ඩායම් දෙකෙහිම පිටතට යන සම්බන්ධතා TCP ප්‍රොටෝකෝලය භාවිතයෙන් සියලුම වරායන් වෙත සියලුම ලිපින වෙත විවෘත කළ යුතුය. පිටතට යන සම්බන්ධතා සඳහා ඔබට වරායන් සහ ලිපින සීමා කළ හැකිය, නමුත් පසුව ඔබ සංවෘත වරායක යමක් වෙත ප්‍රවේශ වීමට උත්සාහ නොකරන බව නිරන්තරයෙන් නිරීක්ෂණය කළ යුතුය.

ගබඩාව (පරිමා) - යන්ත්‍ර සඳහා තැටි පරාමිතීන් සඳහන් කරන්න. තැටි ප්‍රමාණය AMI හි දක්වා ඇති ප්‍රමාණයට වඩා අඩු විය නොහැක; ECS Optimized සඳහා එය 30 GiB වේ.

උසස් විස්තර - අතිරේක පරාමිතීන් සඳහන් කරන්න.

මිලදී ගැනීමේ විකල්පය — අපට ස්ථානීය අවස්ථා මිලදී ගැනීමට අවශ්‍යද යන්න. අපට අවශ්‍යයි, නමුත් අපි මෙම කොටුව මෙහි සලකුණු නොකරමු; අපි එය ස්වයංක්‍රීය පරිමාණ සමූහය තුළ වින්‍යාස කරන්නෙමු, එහි තවත් විකල්ප තිබේ.

IAM නිදර්ශන පැතිකඩ — අවස්ථා දියත් කරන කාර්යභාරය දක්වන්න. ECS හි ක්‍රියාත්මක වන අවස්ථා සඳහා, ඒවාට අවසර අවශ්‍ය වේ, ඒවා සාමාන්‍යයෙන් භූමිකාවේ දක්නට ලැබේ ecsInstanceRole. සමහර අවස්ථාවලදී එය නිර්මාණය කළ හැකිය, එසේ නොවේ නම්, පසුව මෙහි අත්පොත මෙය කරන්නේ කෙසේද යන්න පිළිබඳව. නිර්මාණය කිරීමෙන් පසු, අපි එය අච්චුවේ සඳහන් කරමු.
ඊළඟට බොහෝ පරාමිතීන් ඇත, මූලික වශයෙන් ඔබට පෙරනිමි අගයන් සෑම තැනකම තැබිය හැකිය, නමුත් ඒ සෑම එකක්ම පැහැදිලි විස්තරයක් ඇත. මම සෑම විටම EBS-ප්‍රශස්ත අවස්ථාව සහ T2/T3 අසීමිත විකල්ප භාවිතා කරන්නේ නම් සක්‍රීය කරමි පුපුරා යා හැකි අවස්ථා.

පරිශීලක දත්ත - පරිශීලක දත්ත දක්වන්න. අපි ගොනුව සංස්කරණය කරන්නෙමු /etc/ecs/ecs.config, ECS නියෝජිත වින්‍යාසය අඩංගු වේ.
පරිශීලක දත්ත කෙබඳු විය හැකිද යන්න පිළිබඳ උදාහරණයක්:

#!/bin/bash
echo ECS_CLUSTER=DemoApiClusterProd >> /etc/ecs/ecs.config
echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config
echo ECS_CONTAINER_STOP_TIMEOUT=1m >> /etc/ecs/ecs.config
echo ECS_ENGINE_AUTH_TYPE=docker >> /etc/ecs/ecs.config
echo "ECS_ENGINE_AUTH_DATA={"registry.gitlab.com":{"username":"username","password":"password"}}" >> /etc/ecs/ecs.config

ECS_CLUSTER=DemoApiClusterProd — පරාමිතිය පෙන්නුම් කරන්නේ එම අවස්ථාව ලබා දී ඇති නම සහිත පොකුරකට අයත් වන බවයි, එනම්, මෙම පොකුරට එහි කාර්යයන් මෙම සේවාදායකය මත තැබීමට හැකි වනු ඇත. අපි තවම පොකුරක් සාදා නැත, නමුත් එය නිර්මාණය කිරීමේදී අපි මෙම නම භාවිතා කරමු.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true — පරාමිතිය සඳහන් කරන්නේ ස්ථානීය අවස්ථාවක් නිවා දැමීමට සංඥාවක් ලැබුණු විට, එහි ඇති සියලුම කාර්යයන් ජලාපවහන තත්ත්වයට මාරු කළ යුතු බවයි.

ECS_CONTAINER_STOP_TIMEOUT=1m - පරාමිතිය සඳහන් කරන්නේ SIGINT සංඥාවක් ලැබීමෙන් පසු, සියලු කාර්යයන් මරා දැමීමට පෙර මිනිත්තු 1 ක් ඇති බවයි.

ECS_ENGINE_AUTH_TYPE=docker — පරාමිතිය පෙන්නුම් කරන්නේ ඩොකර් යෝජනා ක්‍රමය බලය පැවරීමේ යාන්ත්‍රණය ලෙස භාවිතා කරන බවයි

ECS_ENGINE_AUTH_DATA=... - ඔබගේ ඩොකර් පින්තූර ගබඩා කර ඇති පුද්ගලික බහාලුම් රෙජිස්ට්රි වෙත සම්බන්ධතා පරාමිතීන්. එය පොදු නම්, ඔබට කිසිවක් සඳහන් කිරීමට අවශ්‍ය නැත.

මෙම ලිපියේ අරමුණු සඳහා, මම Docker Hub වෙතින් පොදු රූපයක් භාවිතා කරමි, එබැවින් පරාමිතීන් සඳහන් කරන්න ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA අවශ්‍ය නැත.

දැන ගැනීමට ලැබීම සතුටක්: AMI නිතිපතා යාවත්කාලීන කිරීම රෙකමදාරු කරනු ලැබේ, මන්ද නව අනුවාදයන් ඩොකර්, ලිනක්ස්, ඊසීඑස් නියෝජිතයා යනාදී අනුවාද යාවත්කාලීන කරයි. මේ ගැන අමතක නොකිරීමට, ඔබට හැකිය දැනුම්දීම් සකසන්න නව අනුවාදයන් නිකුත් කිරීම ගැන. ඔබට විද්‍යුත් තැපෑලෙන් දැනුම්දීම් ලැබිය හැකි අතර අතින් යාවත්කාලීන කළ හැක, නැතහොත් යාවත්කාලීන කළ AMI එකක් සමඟින් Launch Template හි නව අනුවාදයක් ස්වයංක්‍රීයව සාදනු ලබන Lambda ශ්‍රිතයක් ලිවිය හැක.

EC2 Auto Scaling Group

ස්වයංක්‍රීය පරිමාණය කිරීමේ කණ්ඩායම දියත් කිරීම සහ පරිමාණය කිරීමේ අවස්ථා සඳහා වගකිව යුතුය. කණ්ඩායම් කළමනාකරණය කරනු ලබන්නේ EC2 -> ස්වයංක්‍රීය පරිමාණය -> ස්වයංක්‍රීය පරිමාණ කණ්ඩායම් කොටසෙහි ය.

අච්චුව දියත් කරන්න - පෙර පියවරේදී සාදන ලද අච්චුව තෝරන්න. අපි පෙරනිමි අනුවාදය තබමු.

මිලදී ගැනීමේ විකල්ප සහ අවස්ථා වර්ග - පොකුර සඳහා අවස්ථා වර්ග සඳහන් කරන්න. අච්චුව දියත් කිරීමට පිළිපදින්න, දියත් කිරීමේ අච්චුවේ ඇති අවස්ථා වර්ගය භාවිතා කරයි. මිලදී ගැනීමේ විකල්ප සහ අවස්ථා වර්ග ඒකාබද්ධ කිරීමෙන් ඔබට අවස්ථා වර්ග නම්‍යශීලීව වින්‍යාස කිරීමට ඉඩ සලසයි. අපි එය භාවිතා කරන්නෙමු.

විකල්ප ඉල්ලුම මත පදනම - සෑම විටම ක්‍රියා කරන නිත්‍ය, ස්ථානීය නොවන අවස්ථා ගණන.

පදනමට වඩා ඉල්ලුම මත ප්‍රතිශතය - නිත්‍ය සහ ස්ථාන අවස්ථා වල ප්‍රතිශත අනුපාතය, 50-50 සමානව බෙදා හරිනු ලැබේ, සෑම නිත්‍ය අවස්ථාවක් සඳහාම 20-80 ස්ථාන 4ක් ඉහළ නංවනු ලැබේ. මෙම උදාහරණයේ අරමුණු සඳහා, මම 50-50 දක්වන්නෙමි, නමුත් යථාර්ථයේ දී අපි බොහෝ විට 20-80 කරන්නෙමු, සමහර අවස්ථාවල 0-100.

අවස්ථා වර්ග — මෙහිදී ඔබට පොකුරේ භාවිතා කරන අමතර අවස්ථා වර්ග සඳහන් කළ හැක. කතාවේ තේරුම මට හරියට තේරෙන්නේ නැති නිසා අපි කවදාවත් ඒක පාවිච්චි කළේ නැහැ. සමහර විට මෙය විශේෂිත ආකාරයේ අවස්ථාවන්හි සීමාවන් නිසා විය හැකිය, නමුත් ඒවා පහසුවෙන් සහාය හරහා වැඩි කළ හැකිය. ඔබ යෙදුම දන්නේ නම්, අදහස් දැක්වීමේදී එය කියවීමට මම සතුටු වෙමි)

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ජාල - ජාල සැකසීම්, යන්ත්‍ර සඳහා VPC සහ උපජාල තෝරන්න, බොහෝ අවස්ථාවලදී ඔබ පවතින සියලුම උපජාල තෝරාගත යුතුය.

ශේෂය පැටවීම - සමතුලිත සැකසුම්, නමුත් අපි මෙය වෙන වෙනම කරන්නෙමු, අපි මෙහි කිසිවක් ස්පර්ශ නොකරමු. සෞඛ්‍ය පරීක්‍ෂණ පසුව ද වින්‍යාස කරනු ඇත.

කණ්ඩායම් ප්‍රමාණය — අපි ආරම්භයේදී පොකුරේ ඇති යන්ත්‍ර ගණන සහ අපේක්ෂිත යන්ත්‍ර ගණන පිළිබඳ සීමාවන් දක්වන්නෙමු. ප්‍රමිතික අනුව පරිමාණය සිදු කළ යුතු වුවද, පොකුරේ ඇති යන්ත්‍ර සංඛ්‍යාව නිශ්චිතව දක්වා ඇති අවමයට වඩා අඩු සහ උපරිමයට වඩා වැඩි නොවේ.

පරිමාණ කිරීමේ ප්රතිපත්ති - පරිමාණ පරාමිතීන්, නමුත් අපි ධාවනය වන ECS කාර්යයන් මත පදනම්ව පරිමාණය කරන්නෙමු, එබැවින් අපි පසුව පරිමාණය වින්‍යාස කරන්නෙමු.

උදාහරණ පරිමාණයෙන් ආරක්ෂාව - පරිමාණය අඩු කිරීමේදී මකාදැමීමෙන් අවස්ථා ආරක්ෂා කිරීම. ASG විසින් ධාවනය වන කාර්යයන් ඇති යන්ත්‍රය මකා නොදැමීමට අපි එය සක්‍රීය කරමු. ECS ධාරිතාව සපයන්නා විසින් කාර්යයන් නොමැති අවස්ථා සඳහා ආරක්ෂාව අබල කරයි.

ටැග් එක් කරන්න — ඔබට නිදසුන් සඳහා ටැග් නියම කළ හැක (මේ සඳහා, Tag new instances කොටුව සලකුණු කළ යුතුය). නම ටැගය සඳහන් කිරීමට මම නිර්දේශ කරමි, එවිට කණ්ඩායම තුළ දියත් කරන සියලුම අවස්ථා එකම නමක් ඇති අතර ඒවා කොන්සෝලය තුළ බැලීම පහසුය.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

Group එක හැදුවට පස්සේ ඒක open කරලා Advanced configurations කියන කොටසට යන්න.ඇයි හැම option එකක්ම create stage එකේ console එකේ පෙන්නේ නැත්තෙ.

අවසන් කිරීමේ ප්රතිපත්ති - අවස්ථා මකා දැමීමේදී සැලකිල්ලට ගන්නා නීති. ඒවා පිළිවෙලට යොදනු ලැබේ. අපි සාමාන්‍යයෙන් පහත පින්තූරයේ ඇති ඒවා භාවිතා කරමු. පළමුව, පැරණිම දියත් කිරීමේ අච්චුව සහිත අවස්ථා මකා දමනු ලැබේ (උදාහරණයක් ලෙස, අපි AMI යාවත්කාලීන කළහොත්, අපි නව අනුවාදයක් නිර්මාණය කළෙමු, නමුත් සියලුම අවස්ථා එයට මාරු වීමට සමත් විය). එවිට ඊළඟ බිල්පත් පැයට ආසන්නතම අවස්ථාවන් තෝරා ගනු ලැබේ. ඉන්පසු දියත් කරන දිනය මත පදනම්ව පැරණිතම ඒවා තෝරා ගනු ලැබේ.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

දැන ගැනීමට ලැබීම සතුටක්: භාවිතා කිරීමට පහසු, පොකුරක් තුළ සියලුම යන්ත්‍ර යාවත්කාලීන කිරීමට උදාහරණය නැවුම් කරන්න. ඔබ මෙය පෙර පියවරේ සිට Lambda ශ්‍රිතය සමඟ ඒකාබද්ධ කරන්නේ නම්, ඔබට සම්පුර්ණයෙන්ම ස්වයංක්‍රීය අවස්ථා යාවත්කාලීන පද්ධතියක් ඇත. සියලුම යන්ත්‍ර යාවත්කාලීන කිරීමට පෙර, ඔබ සමූහයේ සියලුම අවස්ථා සඳහා නිදසුන් පරිමාණ ආරක්ෂාව අක්‍රිය කළ යුතුය. සමූහය තුළ වින්‍යාස කිරීම නොව, යන්ත්‍ර වලින්ම ආරක්ෂාව, මෙය සිදු කරනු ලබන්නේ අවස්ථා කළමනාකරණ පටිත්තෙහි ය.

යෙදුම් පැටවුම් ශේෂය සහ EC2 ඉලක්ක කණ්ඩායම

සමතුලිතකය EC2 → Load Balancing → Load Balancers යන කොටසේ නිර්මාණය කර ඇත. අපි Application Load Balancer භාවිතා කරන්නෙමු; විවිධ ආකාරයේ balancers සංසන්දනය මෙහි දී කියවිය හැක සේවා පිටුව.

අහන්න - පසුව සමතුලිත නීති භාවිතා කරමින් වරාය 80 සහ 443 සාදා 80 සිට 443 දක්වා හරවා යැවීම අර්ථවත් කරයි.

උපයෝජ්‍යතා කලාප — බොහෝ අවස්ථාවලදී, අපි සෑම කෙනෙකුටම ප්‍රවේශ්‍යතා කලාප තෝරා ගනිමු.

ආරක්ෂක සැකසුම් වින්‍යාස කරන්න — balancer සඳහා SSL සහතිකය මෙහි දක්වා ඇත, වඩාත්ම පහසු විකල්පය වේ සහතිකයක් කරන්න ACM හි. වෙනස්කම් ගැන ආරක්ෂක ප්රතිපත්තිය තුල කියවිය හැක ලියකියවිලි, ඔබට එය පෙරනිමියෙන් තෝරා ගත හැක ELBSecurityPolicy-2016-08. සමතුලිතකය නිර්මාණය කිරීමෙන් පසු, ඔබ එය දකිනු ඇත DNS නම, ඔබට ඔබේ වසම සඳහා CNAME වින්‍යාස කිරීමට අවශ්‍ය වේ. උදාහරණයක් ලෙස, Cloudflare හි පෙනෙන ආකාරය මෙයයි.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ආරක්ෂක කණ්ඩායම — balancer සඳහා ආරක්ෂක කණ්ඩායමක් සාදන්න හෝ තෝරන්න, මම මේ ගැන වැඩි විස්තර EC2 Launch Template → Network settings කොටසේ ලිව්වා.

ඉලක්ක කණ්ඩායම — අපි සමතුලිතයෙන් යන්ත්‍ර වෙත ඉල්ලීම් යොමු කිරීම සහ ගැටළු ඇති වූ විට ඒවා ප්‍රතිස්ථාපනය කිරීම සඳහා ඒවා තිබේදැයි පරීක්ෂා කිරීම සඳහා වගකිව යුතු කණ්ඩායමක් නිර්මාණය කරමු. ඉලක්ක වර්ගය උදාහරණයක් විය යුතුය, ප්රොටොකෝලය и වරාය ඕනෑම, ඔබ සමතුලිතය සහ අවස්ථා අතර සන්නිවේදනය සඳහා HTTPS භාවිතා කරන්නේ නම්, ඔබ ඔවුන්ට සහතිකයක් උඩුගත කළ යුතුය. මෙම උදාහරණයේ අරමුණු සඳහා, අපි මෙය නොකරමු, අපි වරාය 80 හැර යන්නෙමු.

සෞඛ්‍ය පරීක්‍ෂණ - සේවාවේ ක්රියාකාරිත්වය පරීක්ෂා කිරීම සඳහා පරාමිතීන්. සැබෑ සේවාවක් තුළ, මෙය ව්‍යාපාර තර්කනයේ වැදගත් කොටස් ක්‍රියාත්මක කරන වෙනම ඉල්ලීමක් විය යුතුය; මෙම උදාහරණයේ අරමුණු සඳහා, මම පෙරනිමි සැකසුම් තබමි. ඊළඟට, ඔබට ඉල්ලීම් කාල සීමාව, කල් ඉකුත්වීම, සාර්ථක කේත ආදිය තෝරාගත හැක. අපගේ උදාහරණයේ දී, අපි සාර්ථක කේත 200-399 සඳහන් කරන්නෙමු, මන්ද භාවිතා කරන ඩොකර් රූපය 304 කේතයක් ලබා දෙයි.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ඉලක්ක ලියාපදිංචි කරන්න — මෙහිදී කණ්ඩායම සඳහා මෝටර් රථ තෝරා ඇත, නමුත් අපගේ නඩුවේදී මෙය ECS විසින් සිදු කරනු ඇත, එබැවින් අපි මෙම පියවර මඟ හරිමු.

දැන ගැනීමට ලැබීම සතුටක්: සමතුලිත මට්ටමේදී ඔබට නිශ්චිතව S3 හි සුරැකෙන ලඝු-සටහන් සක්‍රීය කළ හැක ආකෘතිය. එතැන් සිට ඒවා විශ්ලේෂණ සඳහා තෙවන පාර්ශවීය සේවාවන් වෙත අපනයනය කළ හැකිය, නැතහොත් ඔබට S3 හි දත්ත මත කෙලින්ම SQL විමසුම් කළ හැකිය. Athena භාවිතා කරමින්. එය පහසු වන අතර අමතර කේතයක් නොමැතිව ක්‍රියා කරයි. නිශ්චිත කාල සීමාවකට පසුව S3 බාල්දියෙන් ලොග් ඉවත් කිරීම සැකසීමට ද මම නිර්දේශ කරමි.

ECS කාර්ය අර්ථ දැක්වීම

පෙර පියවර වලදී, අපි සේවා යටිතල ව්‍යුහයට අදාළ සෑම දෙයක්ම නිර්මාණය කළෙමු; දැන් අපි දියත් කරන බහාලුම් විස්තර කිරීමට ඉදිරියට යමු. මෙය ECS → Task Definitions කොටසේ සිදු කෙරේ.

දියත් කිරීමේ වර්ගය ගැළපුම - EC2 තෝරන්න.

කාර්යය ක්රියාත්මක කිරීම IAM භූමිකාව - තෝරා ecsTaskExecutionRole. එය භාවිතා කරමින්, ලඝු-සටහන් ලියා ඇත, රහස් විචල්යයන් වෙත ප්රවේශය ලබා දෙනු ලැබේ, ආදිය.

බහාලුම් අර්ථ දැක්වීම් කොටසේ, බහාලුම් එකතු කරන්න ක්ලික් කරන්න.

රූප — ව්‍යාපෘති කේතය සමඟ රූපයට සම්බන්ධ කරන්න; මෙම උදාහරණය සඳහා මම ඩොකර් හබ් වෙතින් පොදු රූපයක් භාවිතා කරමි bitnami/node-උදාහරණය:0.0.1.

මතක සීමාවන් - බහාලුම් සඳහා මතක සීමාවන්. දැඩි සීමාව — දෘඪ සීමාව, කන්ටේනරය නියමිත අගය ඉක්මවා ගියහොත්, ඩොකර් කිල් විධානය ක්‍රියාත්මක වේ, කන්ටේනරය වහාම මිය යනු ඇත. මෘදු සීමාව - මෘදු සීමාව, කන්ටේනරය නිශ්චිත අගය ඉක්මවා යා හැක, නමුත් යන්ත්ර මත කාර්යයන් තැබීමේදී මෙම පරාමිතිය සැලකිල්ලට ගනු ලැබේ. උදාහරණයක් ලෙස, යන්ත්‍රයක RAM 4 GiB තිබේ නම් සහ බහාලුම්වල මෘදු සීමාව 2048 MiB නම්, මෙම යන්ත්‍රයට මෙම බහාලුම සමඟ උපරිම ධාවන කාර්යයන් 2 ක් තිබිය හැකිය. ඇත්ත වශයෙන්ම, 4 GiB RAM ප්රමාණය 4096 MiB ට වඩා මදක් අඩුය, මෙය පොකුරේ ඇති ECS අවස්ථා ටැබය මත නැරඹිය හැකිය. මෘදු සීමාව දෘඩ සීමාවට වඩා වැඩි විය නොහැක. එක් කාර්යයක් තුළ බහාලුම් කිහිපයක් තිබේ නම්, ඒවායේ සීමාවන් සාරාංශ කර ඇති බව තේරුම් ගැනීම වැදගත්ය.

වරාය සිතියම්කරණය - හිදී සත්කාරක වරාය අපි 0 දක්වන්නෙමු, මෙයින් අදහස් කරන්නේ වරාය ගතිකව පවරනු ලබන අතර ඉලක්ක කණ්ඩායම විසින් නිරීක්ෂණය කරනු ඇති බවයි. බහාලුම් වරාය — ඔබේ යෙදුම ක්‍රියාත්මක වන වරාය බොහෝ විට ක්‍රියාත්මක කිරීමේ විධානයේ දක්වා ඇත, නැතහොත් ඔබේ යෙදුම් කේතය, ඩොකර්ෆයිල් යනාදිය තුළ පවරා ඇත. අපගේ උදාහරණය සඳහා එය ලැයිස්තුගත කර ඇති නිසා අපි 3000 භාවිතා කරන්නෙමු ඩොකර්ෆයිල් භාවිතා කරන රූපය.

සෞඛ්ය පරීක්ෂාව - බහාලුම් සෞඛ්‍ය පිරික්සුම් පරාමිතීන්, ඉලක්ක සමූහයේ වින්‍යාස කර ඇති එක සමඟ පටලවා නොගත යුතුය.

පරිසර - පරිසර සැකසුම්. CPU ඒකක - මතක සීමාවන්ට සමාන, ප්‍රොසෙසරය ගැන පමණි. එක් එක් ප්‍රොසෙසර හරය ඒකක 1024කි, එබැවින් සේවාදායකයට ද්විත්ව හර ප්‍රොසෙසරයක් තිබේ නම් සහ කන්ටේනරය 512 ලෙස සකසා ඇත්නම්, මෙම බහාලුම සමඟ කාර්යයන් 4 ක් එක් සේවාදායකයක් මත දියත් කළ හැකිය. CPU ඒකක සෑම විටම හර ගණනට අනුරූප වේ; මතකයේ ඇති පරිදි ඒවායින් ටිකක් අඩු විය නොහැක.

විධානය — බහාලුමක් තුළ සේවාවක් ආරම්භ කිරීමට විධානයක්, සියලු පරාමිතියන් කොමාවෙන් වෙන් කර ඇත. මෙය gunicorn, npm, ආදිය විය හැකිය. නිශ්චිතව දක්වා නොමැති නම්, Dockerfile වෙතින් CMD විධානයේ අගය භාවිතා කරනු ඇත. අපි පෙන්වා දෙනවා npm,start.

පාරිසරික විචල්යයන් - බහාලුම් පරිසර විචල්යයන්. මෙය සරල පෙළ දත්ත හෝ රහස් විචල්‍යයන් විය හැකිය රහස් කළමනාකරු හෝ පරාමිති ගබඩාව.

ගබඩා කිරීම සහ ලොග් කිරීම — මෙන්න අපි CloudWatch Logs (AWS වෙතින් ලොග් සඳහා සේවාවක්) තුළ ලොග් වීම සකසන්නෙමු. මෙය සිදු කිරීම සඳහා, ස්වයංක්‍රීය වින්‍යාස CloudWatch ලොග පිරික්සුම් කොටුව සක්‍රීය කරන්න. Task Definition නිර්මාණය කිරීමෙන් පසු, CloudWatch හි ලොග් සමූහයක් ස්වයංක්‍රීයව නිර්මාණය වේ. පෙරනිමියෙන්, ලඝු-සටහන් දින නියමයක් නොමැතිව එහි ගබඩා කර ඇත; රඳවා ගැනීමේ කාලය කිසිදා කල් ඉකුත් නොවන්නේ සිට අවශ්‍ය කාල සීමාව දක්වා වෙනස් කිරීමට මම නිර්දේශ කරමි. මෙය CloudWatch ලොග් කණ්ඩායම් වල සිදු කරනු ලැබේ, ඔබ වත්මන් කාල සීමාව මත ක්ලික් කර නව එකක් තෝරා ගත යුතුය.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ECS Cluster සහ ECS ධාරිතාව සපයන්නා

පොකුරක් සෑදීමට ECS → Clusters කොටස වෙත යන්න. අපි අච්චුව ලෙස EC2 Linux + Networking තෝරා ගනිමු.

පොකුරු නම - ඉතා වැදගත්, අපි මෙහි Launch Template පරාමිතියෙහි දක්වා ඇති නමම සාදන්නෙමු ECS_CLUSTER, අපේ නඩුවේ - DemoApiClusterProd. හිස් පොකුරු සාදන්න පිරික්සුම් කොටුව සලකුණු කරන්න. විකල්පයක් ලෙස, ඔබට CloudWatch හි සේවා සඳහා ප්‍රමිතික බැලීමට බහාලුම් විදසුන් සබල කළ හැක. ඔබ සෑම දෙයක්ම නිවැරදිව කළේ නම්, ECS අවස්ථා කොටසේ ස්වයංක්‍රීය පරිමාණය කිරීමේ කණ්ඩායම තුළ නිර්මාණය කරන ලද යන්ත්‍ර ඔබට පෙනෙනු ඇත.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ටැබ් එකට යන්න ධාරිතාව සපයන්නන් සහ අලුත් එකක් සාදන්න. ධාවනය වන ECS කාර්යයන් ගණන අනුව යන්ත්‍ර නිර්මාණය කිරීම සහ වසා දැමීම පාලනය කිරීම අවශ්‍ය බව මම ඔබට මතක් කරමි. සපයන්නෙකු එක් කණ්ඩායමකට පමණක් පැවරිය හැකි බව සැලකිල්ලට ගැනීම වැදගත්ය.

ස්වයංක්‍රීය පරිමාණය කිරීමේ කණ්ඩායම - කලින් සාදන ලද කණ්ඩායම තෝරන්න.

කළමනාකරණය කළ පරිමාණය — සපයන්නාට සේවාව පරිමාණය කිරීමට හැකි වන පරිදි එය සක්රිය කරන්න.

ඉලක්ක ධාරිතාව % — අපට අවශ්‍ය කාර්යයන් සහිත යන්ත්‍රවලින් කොපමණ ප්‍රතිශතයක් අවශ්‍යද? ඔබ 100% සඳහන් කරන්නේ නම්, සියලුම යන්ත්‍ර සෑම විටම ධාවන කාර්යයන් සමඟ කාර්යබහුල වනු ඇත. ඔබ 50% ක් සඳහන් කරන්නේ නම්, මෝටර් රථවලින් අඩක් සෑම විටම නොමිලේ වනු ඇත. මෙම අවස්ථාවේ දී, බර පැටවීමේ තියුණු පිම්මක් තිබේ නම්, නව කුලී රථ වහාම නොමිලේ මෝටර් රථ වෙත පැමිණෙනු ඇත, අවස්ථා යෙදවීමට බලා සිටීමකින් තොරව.

කළමනාකරණය කළ අවසන් ආරක්ෂාව — enable, මෙම පරාමිතිය සපයන්නාට මකාදැමීමෙන් නිදසුන් ආරක්ෂා කිරීම ඉවත් කිරීමට ඉඩ සලසයි. මෙය සිදුවන්නේ යන්ත්‍රයේ සක්‍රීය කාර්යයන් නොමැති විට සහ ඉලක්ක ධාරිතාව% ඉඩ ලබා දෙන විටය.

ECS සේවාව සහ පරිමාණ සැකසීම

අවසාන පියවර :) සේවාවක් නිර්මාණය කිරීම සඳහා, ඔබ සේවා පටිත්තෙහි කලින් සාදන ලද පොකුරට යා යුතුය.

දියත් කිරීමේ වර්ගය — ඔබට Switch to capacity provider උපාය මත ක්ලික් කර කලින් සාදන ලද සපයන්නන් තෝරාගත යුතුය.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

කාර්යය අර්ථ දැක්වීම - කලින් සාදන ලද කාර්ය නිර්වචනය සහ එහි සංශෝධනය තෝරන්න.

සේවා නම - ව්‍යාකූලත්වය වළක්වා ගැනීම සඳහා, අපි සෑම විටම Task Definition ලෙසම දක්වන්නෙමු.

සේවා වර්ගය - සෑම විටම අනුරුව.

කාර්යයන් ගණන - සේවාවේ අපේක්ෂිත ක්රියාකාරී කාර්යයන් සංඛ්යාව. මෙම පරාමිතිය පරිමාණයෙන් පාලනය වේ, නමුත් තවමත් නියම කළ යුතුය.

අවම සෞඛ්ය සම්පන්න ප්රතිශතය и උපරිම සියයට - යෙදවීමේදී කාර්යයේ හැසිරීම තීරණය කරන්න. පෙරනිමි අගයන් 100 සහ 200 වන අතර, යෙදවීමේදී කාර්යයන් ගණන කිහිප ගුණයකින් වැඩි වන අතර පසුව අපේක්ෂිත අගයට නැවත පැමිණෙනු ඇත. ඔබට min=1, සහ max=0 යන කාර්ය 100 ක් තිබේ නම්, එය යෙදවීමේදී එය මරා දමනු ඇත, ඉන්පසු නව එකක් ඉහළ නංවනු ඇත, එනම් එය අක්‍රීය වේ. 1 කාර්යයක් ක්‍රියාත්මක වන්නේ නම්, min=50, max=150, එවිට යෙදවීම කිසිසේත් සිදු නොවනු ඇත, මන්ද 1 කාර්යය අඩකින් බෙදීමට හෝ එකහමාරකින් වැඩි කිරීමට නොහැකි බැවිනි.

යෙදවීමේ වර්ගය - රෝලිං යාවත්කාලීනය තබන්න.

ස්ථානගත කිරීමේ සැකිලි - යන්ත්ර මත කාර්යයන් තැබීම සඳහා නීති. පෙරනිමිය AZ සමතුලිත පැතිරීමයි - මෙයින් අදහස් කරන්නේ සියලුම පවතින කලාපවල යන්ත්‍ර ඉහළ යන තෙක් සෑම නව කාර්යයක්ම නව අවස්ථාවක තබන බවයි. අපි සාමාන්‍යයෙන් කරන්නේ BinPack - CPU සහ Spread - AZ; මෙම ප්‍රතිපත්තිය සමඟින්, එක් CPU එකකට එක් යන්ත්‍රයක් මත කාර්යයන් හැකි තරම් ඝන ලෙස තබා ඇත. නව යන්ත්රයක් නිර්මාණය කිරීමට අවශ්ය නම්, එය නව ලබා ගත හැකි කලාපයක් තුළ නිර්මාණය කර ඇත.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

ලෝඩ් බැලන්සර් වර්ගය — Application Load Balancer තෝරන්න.

සේවා IAM භූමිකාව - තෝරා ecsServiceRole.

ලෝඩ් බැලන්සර් නම - කලින් සාදන ලද සමතුලිතකය තෝරන්න.

සෞඛ්‍ය පරීක්‍ෂණ සහන කාලය - නව කාර්යයක් ක්‍රියාත්මක කිරීමෙන් පසු සෞඛ්‍ය පරීක්‍ෂා කිරීමට පෙර විරාමයක් තබන්න, අපි සාමාන්‍යයෙන් එය තත්පර 60කට සකසන්නෙමු.

ශේෂය පැටවීමට කන්ටේනරය - ඉලක්ක කණ්ඩායම් නාම අයිතමයේ, කලින් සාදන ලද කණ්ඩායම තෝරන්න, එවිට සියල්ල ස්වයංක්‍රීයව පුරවනු ලැබේ.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

සේවා ස්වයං පරිමාණය - සේවා පරිමාණ පරාමිතීන්. ඔබගේ සේවාවේ අපේක්ෂිත ගණන සීරුමාරු කිරීමට සේවා ස්වයං පරිමාණය වින්‍යාස කරන්න තෝරන්න. පරිමාණය කිරීමේදී අපි අවම සහ උපරිම කාර්යයන් ගණන සකස් කරමු.

සේවා ස්වයංක්‍රීය පරිමාණය සඳහා IAM භූමිකාව - තෝරා AWSServiceRoleForApplicationAutoScaling_ECSService.

ස්වයංක්‍රීය කාර්ය පරිමාණ ප්‍රතිපත්ති - පරිමාණය සඳහා නීති. වර්ග 2 ක් ඇත:

  1. ඉලක්ක ලුහුබැඳීම — ලුහුබැඳීමේ ඉලක්ක මිනුම් (CPU/RAM භාවිතය හෝ එක් එක් කාර්යය සඳහා ඉල්ලීම් ගණන). උදාහරණයක් ලෙස, අපට සාමාන්‍ය ප්‍රොසෙසර භාරය 85% ක් වීමට අවශ්‍ය වේ, එය වැඩි වූ විට, එය ඉලක්ක අගයට ළඟා වන තෙක් නව කාර්යයන් එකතු වේ. බර අඩු නම්, ඊට පටහැනිව, විශාලනයට එරෙහිව ආරක්ෂාව සක්‍රීය කර නොමැති නම්, කාර්යයන් ඉවත් කරනු ලැබේ (පරිමාණය අබල කරන්න).
  2. පියවර පරිමාණය - අත්තනෝමතික සිදුවීමකට ප්රතික්රියාව. මෙහිදී ඔබට ඕනෑම සිදුවීමකට (CloudWatch Alarm) ප්‍රතික්‍රියාවක් වින්‍යාසගත කළ හැක, එය සිදු වූ විට, ඔබට නියමිත කාර්ය සංඛ්‍යාව එක් කිරීමට හෝ ඉවත් කිරීමට හෝ නිශ්චිත කාර්යයන් ගණන සඳහන් කිරීමට හැකිය.

සේවාවකට පරිමාණ නීති කිහිපයක් තිබිය හැකිය, මෙය ප්රයෝජනවත් විය හැකිය, ප්රධාන දෙය නම් ඔවුන් එකිනෙකා සමඟ ගැටුම් ඇති නොවන බව සහතික කිරීමයි.

නිගමනය

ඔබ උපදෙස් අනුගමනය කර එම ඩොකර් රූපය භාවිතා කළේ නම්, ඔබේ සේවාව මෙවැනි පිටුවක් ආපසු ලබා දිය යුතුය.

AWS Spot අවස්ථා මත පරිමාණය කළ හැකි API ගොඩනැගීම

  1. සේවාවේ ඇති සියලුම යන්ත්‍ර දියත් කරන පරිදි අපි අච්චුවක් සාදා ඇත. අච්චුව වෙනස් වූ විට යන්ත්‍ර යාවත්කාලීන කරන ආකාරය ද අපි ඉගෙන ගත්තෙමු.
  2. Spot instance stop signal සැකසීම අපි වින්‍යාස කර ඇත, එබැවින් එය ලැබීමෙන් පසු මිනිත්තුවක් ඇතුළත, සියලුම ධාවන කාර්යයන් යන්ත්‍රයෙන් ඉවත් කරනු ලැබේ, එබැවින් කිසිවක් නැති වී හෝ බාධා නොකෙරේ.
  3. යන්ත්‍ර හරහා බර ඒකාකාරව බෙදා හැරීම සඳහා අපි සමතුලිතකය ඔසවා තැබුවෙමු.
  4. යන්ත්‍ර පිරිවැය 3 ගුණයකින් පමණ අඩු කරන ස්ථානීය අවස්ථා මත ක්‍රියාත්මක වන සේවාවක් අපි නිර්මාණය කර ඇත්තෙමු.
  5. අපි අක්‍රීය කාල පිරිවැයක් දැරීමෙන් තොරව වැඩි වැඩ බරක් හැසිරවීමට දෙපැත්තටම ස්වයං පරිමාණය වින්‍යාස කර ඇත.
  6. අපි ධාරිතාව සපයන්නා භාවිතා කරන අතර එමඟින් යෙදුම යටිතල පහසුකම් (යන්ත්‍ර) කළමනාකරණය කරන අතර අනෙක් අතට නොවේ.
  7. අපි නියමයි.

ඔබට බරෙහි පුරෝකථනය කළ හැකි කරල් තිබේ නම්, උදාහරණයක් ලෙස ඔබ විශාල විද්‍යුත් තැපැල් ව්‍යාපාරයක ප්‍රචාරණය කරන්නේ නම්, ඔබට පරිමාණය සැකසිය හැක කාල සටහන.

ඔබේ පද්ධතියේ විවිධ කොටස් වලින් දත්ත මත පදනම්ව ඔබට පරිමාණය කළ හැක. උදාහරණයක් ලෙස, අපට ක්‍රියාකාරීත්වය ඇත තනි ප්‍රවර්ධන දීමනා යැවීම ජංගම යෙදුම භාවිතා කරන්නන්. සමහර විට ව්‍යාපාරයක් මිලියන 1+ පුද්ගලයින් වෙත යවනු ලැබේ. එවැනි බෙදා හැරීමකින් පසු, බොහෝ පරිශීලකයින් එකවර යෙදුමට ලොග් වන බැවින්, API වෙත ඉල්ලීම්වල විශාල වැඩිවීමක් පවතී. එබැවින් ප්‍රවර්ධන තල්ලු දැනුම්දීම් යැවීම සඳහා පෝලිමේ සැලකිය යුතු තරම් සම්මත දර්ශක ඇති බව අපට පෙනෙන්නේ නම්, අපට වහාම පැටවීමට සූදානම් වීමට අමතර යන්ත්‍ර සහ කාර්යයන් කිහිපයක් දියත් කළ හැකිය.

ස්ථානීය අවස්ථා සහ ECS භාවිතා කිරීම හෝ පරිමාණය පිළිබඳ යමක් ඔබ අදහස් දැක්වීමේදී මට පැවසුවහොත් මම සතුටු වෙමි.

අපි ප්‍රධාන වශයෙන් සේවාදායක රහිත තොගයක් (මුදල් සහිත) මත තත්පරයකට විශ්ලේෂණාත්මක සිදුවීම් දහස් ගණනක් සකසන ආකාරය සහ GitLab CI සහ Terraform Cloud භාවිතයෙන් සේවා යෙදවීම ක්‍රියා කරන ආකාරය පිළිබඳ ලිපි ළඟදීම ලැබෙනු ඇත.

අප වෙත දායක වන්න, එය රසවත් වනු ඇත!

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

නිෂ්පාදනයේදී ඔබ ස්ථානීය අවස්ථා භාවිතා කරනවාද?

  • 22,2%ඔව්6

  • 66,7%18

  • 11,1%මම ඒවා ගැන ලිපියකින් ඉගෙන ගත් අතර ඒවා භාවිතා කිරීමට සැලසුම් කර ඇත3

පරිශීලකයින් 27 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 5 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න