د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

سلام و ټولو ته! زما نوم کیریل دی، زه په اډاپټی کې CTO یم. زموږ ډیری جوړښت په AWS کې دی ، او نن به زه پدې اړه وغږیږم چې څنګه موږ د تولید چاپیریال کې د ځای مثالونو په کارولو سره د سرور لګښتونه 3 ځله کم کړل ، او همدارنګه د دوی د اتومات اندازه کولو تنظیم کولو څرنګوالی. لومړی به یوه کتنه وي چې دا څنګه کار کوي، او بیا د پیل کولو لپاره تفصيلي لارښوونې.

د سپاټ مثالونه څه دي؟

ځای مثالونه د نورو AWS کاروونکو سرورونه دي چې دا مهال بې کاره دي، او دوی یې په لوی تخفیف پلوري (ایمیزون تر 90٪ پورې لیکي، زموږ په تجربه کې ~ 3x، د سیمې، AZ او مثال ډول پورې اړه لري). د منظمو څخه د دوی اصلي توپیر دا دی چې دوی کولی شي په هر وخت کې بند شي. له همدې امله، د اوږدې مودې لپاره موږ باور درلود چې دا عادي خبره وه چې دا د ویرجین چاپیریال لپاره کارول، یا د یو څه محاسبه کولو دندو لپاره، د منځنیو پایلو سره په S3 یا ډیټابیس کې خوندي شوي، مګر د پلور لپاره نه. د دریمې ډلې حلونه شتون لري چې تاسو ته اجازه درکوي په تولید کې ځایونه وکاروئ ، مګر زموږ د قضیې لپاره ډیری کرچونه شتون لري ، نو موږ یې پلي نه کړل. په مقاله کې تشریح شوي طریقه په بشپړه توګه د AWS معیاري فعالیت کې کار کوي، پرته له اضافي سکریپټونو، تاجونو، او نور.

لاندې یو څو سکرین شاټونه دي چې د ځای مثالونو لپاره د نرخ تاریخ ښیې.

m5.large په eu-west-1 (آیرلینډ) سیمه کې. نرخ د 3 میاشتو لپاره خورا مستحکم دی ، اوس مهال 2.9x خوندي کوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

m5.large د متحده ایالاتو په ختیځ - 1 سیمه کې (N. ویرجینیا). نرخ په دوامداره توګه د 3 میاشتو په اوږدو کې بدلیږي ، دا مهال د شتون زون پورې اړه لري له 2.3x څخه تر 2.8x پورې خوندي کوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

t3.small د متحده ایالاتو په ختیځ - 1 سیمه کې (N. ویرجینیا). قیمت د 3 میاشتو لپاره مستحکم دی، اوس مهال 3.4x خوندي کوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د خدماتو جوړښت

د خدماتو بنسټیز جوړښت چې موږ به یې په دې مقاله کې خبرې وکړو په لاندې انځور کې ښودل شوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د غوښتنلیک بار بیلانسر → 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 لانچ ټیمپلیټونه دي. دا تاسو ته اجازه درکوي یوه ټیمپلیټ رامینځته کړئ چې له مخې به یې ټول ماشینونه پیل شي ، ترڅو دا هر ځل له سکریچ څخه تکرار نشي. دلته تاسو کولی شئ د پیل کولو ماشین ډول وټاکئ، امنیتي ګروپ، د ډیسک انځور او ډیری نور پیرامیټونه. تاسو کولی شئ د کارونکي ډیټا هم مشخص کړئ چې په ټولو پیل شوي مثالونو کې به اپلوډ شي. تاسو کولی شئ د کارن ډیټا کې سکریپټونه چل کړئ، د بیلګې په توګه، تاسو کولی شئ د فایل مینځپانګې سم کړئ د ECS اجنټ تشکیلات.

