سلام و ټولو ته! زما نوم کیریل دی، زه په اډاپټی کې CTO یم. زموږ ډیری جوړښت په AWS کې دی ، او نن به زه پدې اړه وغږیږم چې څنګه موږ د تولید چاپیریال کې د ځای مثالونو په کارولو سره د سرور لګښتونه 3 ځله کم کړل ، او همدارنګه د دوی د اتومات اندازه کولو تنظیم کولو څرنګوالی. لومړی به یوه کتنه وي چې دا څنګه کار کوي، او بیا د پیل کولو لپاره تفصيلي لارښوونې.
د سپاټ مثالونه څه دي؟
لاندې یو څو سکرین شاټونه دي چې د ځای مثالونو لپاره د نرخ تاریخ ښیې.
m5.large په eu-west-1 (آیرلینډ) سیمه کې. نرخ د 3 میاشتو لپاره خورا مستحکم دی ، اوس مهال 2.9x خوندي کوي.
m5.large د متحده ایالاتو په ختیځ - 1 سیمه کې (N. ویرجینیا). نرخ په دوامداره توګه د 3 میاشتو په اوږدو کې بدلیږي ، دا مهال د شتون زون پورې اړه لري له 2.3x څخه تر 2.8x پورې خوندي کوي.
t3.small د متحده ایالاتو په ختیځ - 1 سیمه کې (N. ویرجینیا). قیمت د 3 میاشتو لپاره مستحکم دی، اوس مهال 3.4x خوندي کوي.
د خدماتو جوړښت
د خدماتو بنسټیز جوړښت چې موږ به یې په دې مقاله کې خبرې وکړو په لاندې انځور کې ښودل شوي.
د غوښتنلیک بار بیلانسر → EC2 هدف ګروپ → لچک لرونکي کانټینر خدمت
د غوښتنلیک بار بیلانسر (ALB) د بیلانس په توګه کارول کیږي، کوم چې د EC2 هدف ګروپ (TG) ته غوښتنې لیږي. TG د ALBs لپاره په مثالونو کې د بندرونو خلاصولو او د لچک لرونکي کانټینر خدماتو (ECS) کانټینرونو بندرونو سره د وصل کولو مسؤلیت لري. ECS په AWS کې د Kubernetes یو انالوګ دی، کوم چې د ډاکر کانټینرونه اداره کوي.
یو مثال کولی شي د ورته بندرونو سره څو چلونکي کانټینرونه ولري ، نو موږ نشو کولی دوی په ثابت ډول تنظیم کړو. ECS TG ته وايي چې دا یو نوی دنده پیل کوي (د کوبرنیټس په اصطلاح کې دې ته پوډ ویل کیږي)، دا په مثال کې د وړیا بندرونو لپاره ګوري او یو له دوی څخه پیل شوي دندې ته ګماري. TG هم په منظم ډول ګوري چې ایا مثال او API د روغتیا معاینې په کارولو سره پدې باندې کار کوي، او که دا کومه ستونزه ویني، دا هلته د غوښتنو لیږل بندوي.
د EC2 آٹو سکیلینګ ګروپونه + د ECS ظرفیت چمتو کونکي
پورتني ډیاګرام د EC2 آٹو سکیلینګ ګروپونو (ASG) خدمت نه ښیې. د نوم څخه تاسو پوهیږئ چې دا د پیمانه کولو مثالونو لپاره مسؤل دی. په هرصورت، تر دې وروستیو پورې، AWS د ECS څخه د چلولو ماشینونو شمیر اداره کولو لپاره جوړ شوی وړتیا نه درلوده. ECS دا ممکنه کړې چې د دندو شمیر اندازه کړي، د بیلګې په توګه، د CPU کارول، RAM یا د غوښتنو شمیر. مګر که کارونه ټول وړیا مثالونه ونیسي، نو نوي ماشینونه په اوتومات ډول ندي رامینځته شوي.
دا د ECS ظرفیت چمتو کونکو (ECS CP) په راتګ سره بدل شوی. اوس په ECS کې هر خدمت کولی شي د ASG سره تړاو ولري، او که دندې په روان حالتونو کې مناسب نه وي، نو نوي به پورته شي (مګر د ASG تاسیس شوي حدود کې). دا په مخالف لوري کې هم کار کوي، که د ECS CP بې کاره مثالونه د دندو پرته وګوري، نو دا به د ASG قوماندې ورکړي چې دوی بند کړي. ECS CP د دې وړتیا لري چې د مثال بار کولو هدف سلنه مشخص کړي ، نو د دې لپاره چې یو مشخص شمیر ماشینونه تل د ګړندي اندازه کولو کارونو لپاره وړیا وي؛ زه به لږ وروسته پدې اړه وغږیږم.
د EC2 لانچ ټیمپلیټونه
وروستی خدمت چې زه به یې د دې زیربنا رامینځته کولو په اړه توضیحاتو ته د تګ دمخه خبرې وکړم د EC2 لانچ ټیمپلیټونه دي. دا تاسو ته اجازه درکوي یوه ټیمپلیټ رامینځته کړئ چې له مخې به یې ټول ماشینونه پیل شي ، ترڅو دا هر ځل له سکریچ څخه تکرار نشي. دلته تاسو کولی شئ د پیل کولو ماشین ډول وټاکئ، امنیتي ګروپ، د ډیسک انځور او ډیری نور پیرامیټونه. تاسو کولی شئ د کارونکي ډیټا هم مشخص کړئ چې په ټولو پیل شوي مثالونو کې به اپلوډ شي. تاسو کولی شئ د کارن ډیټا کې سکریپټونه چل کړئ، د بیلګې په توګه، تاسو کولی شئ د فایل مینځپانګې سم کړئ
د دې مقالې لپاره یو له خورا مهم ترتیب کولو پیرامیټرو څخه دی
د ډیسک په اړه - AWS په دې وروستیو کې
د خدمت جوړول
راځئ چې د بیان شوي خدمت رامینځته کولو ته لاړ شو. په پروسه کې، زه به یو شمیر ګټور ټکي هم بیان کړم چې پورته ذکر شوي ندي. په عموم کې، دا یو ګام په ګام لارښوونه ده، مګر زه به ځینې خورا بنسټیز یا په برعکس، خورا ځانګړي قضیې په پام کې ونیسم. ټولې کړنې په AWS بصری کنسول کې ترسره کیږي، مګر د CloudFormation یا Terraform په کارولو سره په پروګرام کې بیا تولید کیدی شي. په اډاپټي کې موږ Terraform کاروو.
د EC2 لانچ ټیمپلیټ
دا خدمت د ماشینونو ترتیب رامینځته کوي چې کارول کیږي. ټیمپلیټونه په EC2 -> مثالونو -> لانچ ټیمپلیټ برخه کې اداره کیږي.
د ایمیزون ماشین عکس (AMI) - د ډیسک عکس مشخص کړئ چې ورسره به ټول مثالونه پیل شي. د ECS لپاره، په ډیری قضیو کې دا د ایمیزون څخه غوره شوي عکس کارولو ارزښت لري. دا په منظمه توګه تازه کیږي او د ECS کار کولو لپاره اړین هرڅه لري. د اوسني عکس ID موندلو لپاره، پاڼې ته لاړ شئ
د مثال ډول - د مثال ډول په ګوته کړئ. هغه یو غوره کړئ چې ستاسو د دندې سره مناسب وي.
کلیدي جوړه (ننوتل) - یو سند مشخص کړئ چې ورسره تاسو کولی شئ د SSH له لارې مثال سره وصل شئ ، که اړتیا وي.
د شبکې امستنې - د شبکې پیرامیټونه مشخص کړئ. د شبکې پلیټ فارم په ډیری قضیو کې باید یو مجازی شخصي کلاوډ (VPC) وي. امنیتی ډلې - ستاسو د مثالونو لپاره امنیتي ډلې. له هغه ځایه چې موږ به د مثالونو په وړاندې بیلانس وکاروو ، زه وړاندیز کوم چې دلته یوه ډله مشخص کړم چې یوازې د بیلانسر څخه راتلونکو اړیکو ته اجازه ورکوي. دا دی، تاسو به 2 امنیتي ګروپونه ولرئ، یو د بیلانس لپاره، کوم چې د هر ځای څخه د 80 (http) او 443 (https) په بندرونو کې د داخلي اړیکو ته اجازه ورکوي، او دویم د ماشینونو لپاره، کوم چې د بیلانس ګروپ څخه په هر بندر کې راتلونکو اړیکو ته اجازه ورکوي. . په دواړو ګروپونو کې بهرنۍ اړیکې باید د TCP پروتوکول په کارولو سره ټولو بندرونو ته ټولو ادرسونو ته پرانستل شي. تاسو کولی شئ د وتلو اړیکو لپاره بندرونه او پتې محدود کړئ، مګر بیا تاسو اړتیا لرئ چې په دوامداره توګه څارنه وکړئ چې تاسو په تړل شوي بندر کې یو څه ته د لاسرسي هڅه نه کوئ.
ذخیره (حجم) - د ماشینونو لپاره د ډیسک پیرامیټونه مشخص کړئ. د ډیسک اندازه نشي کولی په AMI کې له مشخص شوي څخه کم وي؛ د ECS مطلوب لپاره دا 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=...
- د شخصي کانټینر راجسټری سره د پیوستون پیرامیټونه ، چیرې چې ستاسو د ډاکر عکسونه زیرمه شوي. که دا عامه وي، نو تاسو اړتیا نلرئ کوم څه مشخص کړئ.
د دې مقالې اهدافو لپاره ، زه به د ډاکر هب څخه عامه عکس وکاروم ، نو پیرامیټونه مشخص کړئ ECS_ENGINE_AUTH_TYPE
и ECS_ENGINE_AUTH_DATA
اړتیا نشته
ښه پوهیدل: دا سپارښتنه کیږي چې په منظمه توګه AMI تازه کړئ، ځکه چې نوې نسخې د ډاکر، لینکس، ECS اجنټ، او نور نسخې تازه کوي ترڅو دا هیر نکړي، تاسو کولی شئ.
د EC2 آٹو سکیلینګ ګروپ
د آټو سکیلینګ ګروپ د مثالونو پیل کولو او اندازه کولو مسؤلیت لري. ګروپونه په EC2 -> د اتومات اندازه کولو -> د اتومات اندازه کولو ګروپونو برخه کې اداره کیږي.
ټیمپلیټ لانچ کړئ - هغه ټیمپلیټ غوره کړئ چې په تیر مرحله کې رامینځته شوی. موږ ډیفالټ نسخه پریږدو.
د پیرود اختیارونه او د مثال ډولونه - د کلستر لپاره د مثالونو ډولونه مشخص کړئ. د لانچ ټیمپلیټ تعقیب کول د لانچ ټیمپلیټ څخه د مثال ډول کاروي. د پیرود اختیارونه او د مثال ډولونه یوځای کول تاسو ته اجازه درکوي په انعطاف سره د مثال ډولونه تنظیم کړئ. موږ به یې وکاروو.
د غوښتنې پر اساس اختیاري - د منظم، غیر ځای مثالونو شمیر چې تل به کار وکړي.
د غوښتنې پر اساس سلنه پورته - د عادي او ځایي مثالونو سلنه تناسب، 50-50 به په مساوي توګه وویشل شي، 20-80 د هر منظم مثال لپاره 4 ځایونه به لوړ شي. د دې مثال د موخو لپاره، زه به 50-50 ته اشاره وکړم، مګر په حقیقت کې موږ ډیری وختونه 20-80 کوو، په ځینو مواردو کې 0-100.
د بېلګې ډولونه - دلته تاسو کولی شئ د مثالونو اضافي ډولونه مشخص کړئ چې په کلستر کې به کارول کیږي. موږ هیڅکله دا کار نه دی کړی ځکه چې زه واقعیا د کیسې په معنی نه پوهیږم. شاید دا د ځانګړو ډولونو محدودیتونو له امله وي، مګر دوی په اسانۍ سره د مالتړ له لارې زیات کیدی شي. که تاسو غوښتنلیک پیژنئ ، زه به خوښ شم چې په نظرونو کې یې ولولئ)
شبکه - د شبکې تنظیمات، د ماشینونو لپاره VPC او فرعي نیټونه غوره کړئ، په ډیری مواردو کې تاسو باید ټول موجود سبنیټونه غوره کړئ.
د بار توازن - د توازن تنظیمات، مګر موږ به دا په جلا توګه ترسره کړو، موږ به دلته هیڅ شی ته لاس ورنکړو. روغتیایی معاینات وروسته به هم ترتیب شي.
د ګروپ اندازه - موږ په کلستر کې د ماشینونو شمیر او په پیل کې د ماشینونو مطلوب شمیر محدودیتونه په ګوته کوو. په کلستر کې د ماشینونو شمیر به هیڅکله د لږترلږه ټاکل شوي حد څخه کم او له اعظمي څخه ډیر نه وي، حتی که اندازه کول باید د میټریکونو سره سم واقع شي.
د اندازه کولو پالیسي - د اندازه کولو پیرامیټونه، مګر موږ به د ECS د چلولو دندو پر بنسټ اندازه کړو، نو موږ به وروسته اندازه کول تنظیم کړو.
د مثال په اندازه کې محافظت - د کمولو په وخت کې د حذف کیدو څخه د مثالونو ساتنه. موږ دا فعال کړو ترڅو ASG هغه ماشین حذف نکړي چې چلونکي دندې لري. د ECS ظرفیت چمتو کونکی به د هغو مواردو لپاره محافظت غیر فعال کړي چې دندې نلري.
ټاګونه اضافه کړئ - تاسو کولی شئ د مثالونو لپاره ټاګونه مشخص کړئ (د دې لپاره ، د ټاګ نوي مثالونه چیک باکس باید چیک شي). زه د نوم ټګ مشخص کولو وړاندیز کوم ، بیا ټول هغه مثالونه چې په ګروپ کې پیل شوي به ورته نوم ولري ، او دا په کنسول کې د لیدلو لپاره مناسب دی.
د ګروپ د جوړولو وروسته، دا خلاص کړئ او د پرمختللو تشکیلاتو برخې ته لاړ شئ. ولې ټول انتخابونه په کنسول کې د جوړولو په مرحله کې نه لیدل کیږي.
د ختمولو تګلارې - هغه مقررات چې د مثالونو د حذف کولو په وخت کې په پام کې نیول کیږي. دوی په ترتیب سره پلي کیږي. موږ معمولا په لاندې عکس کې هغه کاروو. لومړی، د زوړ لانچ ټیمپلیټ سره مثالونه حذف شوي (د مثال په توګه، که موږ AMI تازه کړو، نو موږ یوه نوې نسخه جوړه کړه، مګر ټول مثالونه یې په بدلولو کې اداره شوي). بیا هغه مثالونه چې راتلونکي بلینګ ساعت ته نږدې دي غوره شوي. او بیا ترټولو زاړه د لانچ نیټې پراساس غوره شوي.
ښه پوهیدل: په کلستر کې د ټولو ماشینونو تازه کولو لپاره، د کارولو لپاره مناسب
د غوښتنلیک بار بیلانسر او د EC2 هدف ګروپ
بیلانسر په EC2 برخه کې رامینځته شوی → د بار توازن → د بار توازن. موږ به د غوښتنلیک لوډ بیلانسر وکاروو؛ د بیلانس مختلف ډولونو پرتله کول په کې لوستل کیدی شي
اوریدونکي - دا د 80 او 443 بندرونو رامینځته کولو لپاره معنی لري او وروسته د بیلانس مقرراتو په کارولو سره له 80 څخه تر 443 پورې لارښود کړئ.
د شتون زونونه - په ډیری مواردو کې، موږ د هرچا لپاره د لاسرسي زونونه غوره کوو.
د امنیت ترتیبات تنظیم کړئ - د بیلانس لپاره د SSL سند دلته ښودل شوی، ترټولو مناسب انتخاب دی ELBSecurityPolicy-2016-08
. د بیلانس رامینځته کولو وروسته ، تاسو به یې وګورئ د DNS نوم، کوم چې تاسو اړتیا لرئ د خپل ډومین لپاره CNAME ترتیب کړئ. د مثال په توګه، دا په Cloudflare کې دا څنګه ښکاري.
امنیتي ګروپ - د بیلانس لپاره د امنیت ګروپ رامینځته کړئ یا غوره کړئ ، ما د دې په اړه نور څه یوازې د EC2 لانچ ټیمپلیټ → د شبکې تنظیماتو برخه کې لیکلي.
هدف ډله - موږ یوه ډله رامینځته کوو چې د بیلانسر څخه ماشینونو ته د غوښتنو لیږلو مسؤلیت لري او د دوی شتون چیک کوي ترڅو د ستونزو په صورت کې یې ځای په ځای کړي. د هدف ډول باید مثال وي، پروتوکول и بندر هر، که تاسو د بیلانس او مثالونو ترمنځ د اړیکو لپاره HTTPS کاروئ، نو تاسو اړتیا لرئ چې دوی ته یو سند اپلوډ کړئ. د دې مثال د موخو لپاره، موږ به دا کار ونه کړو، موږ به په ساده ډول 80 پورټ پریږدو.
روغتیایی معاینات - د خدمت فعالیت چک کولو لپاره پیرامیټونه. په ریښتینې خدمت کې، دا باید یو جلا غوښتنه وي چې د سوداګرۍ منطق مهمې برخې پلي کوي؛ د دې مثال لپاره، زه به د ډیفالټ ترتیبات پریږدم. بیا، تاسو کولی شئ د غوښتنې وقفه، وخت پای، د بریالیتوب کوډونه، او نور وټاکئ. زموږ په مثال کې، موږ به د بریالیتوب کوډونه 200-399 په ګوته کړو، ځکه چې د ډاکر عکس چې کارول کیږي د 304 کوډ بیرته راګرځوي.
د هدفونو ثبتول - دلته د ګروپ لپاره موټرونه غوره شوي، مګر زموږ په قضیه کې دا به د ECS لخوا ترسره شي، نو موږ یوازې دا ګام پریږدو.
ښه پوهیدل: د توازن په کچه تاسو کولی شئ هغه لاګونه فعال کړئ چې په S3 کې به په یو مشخص ډول خوندي شي
د ECS کاري تعریف
په تیرو مرحلو کې، موږ د خدماتو زیربنا پورې اړوند هرڅه رامینځته کړل؛ اوس موږ د کانټینرونو تشریح کولو ته ځو چې موږ به یې پیل کړو. دا په ECS → د کاري تعریفونو برخه کې ترسره کیږي.
لانچ ډول مطابقت - EC2 غوره کړئ.
د دندې اجرا کولو IAM رول - غوره کړه ecsTaskExecutionRole
. د دې په کارولو سره ، لاګونه لیکل شوي ، پټ متغیرونو ته لاسرسی ورکول کیږي ، او داسې نور.
د کانټینر تعریفونو برخه کې، د کانټینر اضافه کول کلیک وکړئ.
د انځور - د پروژې کوډ سره عکس ته لینک؛ د دې مثال لپاره زه به د ډاکر هب څخه عامه عکس وکاروم
د حافظې محدودیتونه - د کانټینر لپاره د حافظې محدودیت. سخت محدودیت - سخت حد، که کانټینر د ټاکل شوي ارزښت څخه بهر وي، د ډاکر وژنې کمانډ به اجرا شي، کانټینر به سمدلاسه مړ شي. نرم محدودیت - نرم حد، کانټینر کولی شي د ټاکل شوي ارزښت څخه بهر لاړ شي، مګر دا پیرامیټر به په پام کې ونیول شي کله چې په ماشینونو کې دندې ترسره کیږي. د مثال په توګه، که یو ماشین 4 ګیګابایټ RAM ولري، او د کانټینر نرم حد 2048 MiB وي، نو دا ماشین کولی شي د دې کانټینر سره د 2 چلولو دندې ترسره کړي. په حقیقت کې، د RAM 4 GiB د 4096 MiB څخه لږ څه لږ دی، دا په کلستر کې د ECS مثالونو ټب کې لیدل کیدی شي. نرم حد د سخت حد څخه ډیر نشي کیدی. دا مهمه ده چې پوه شي چې که چیرې په یوه دنده کې څو کانټینرونه شتون ولري، نو د دوی محدودیتونه لنډ شوي.
د بندر نقشه - په کوربه بندر موږ 0 ته اشاره کوو، دا پدې مانا ده چې بندر به په متحرک ډول وټاکل شي او د هدف ګروپ لخوا به څارنه وشي. د کانټینر بندر - هغه بندر چې ستاسو غوښتنلیک پرمخ وړي ډیری وختونه د اجرا کولو کمانډ کې مشخص شوي ، یا ستاسو د غوښتنلیک کوډ ، ډاکر فایل ، او داسې نور کې ټاکل شوي. زموږ د مثال لپاره موږ به 3000 وکاروو ځکه چې دا لیست شوی
د روغتیا معاینه - د کانټینر روغتیا معاینه پیرامیټونه، د هدف ګروپ کې ترتیب شوي یو سره ګډوډ نه وي.
د چاپیریال - د چاپیریال ترتیبات. د CPU واحدونه - د حافظې محدودیتونو ته ورته ، یوازې د پروسیسر په اړه. د هر پروسیسر کور 1024 واحدونه دي، نو که چیرې سرور دوه ګونی کور پروسیسر ولري او کانټینر 512 ته ټاکل شوی وي، نو د دې کانټینر سره 4 دندې په یو سرور کې پیل کیدی شي. د CPU واحدونه تل د کور شمیر سره مطابقت لري؛ د دوی څخه لږ څه نشي کیدی، لکه څنګه چې د حافظې قضیه ده.
د قوماندې - د کانټینر دننه د خدمت پیل کولو قومانده، ټول پیرامیټونه د کوما لخوا جلا شوي مشخص شوي. دا کیدای شي gunicorn، npm، او داسې نور وي. که مشخص نه وي، د Dockerfile څخه د CMD لارښود ارزښت به وکارول شي. موږ اشاره کوو npm,start
.
د چاپیریال تغیرات - د کانټینر چاپیریال تغیرات. دا کیدای شي د ساده متن ډاټا یا د پټو متغیرونو څخه وي
ذخیره کول او ننوتل - دلته به موږ د CloudWatch Logs کې لاګنګ تنظیم کړو (د AWS څخه د لاګونو لپاره خدمت). د دې کولو لپاره ، یوازې د اتوماتیک تنظیم کولو کلاوډ واچ لاګ چیک باکس فعال کړئ. د ټاسک تعریف رامینځته کولو وروسته ، د لاګونو یوه ډله به په اوتومات ډول په کلاوډ واچ کې رامینځته شي. په ډیفالټ کې ، لاګونه په غیر مستقیم ډول په دې کې زیرمه شوي؛ زه وړاندیز کوم د ساتلو موده له هیڅکله نه ختمیدو څخه اړین مودې ته بدله کړئ. دا په CloudWatch Log ګروپونو کې ترسره کیږي، تاسو اړتیا لرئ په اوسني دوره کې کلیک وکړئ او یو نوی وټاکئ.
د ECS کلستر او د ECS ظرفیت چمتو کونکي
د کلستر جوړولو لپاره د ECS → کلستر برخې ته لاړ شئ. موږ د ټیمپلیټ په توګه EC2 لینکس + شبکه غوره کوو.
د کلستر نوم - ډیر مهم، موږ دلته ورته نوم جوړوو لکه څنګه چې د لانچ ټیمپلیټ پیرامیټر کې مشخص شوی ECS_CLUSTER
زموږ په قضیه کې - DemoApiClusterProd
. د خالي کلستر جوړول چیک باکس چیک کړئ. په اختیاري توګه، تاسو کولی شئ د کانټینر بصیرت فعال کړئ ترڅو په CloudWatch کې د خدماتو میټریک وګورئ. که تاسو هرڅه سم ترسره کړي ، نو د ECS مثالونو برخه کې به تاسو هغه ماشینونه وګورئ چې د آټو سکیلینګ ګروپ کې رامینځته شوي.
ټب ته لاړ شئ د ظرفیت برابرونکي او یو نوی جوړ کړئ. اجازه راکړئ تاسو ته یادونه وکړم چې د ECS د چلولو دندو شمیر پورې اړه لري د ماشینونو رامینځته کولو او بندولو کنټرول ته اړتیا ده. دا مهمه ده چې په یاد ولرئ چې یو وړاندیز کوونکی یوازې یوې ډلې ته ټاکل کیدی شي.
د اتومات اندازه کولو ډله - مخکې جوړ شوی ګروپ غوره کړئ.
منظم اندازه کول - دا فعال کړئ ترڅو چمتو کونکی کولی شي خدمت اندازه کړي.
د هدف ظرفیت٪ - د دندو سره بار شوي ماشینونه څومره سلنه ته اړتیا لرو. که تاسو 100٪ مشخص کړئ، نو ټول ماشینونه به تل د چلولو کارونو سره بوخت وي. که تاسو 50٪ مشخص کړئ، نو نیمایي موټر به تل وړیا وي. پدې حالت کې ، که چیرې په بار کې ګړندی کود وي ، نو نوي ټکسي به سمدلاسه وړیا موټرو ته ورسیږي ، پرته لدې چې د ګمارلو مثالونو ته انتظار وکړي.
د ختمولو محافظت اداره شوی - فعال کړئ ، دا پیرامیټر چمتو کونکي ته اجازه ورکوي چې د حذف کولو څخه د مثالونو محافظت لرې کړي. دا پیښیږي کله چې په ماشین کې هیڅ فعاله دندې شتون نلري او د هدف ظرفیت٪ ته اجازه ورکوي.
د ECS خدمت او اندازه کولو ترتیب
وروستی ګام :) د خدماتو رامینځته کولو لپاره ، تاسو اړتیا لرئ د خدماتو ټب کې دمخه رامینځته شوي کلستر ته لاړشئ.
د لانچ ډول - تاسو اړتیا لرئ د ظرفیت چمتو کونکي ستراتیژۍ ته لاړشئ کلیک وکړئ او دمخه رامینځته شوي چمتو کونکي غوره کړئ.
د دندې تعریف - مخکې جوړ شوی کاري تعریف او بیاکتنه غوره کړئ.
د خدمت نوم - د ګډوډۍ څخه مخنیوي لپاره، موږ تل د کاري تعریف په څیر ورته اشاره کوو.
د خدمت ډول - تل نقل.
د دندو شمیر - په خدمت کې د فعالو دندو مطلوب شمیر. دا پیرامیټر د اندازه کولو لخوا کنټرول کیږي، مګر بیا هم باید مشخص شي.
لږترلږه صحي سلنه и اعظمي سلنه - د ګمارنې پرمهال د دندو چلند مشخص کړئ. ډیفالټ ارزښتونه 100 او 200 دي ، دا په ګوته کوي چې د پلي کولو په وخت کې به د دندو شمیر څو ځله زیات شي ، او بیا مطلوب ارزښت ته راستون شي. که تاسو 1 دنده پرمخ وړئ، دقیقه = 0، او اعظمي = 100، نو د ځای په ځای کولو کې به وژل شي، او له هغې وروسته به یو نوی پورته شي، دا به د ځنډ وخت وي. که چیرې 1 دنده روانه وي، دقیقه = 50، اعظمي = 150، نو بیا ځای پرځای کول به هیڅکله پیښ نشي، ځکه چې 1 دنده په نیمایي کې نشي ویشل کیدی یا یو نیم ځله زیات شي.
د ځای پرځای کولو ډول - د رولینګ تازه کول پریږدئ.
د ځای پرځای کولو کينډۍ - په ماشینونو کې د دندو د ترسره کولو لپاره مقررات. ډیفالټ د AZ متوازن سپیډ دی - پدې معنی چې هر نوی دنده به په نوي مثال کې ځای په ځای شي تر هغه چې ماشینونه په ټولو موجودو زونونو کې لوړ شي. موږ معمولا BinPack - CPU او Spread - AZ کوو؛ د دې تګلارې سره، دندې په هر CPU کې په یوه ماشین کې د امکان تر حده په کثافاتو کې ځای پر ځای کیږي. که دا اړینه وي چې یو نوی ماشین جوړ کړئ، دا د نوي موجودیت زون کې رامینځته کیږي.
د بار بیلانس ډول - د غوښتنلیک بار بیلانس غوره کړئ.
خدمت IAM رول - غوره کړه ecsServiceRole
.
د بار بیلانس نوم - مخکې جوړ شوی بیلانس غوره کړئ.
د روغتیا معاینې د فضل موده - د نوي دندې له پیلولو وروسته د روغتیا معایناتو ترسره کولو دمخه وقفه وکړئ ، موږ معمولا دا 60 ثانیو ته تنظیم کوو.
د توازن بارولو لپاره کانټینر - د هدف ګروپ نوم توکي کې، مخکې جوړ شوی ګروپ غوره کړئ، او هرڅه به په اتوماتيک ډول ډک شي.
د خدماتو اتومات اندازه کول - د خدماتو اندازه کولو پیرامیټونه. د خپل خدمت مطلوب شمیر تنظیمولو لپاره د خدماتو اتومات اندازه کول تنظیم کړئ غوره کړئ. موږ د اندازه کولو په وخت کې د دندو لږترلږه او اعظمي شمیر تنظیم کوو.
د خدماتو اتومات اندازه کولو لپاره د IAM رول - غوره کړه AWSServiceRoleForApplicationAutoScaling_ECSService
.
د اتوماتیک کاري اندازه کولو پالیسۍ - د اندازه کولو قواعد. دوه ډوله دي:
- د هدف تعقیب - د هدف میټریک تعقیب کول (د CPU/RAM کارول یا د هرې دندې لپاره د غوښتنو شمیر). د مثال په توګه، موږ غواړو د اوسط پروسیسر بار 85٪ وي، کله چې دا لوړ شي، نوي دندې به اضافه شي تر هغه چې هدف ارزښت ته ورسیږي. که چیرې بار ټیټ وي ، نو دندې به لرې شي ، برعکس ، پرته لدې چې د پیمانه کولو پروړاندې محافظت فعال شوی وي (پیمانه غیر فعال کړئ).
- د ګام اندازه کول - د خپل سري پیښې غبرګون. دلته تاسو کولی شئ د هرې پیښې لپاره عکس العمل تنظیم کړئ (د کلاوډ واچ الارم) ، کله چې پیښ شي ، تاسو کولی شئ د دندو مشخص شمیر اضافه یا لرې کړئ ، یا د دندو دقیق شمیر مشخص کړئ.
یو خدمت ممکن د اندازه کولو ډیری مقررات ولري، دا ګټور کیدی شي، اصلي شی دا دی چې ډاډ ترلاسه شي چې دوی د یو بل سره ټکر نه کوي.
پایلې
که تاسو لارښوونې تعقیب کړئ او ورته ډاکر عکس وکاروئ، ستاسو خدمت باید د دې په څیر یوه پاڼه بیرته راولي.
- موږ یو ټیمپلیټ رامینځته کړی چې له مخې یې په خدمت کې ټول ماشینونه په لاره اچول شوي. موږ دا هم زده کړل چې څنګه ماشینونه تازه کړو کله چې ټیمپلیټ بدل شي.
- موږ د ځای مثال سټاپ سیګنال پروسس تنظیم کړی ، نو د ترلاسه کولو وروسته په یوه دقیقه کې ، ټولې روانې دندې له ماشین څخه لرې کیږي ، نو هیڅ شی له لاسه نه ورکول کیږي یا مداخله کیږي.
- موږ بیلانسر پورته کړ ترڅو بار په مساوي ډول په ماشینونو کې توزیع کړو.
- موږ یو خدمت رامینځته کړی چې په ځای کې پرمخ ځي، کوم چې د ماشین لګښتونه شاوخوا 3 ځله کموي.
- موږ په دواړو لارښوونو کې اتوماتیک کول تنظیم کړي ترڅو د کاري بارونو ډیروالي اداره کړي پرته لدې چې د کم وخت لګښتونه مصرف کړي.
- موږ د ظرفیت چمتو کونکي کاروو ترڅو غوښتنلیک زیربنا (ماشینونه) اداره کړي او نه بل ډول.
- موږ عالي یو.
که تاسو په بار کې د وړاندوینې وړ سپکونه لرئ ، د مثال په توګه تاسو په لوی بریښنالیک کمپاین کې اعلان کوئ ، تاسو کولی شئ اندازه کول تنظیم کړئ
تاسو کولی شئ د خپل سیسټم مختلف برخو څخه د معلوماتو پراساس هم اندازه کړئ. د مثال په توګه، موږ فعالیت لرو
زه به خوښ شم که تاسو ما ته په نظرونو کې د ځای مثالونو او ECS کارولو په زړه پورې قضیې یا د اندازه کولو په اړه څه ووایاست.
ډیر ژر به پدې اړه مقالې شتون ولري چې څنګه موږ په هر ثانیه کې په زرګونو تحلیلي پیښې په عمده ډول بې سرور سټیک (د پیسو سره) پروسس کوو او د GitLab CI او Terraform کلاوډ په کارولو سره د خدماتو پلي کول څنګه کار کوي.
زموږ سره ګډون وکړئ، دا به په زړه پورې وي!
یوازې راجستر شوي کاروونکي کولی شي په سروې کې برخه واخلي.
ایا تاسو په تولید کې د ځای مثالونه کاروئ؟
-
۸۵٪هو 6
-
۸۵٪نه 18
-
۸۵٪ما د دوی په اړه د یوې مقالې څخه زده کړل او د دوی کارولو پلان یې 3
27 کاروونکو رایه ورکړه. 5 کاروونکي منع شوي.
سرچینه: www.habr.com