د دې مقالې لپاره یو له خورا مهم ترتیب کولو پیرامیټرو څخه دی ECS_ENABLE_SPOT_INSTANCE_DRAINING= رښتیا. که چیرې دا پیرامیټر فعال وي، نو هرڅومره ژر چې ECS یو سیګنال ترلاسه کړي چې د ځای مثال لرې کیږي، دا ټول هغه دندې چې پدې کې کار کوي د ډریننګ حالت ته لیږدوي. پدې مثال کې به هیڅ نوې دندې ونه ګمارل شي؛ که چیرې داسې دندې شتون ولري چې غواړي همدا اوس ورته معرفي شي ، نو لغوه به شي. د بیلانس څخه غوښتنې هم راځي. د مثال حذف کولو خبرتیا د اصلي پیښې څخه 2 دقیقې دمخه راځي. له همدې امله ، که ستاسو خدمت د 2 دقیقو څخه ډیر دندې ترسره نکړي او ډیسک ته هیڅ شی خوندي نکړي ، نو تاسو کولی شئ د ډیټا له لاسه ورکولو پرته د ځای مثالونه وکاروئ.

د ډیسک په اړه - AWS په دې وروستیو کې وکړل دا ممکنه ده چې د ECS سره یوځای د لچک لرونکي فایل سیسټم (EFS) وکاروئ؛ د دې سکیم سره، حتی ډیسک یو خنډ نه دی، مګر موږ دا هڅه نه ده کړې، ځکه چې په اصولو کې موږ ډیسک ته اړتیا نلرو د ریاست ذخیره کولو لپاره. د ډیفالټ له مخې، د SIGINT ترلاسه کولو وروسته (کله چې یو کار د ډریننګ حالت ته لیږل کیږي)، ټول روان کارونه به د 30 ثانیو وروسته ودرول شي، حتی که دوی لاهم بشپړ شوي ندي؛ تاسو کولی شئ دا وخت د پیرامیټر په کارولو سره بدل کړئ ECS_CONTAINER_STOP_TIMEOUT. اصلي شی دا نه دی چې دا د ځای ماشینونو لپاره د 2 دقیقو څخه ډیر لپاره تنظیم کړئ.

د خدمت جوړول

راځئ چې د بیان شوي خدمت رامینځته کولو ته لاړ شو. په پروسه کې، زه به یو شمیر ګټور ټکي هم بیان کړم چې پورته ذکر شوي ندي. په عموم کې، دا یو ګام په ګام لارښوونه ده، مګر زه به ځینې خورا بنسټیز یا په برعکس، خورا ځانګړي قضیې په پام کې ونیسم. ټولې کړنې په AWS بصری کنسول کې ترسره کیږي، مګر د CloudFormation یا Terraform په کارولو سره په پروګرام کې بیا تولید کیدی شي. په اډاپټي کې موږ Terraform کاروو.

د EC2 لانچ ټیمپلیټ

دا خدمت د ماشینونو ترتیب رامینځته کوي چې کارول کیږي. ټیمپلیټونه په EC2 -> مثالونو -> لانچ ټیمپلیټ برخه کې اداره کیږي.

د ایمیزون ماشین عکس (AMI) - د ډیسک عکس مشخص کړئ چې ورسره به ټول مثالونه پیل شي. د ECS لپاره، په ډیری قضیو کې دا د ایمیزون څخه غوره شوي عکس کارولو ارزښت لري. دا په منظمه توګه تازه کیږي او د ECS کار کولو لپاره اړین هرڅه لري. د اوسني عکس ID موندلو لپاره، پاڼې ته لاړ شئ د ایمیزون ECS مطلوب AMIs، هغه سیمه غوره کړئ چې تاسو یې کاروئ او د هغې لپاره AMI ID کاپي کړئ. د مثال په توګه، د امریکا-ختیځ-1 سیمې لپاره، د لیکلو په وخت کې اوسنی ID دی ami-00c7c1cf5bdc913ed. دا 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 اجنټ، او نور نسخې تازه کوي ترڅو دا هیر نکړي، تاسو کولی شئ. خبرتیاوې تنظیم کړئ د نوي نسخو د خپرولو په اړه. تاسو کولی شئ د بریښنالیک له لارې خبرتیاوې ترلاسه کړئ او په لاسي ډول تازه کړئ ، یا تاسو کولی شئ د لامبډا فنکشن ولیکئ چې په اتوماتيک ډول به د تازه شوي AMI سره د لانچ ټیمپلیټ نوې نسخه رامینځته کړي.

د EC2 آٹو سکیلینګ ګروپ

د آټو سکیلینګ ګروپ د مثالونو پیل کولو او اندازه کولو مسؤلیت لري. ګروپونه په EC2 -> د اتومات اندازه کولو -> د اتومات اندازه کولو ګروپونو برخه کې اداره کیږي.

ټیمپلیټ لانچ کړئ - هغه ټیمپلیټ غوره کړئ چې په تیر مرحله کې رامینځته شوی. موږ ډیفالټ نسخه پریږدو.

د پیرود اختیارونه او د مثال ډولونه - د کلستر لپاره د مثالونو ډولونه مشخص کړئ. د لانچ ټیمپلیټ تعقیب کول د لانچ ټیمپلیټ څخه د مثال ډول کاروي. د پیرود اختیارونه او د مثال ډولونه یوځای کول تاسو ته اجازه درکوي په انعطاف سره د مثال ډولونه تنظیم کړئ. موږ به یې وکاروو.

د غوښتنې پر اساس اختیاري - د منظم، غیر ځای مثالونو شمیر چې تل به کار وکړي.

د غوښتنې پر اساس سلنه پورته - د عادي او ځایي مثالونو سلنه تناسب، 50-50 به په مساوي توګه وویشل شي، 20-80 د هر منظم مثال لپاره 4 ځایونه به لوړ شي. د دې مثال د موخو لپاره، زه به 50-50 ته اشاره وکړم، مګر په حقیقت کې موږ ډیری وختونه 20-80 کوو، په ځینو مواردو کې 0-100.

د بېلګې ډولونه - دلته تاسو کولی شئ د مثالونو اضافي ډولونه مشخص کړئ چې په کلستر کې به کارول کیږي. موږ هیڅکله دا کار نه دی کړی ځکه چې زه واقعیا د کیسې په معنی نه پوهیږم. شاید دا د ځانګړو ډولونو محدودیتونو له امله وي، مګر دوی په اسانۍ سره د مالتړ له لارې زیات کیدی شي. که تاسو غوښتنلیک پیژنئ ، زه به خوښ شم چې په نظرونو کې یې ولولئ)

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

شبکه - د شبکې تنظیمات، د ماشینونو لپاره VPC او فرعي نیټونه غوره کړئ، په ډیری مواردو کې تاسو باید ټول موجود سبنیټونه غوره کړئ.

د بار توازن - د توازن تنظیمات، مګر موږ به دا په جلا توګه ترسره کړو، موږ به دلته هیڅ شی ته لاس ورنکړو. روغتیایی معاینات وروسته به هم ترتیب شي.

د ګروپ اندازه - موږ په کلستر کې د ماشینونو شمیر او په پیل کې د ماشینونو مطلوب شمیر محدودیتونه په ګوته کوو. په کلستر کې د ماشینونو شمیر به هیڅکله د لږترلږه ټاکل شوي حد څخه کم او له اعظمي څخه ډیر نه وي، حتی که اندازه کول باید د میټریکونو سره سم واقع شي.

د اندازه کولو پالیسي - د اندازه کولو پیرامیټونه، مګر موږ به د ECS د چلولو دندو پر بنسټ اندازه کړو، نو موږ به وروسته اندازه کول تنظیم کړو.

د مثال په اندازه کې محافظت - د کمولو په وخت کې د حذف کیدو څخه د مثالونو ساتنه. موږ دا فعال کړو ترڅو ASG هغه ماشین حذف نکړي چې چلونکي دندې لري. د ECS ظرفیت چمتو کونکی به د هغو مواردو لپاره محافظت غیر فعال کړي چې دندې نلري.

ټاګونه اضافه کړئ - تاسو کولی شئ د مثالونو لپاره ټاګونه مشخص کړئ (د دې لپاره ، د ټاګ نوي مثالونه چیک باکس باید چیک شي). زه د نوم ټګ مشخص کولو وړاندیز کوم ، بیا ټول هغه مثالونه چې په ګروپ کې پیل شوي به ورته نوم ولري ، او دا په کنسول کې د لیدلو لپاره مناسب دی.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

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

د ختمولو تګلارې - هغه مقررات چې د مثالونو د حذف کولو په وخت کې په پام کې نیول کیږي. دوی په ترتیب سره پلي کیږي. موږ معمولا په لاندې عکس کې هغه کاروو. لومړی، د زوړ لانچ ټیمپلیټ سره مثالونه حذف شوي (د مثال په توګه، که موږ AMI تازه کړو، نو موږ یوه نوې نسخه جوړه کړه، مګر ټول مثالونه یې په بدلولو کې اداره شوي). بیا هغه مثالونه چې راتلونکي بلینګ ساعت ته نږدې دي غوره شوي. او بیا ترټولو زاړه د لانچ نیټې پراساس غوره شوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

ښه پوهیدل: په کلستر کې د ټولو ماشینونو تازه کولو لپاره، د کارولو لپاره مناسب د مثال تازه کول. که تاسو دا د تیر مرحلې څخه د لامبډا فنکشن سره یوځای کړئ ، نو تاسو به د بشپړ اتوماتیک مثال تازه سیسټم ولرئ. د ټولو ماشینونو تازه کولو دمخه، تاسو باید په ګروپ کې د ټولو مثالونو لپاره د مثال سکیل ان محافظت غیر فعال کړئ. په ګروپ کې ترتیب نه، مګر پخپله د ماشینونو څخه ساتنه، دا د مثال مدیریت ټب کې ترسره کیږي.

د غوښتنلیک بار بیلانسر او د EC2 هدف ګروپ

بیلانسر په EC2 برخه کې رامینځته شوی → د بار توازن → د بار توازن. موږ به د غوښتنلیک لوډ بیلانسر وکاروو؛ د بیلانس مختلف ډولونو پرتله کول په کې لوستل کیدی شي خدمت پاڼه.

اوریدونکي - دا د 80 او 443 بندرونو رامینځته کولو لپاره معنی لري او وروسته د بیلانس مقرراتو په کارولو سره له 80 څخه تر 443 پورې لارښود کړئ.

د شتون زونونه - په ډیری مواردو کې، موږ د هرچا لپاره د لاسرسي زونونه غوره کوو.

د امنیت ترتیبات تنظیم کړئ - د بیلانس لپاره د SSL سند دلته ښودل شوی، ترټولو مناسب انتخاب دی یو سند جوړ کړئ په ACM کې. د توپیرونو په اړه امنیتي پالیسي کې لوستلی شي اسناد، تاسو کولی شئ دا د ډیفالټ لخوا غوره شوي پریږدئ ELBSecurityPolicy-2016-08. د بیلانس رامینځته کولو وروسته ، تاسو به یې وګورئ د DNS نوم، کوم چې تاسو اړتیا لرئ د خپل ډومین لپاره CNAME ترتیب کړئ. د مثال په توګه، دا په Cloudflare کې دا څنګه ښکاري.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

امنیتي ګروپ - د بیلانس لپاره د امنیت ګروپ رامینځته کړئ یا غوره کړئ ، ما د دې په اړه نور څه یوازې د EC2 لانچ ټیمپلیټ → د شبکې تنظیماتو برخه کې لیکلي.

هدف ډله - موږ یوه ډله رامینځته کوو چې د بیلانسر څخه ماشینونو ته د غوښتنو لیږلو مسؤلیت لري او د دوی شتون چیک کوي ترڅو د ستونزو په صورت کې یې ځای په ځای کړي. د هدف ډول باید مثال وي، پروتوکول и بندر هر، که تاسو د بیلانس او ​​مثالونو ترمنځ د اړیکو لپاره HTTPS کاروئ، نو تاسو اړتیا لرئ چې دوی ته یو سند اپلوډ کړئ. د دې مثال د موخو لپاره، موږ به دا کار ونه کړو، موږ به په ساده ډول 80 پورټ پریږدو.

روغتیایی معاینات - د خدمت فعالیت چک کولو لپاره پیرامیټونه. په ریښتینې خدمت کې، دا باید یو جلا غوښتنه وي چې د سوداګرۍ منطق مهمې برخې پلي کوي؛ د دې مثال لپاره، زه به د ډیفالټ ترتیبات پریږدم. بیا، تاسو کولی شئ د غوښتنې وقفه، وخت پای، د بریالیتوب کوډونه، او نور وټاکئ. زموږ په مثال کې، موږ به د بریالیتوب کوډونه 200-399 په ګوته کړو، ځکه چې د ډاکر عکس چې کارول کیږي د 304 کوډ بیرته راګرځوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د هدفونو ثبتول - دلته د ګروپ لپاره موټرونه غوره شوي، مګر زموږ په قضیه کې دا به د ECS لخوا ترسره شي، نو موږ یوازې دا ګام پریږدو.

ښه پوهیدل: د توازن په کچه تاسو کولی شئ هغه لاګونه فعال کړئ چې په S3 کې به په یو مشخص ډول خوندي شي ب formatه. له هغه ځایه دوی د تحلیلاتو لپاره د دریمې ډلې خدماتو ته صادر کیدی شي ، یا تاسو کولی شئ په مستقیم ډول په S3 کې د ډیټا په اړه د SQL پوښتنې وکړئ. د اتینا کارول. دا اسانه دی او پرته له کوم اضافي کوډ کار کوي. زه د ټاکلې مودې وروسته د S3 بالټ څخه د لاګونو لرې کولو تنظیم کولو وړاندیز هم کوم.

د ECS کاري تعریف

په تیرو مرحلو کې، موږ د خدماتو زیربنا پورې اړوند هرڅه رامینځته کړل؛ اوس موږ د کانټینرونو تشریح کولو ته ځو چې موږ به یې پیل کړو. دا په ECS → د کاري تعریفونو برخه کې ترسره کیږي.

لانچ ډول مطابقت - EC2 غوره کړئ.

د دندې اجرا کولو IAM رول - غوره کړه ecsTaskExecutionRole. د دې په کارولو سره ، لاګونه لیکل شوي ، پټ متغیرونو ته لاسرسی ورکول کیږي ، او داسې نور.

د کانټینر تعریفونو برخه کې، د کانټینر اضافه کول کلیک وکړئ.

د انځور - د پروژې کوډ سره عکس ته لینک؛ د دې مثال لپاره زه به د ډاکر هب څخه عامه عکس وکاروم bitnami/node-example:0.0.1.

د حافظې محدودیتونه - د کانټینر لپاره د حافظې محدودیت. سخت محدودیت - سخت حد، که کانټینر د ټاکل شوي ارزښت څخه بهر وي، د ډاکر وژنې کمانډ به اجرا شي، کانټینر به سمدلاسه مړ شي. نرم محدودیت - نرم حد، کانټینر کولی شي د ټاکل شوي ارزښت څخه بهر لاړ شي، مګر دا پیرامیټر به په پام کې ونیول شي کله چې په ماشینونو کې دندې ترسره کیږي. د مثال په توګه، که یو ماشین 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 ګروپونو کې ترسره کیږي، تاسو اړتیا لرئ په اوسني دوره کې کلیک وکړئ او یو نوی وټاکئ.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د ECS کلستر او د ECS ظرفیت چمتو کونکي

د کلستر جوړولو لپاره د ECS → کلستر برخې ته لاړ شئ. موږ د ټیمپلیټ په توګه EC2 لینکس + شبکه غوره کوو.

د کلستر نوم - ډیر مهم، موږ دلته ورته نوم جوړوو لکه څنګه چې د لانچ ټیمپلیټ پیرامیټر کې مشخص شوی ECS_CLUSTERزموږ په قضیه کې - DemoApiClusterProd. د خالي کلستر جوړول چیک باکس چیک کړئ. په اختیاري توګه، تاسو کولی شئ د کانټینر بصیرت فعال کړئ ترڅو په CloudWatch کې د خدماتو میټریک وګورئ. که تاسو هرڅه سم ترسره کړي ، نو د ECS مثالونو برخه کې به تاسو هغه ماشینونه وګورئ چې د آټو سکیلینګ ګروپ کې رامینځته شوي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

ټب ته لاړ شئ د ظرفیت برابرونکي او یو نوی جوړ کړئ. اجازه راکړئ تاسو ته یادونه وکړم چې د ECS د چلولو دندو شمیر پورې اړه لري د ماشینونو رامینځته کولو او بندولو کنټرول ته اړتیا ده. دا مهمه ده چې په یاد ولرئ چې یو وړاندیز کوونکی یوازې یوې ډلې ته ټاکل کیدی شي.

د اتومات اندازه کولو ډله - مخکې جوړ شوی ګروپ غوره کړئ.

منظم اندازه کول - دا فعال کړئ ترڅو چمتو کونکی کولی شي خدمت اندازه کړي.

د هدف ظرفیت٪ - د دندو سره بار شوي ماشینونه څومره سلنه ته اړتیا لرو. که تاسو 100٪ مشخص کړئ، نو ټول ماشینونه به تل د چلولو کارونو سره بوخت وي. که تاسو 50٪ مشخص کړئ، نو نیمایي موټر به تل وړیا وي. پدې حالت کې ، که چیرې په بار کې ګړندی کود وي ، نو نوي ټکسي به سمدلاسه وړیا موټرو ته ورسیږي ، پرته لدې چې د ګمارلو مثالونو ته انتظار وکړي.

د ختمولو محافظت اداره شوی - فعال کړئ ، دا پیرامیټر چمتو کونکي ته اجازه ورکوي چې د حذف کولو څخه د مثالونو محافظت لرې کړي. دا پیښیږي کله چې په ماشین کې هیڅ فعاله دندې شتون نلري او د هدف ظرفیت٪ ته اجازه ورکوي.

د ECS خدمت او اندازه کولو ترتیب

وروستی ګام :) د خدماتو رامینځته کولو لپاره ، تاسو اړتیا لرئ د خدماتو ټب کې دمخه رامینځته شوي کلستر ته لاړشئ.

د لانچ ډول - تاسو اړتیا لرئ د ظرفیت چمتو کونکي ستراتیژۍ ته لاړشئ کلیک وکړئ او دمخه رامینځته شوي چمتو کونکي غوره کړئ.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د دندې تعریف - مخکې جوړ شوی کاري تعریف او بیاکتنه غوره کړئ.

د خدمت نوم - د ګډوډۍ څخه مخنیوي لپاره، موږ تل د کاري تعریف په څیر ورته اشاره کوو.

د خدمت ډول - تل نقل.

د دندو شمیر - په خدمت کې د فعالو دندو مطلوب شمیر. دا پیرامیټر د اندازه کولو لخوا کنټرول کیږي، مګر بیا هم باید مشخص شي.

لږترلږه صحي سلنه и اعظمي سلنه - د ګمارنې پرمهال د دندو چلند مشخص کړئ. ډیفالټ ارزښتونه 100 او 200 دي ، دا په ګوته کوي چې د پلي کولو په وخت کې به د دندو شمیر څو ځله زیات شي ، او بیا مطلوب ارزښت ته راستون شي. که تاسو 1 دنده پرمخ وړئ، دقیقه = 0، او اعظمي = 100، نو د ځای په ځای کولو کې به وژل شي، او له هغې وروسته به یو نوی پورته شي، دا به د ځنډ وخت وي. که چیرې 1 دنده روانه وي، دقیقه = 50، اعظمي = 150، نو بیا ځای پرځای کول به هیڅکله پیښ نشي، ځکه چې 1 دنده په نیمایي کې نشي ویشل کیدی یا یو نیم ځله زیات شي.

د ځای پرځای کولو ډول - د رولینګ تازه کول پریږدئ.

د ځای پرځای کولو کينډۍ - په ماشینونو کې د دندو د ترسره کولو لپاره مقررات. ډیفالټ د AZ متوازن سپیډ دی - پدې معنی چې هر نوی دنده به په نوي مثال کې ځای په ځای شي تر هغه چې ماشینونه په ټولو موجودو زونونو کې لوړ شي. موږ معمولا BinPack - CPU او Spread - AZ کوو؛ د دې تګلارې سره، دندې په هر CPU کې په یوه ماشین کې د امکان تر حده په کثافاتو کې ځای پر ځای کیږي. که دا اړینه وي چې یو نوی ماشین جوړ کړئ، دا د نوي موجودیت زون کې رامینځته کیږي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د بار بیلانس ډول - د غوښتنلیک بار بیلانس غوره کړئ.

خدمت IAM رول - غوره کړه ecsServiceRole.

د بار بیلانس نوم - مخکې جوړ شوی بیلانس غوره کړئ.

د روغتیا معاینې د فضل موده - د نوي دندې له پیلولو وروسته د روغتیا معایناتو ترسره کولو دمخه وقفه وکړئ ، موږ معمولا دا 60 ثانیو ته تنظیم کوو.

د توازن بارولو لپاره کانټینر - د هدف ګروپ نوم توکي کې، مخکې جوړ شوی ګروپ غوره کړئ، او هرڅه به په اتوماتيک ډول ډک شي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

د خدماتو اتومات اندازه کول - د خدماتو اندازه کولو پیرامیټونه. د خپل خدمت مطلوب شمیر تنظیمولو لپاره د خدماتو اتومات اندازه کول تنظیم کړئ غوره کړئ. موږ د اندازه کولو په وخت کې د دندو لږترلږه او اعظمي شمیر تنظیم کوو.

د خدماتو اتومات اندازه کولو لپاره د IAM رول - غوره کړه AWSServiceRoleForApplicationAutoScaling_ECSService.

د اتوماتیک کاري اندازه کولو پالیسۍ - د اندازه کولو قواعد. دوه ډوله دي:

  1. د هدف تعقیب - د هدف میټریک تعقیب کول (د CPU/RAM کارول یا د هرې دندې لپاره د غوښتنو شمیر). د مثال په توګه، موږ غواړو د اوسط پروسیسر بار 85٪ وي، کله چې دا لوړ شي، نوي دندې به اضافه شي تر هغه چې هدف ارزښت ته ورسیږي. که چیرې بار ټیټ وي ، نو دندې به لرې شي ، برعکس ، پرته لدې چې د پیمانه کولو پروړاندې محافظت فعال شوی وي (پیمانه غیر فعال کړئ).
  2. د ګام اندازه کول - د خپل سري پیښې غبرګون. دلته تاسو کولی شئ د هرې پیښې لپاره عکس العمل تنظیم کړئ (د کلاوډ واچ الارم) ، کله چې پیښ شي ، تاسو کولی شئ د دندو مشخص شمیر اضافه یا لرې کړئ ، یا د دندو دقیق شمیر مشخص کړئ.

یو خدمت ممکن د اندازه کولو ډیری مقررات ولري، دا ګټور کیدی شي، اصلي شی دا دی چې ډاډ ترلاسه شي چې دوی د یو بل سره ټکر نه کوي.

پایلې

که تاسو لارښوونې تعقیب کړئ او ورته ډاکر عکس وکاروئ، ستاسو خدمت باید د دې په څیر یوه پاڼه بیرته راولي.

د AWS سپاټ مثالونو کې د توزیع وړ API رامینځته کول

  1. موږ یو ټیمپلیټ رامینځته کړی چې له مخې یې په خدمت کې ټول ماشینونه په لاره اچول شوي. موږ دا هم زده کړل چې څنګه ماشینونه تازه کړو کله چې ټیمپلیټ بدل شي.
  2. موږ د ځای مثال سټاپ سیګنال پروسس تنظیم کړی ، نو د ترلاسه کولو وروسته په یوه دقیقه کې ، ټولې روانې دندې له ماشین څخه لرې کیږي ، نو هیڅ شی له لاسه نه ورکول کیږي یا مداخله کیږي.
  3. موږ بیلانسر پورته کړ ترڅو بار په مساوي ډول په ماشینونو کې توزیع کړو.
  4. موږ یو خدمت رامینځته کړی چې په ځای کې پرمخ ځي، کوم چې د ماشین لګښتونه شاوخوا 3 ځله کموي.
  5. موږ په دواړو لارښوونو کې اتوماتیک کول تنظیم کړي ترڅو د کاري بارونو ډیروالي اداره کړي پرته لدې چې د کم وخت لګښتونه مصرف کړي.
  6. موږ د ظرفیت چمتو کونکي کاروو ترڅو غوښتنلیک زیربنا (ماشینونه) اداره کړي او نه بل ډول.
  7. موږ عالي یو.

که تاسو په بار کې د وړاندوینې وړ سپکونه لرئ ، د مثال په توګه تاسو په لوی بریښنالیک کمپاین کې اعلان کوئ ، تاسو کولی شئ اندازه کول تنظیم کړئ مهال ویش.

تاسو کولی شئ د خپل سیسټم مختلف برخو څخه د معلوماتو پراساس هم اندازه کړئ. د مثال په توګه، موږ فعالیت لرو د انفرادي پروموشنل وړاندیزونو لیږل د ګرځنده اپلیکیشن کاروونکي. ځینې ​​​​وختونه کمپاین 1M+ خلکو ته لیږل کیږي. د دې ډول توزیع وروسته ، تل API ته په غوښتنو کې لوی زیاتوالی شتون لري ، ځکه چې ډیری کارونکي په ورته وخت کې غوښتنلیک ته ننوځي. نو که موږ وګورو چې د پروموشنل پش خبرتیاو لیږلو لپاره په کتار کې د پام وړ نور معیاري شاخصونه شتون لري ، موږ کولی شو سمدلاسه ډیری اضافي ماشینونه او دندې پیل کړو ترڅو بار ته چمتو وي.

زه به خوښ شم که تاسو ما ته په نظرونو کې د ځای مثالونو او ECS کارولو په زړه پورې قضیې یا د اندازه کولو په اړه څه ووایاست.

ډیر ژر به پدې اړه مقالې شتون ولري چې څنګه موږ په هر ثانیه کې په زرګونو تحلیلي پیښې په عمده ډول بې سرور سټیک (د پیسو سره) پروسس کوو او د GitLab CI او Terraform کلاوډ په کارولو سره د خدماتو پلي کول څنګه کار کوي.

زموږ سره ګډون وکړئ، دا به په زړه پورې وي!

یوازې راجستر شوي کاروونکي کولی شي په سروې کې برخه واخلي. ننوزئمهرباني وکړئ

ایا تاسو په تولید کې د ځای مثالونه کاروئ؟

  • ۸۵٪هو 6

  • ۸۵٪نه 18

  • ۸۵٪ما د دوی په اړه د یوې مقالې څخه زده کړل او د دوی کارولو پلان یې 3

27 کاروونکو رایه ورکړه. 5 کاروونکي منع شوي.

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

Add a comment