مګر په یو وخت کې موږ پوه شو چې دا اړین نه و: موږ شریک شوي_بفرونه 2 GB ته تنظیم کړل. PostgreSQL لري اغېزمن_cache_size، او په حقیقت کې دا یوازینی دی چې اغیزه کوي پلانونه. موږ دا 0,5 TB ته تنظیم کړه. او دا حتی مهمه نده چې دوی واقعیا شتون نلري: هغه پلانونه جوړوي لکه څنګه چې شتون لري.
په دې اساس، کله چې موږ د مهاجرت یو ډول ازموینه کوو، موږ کولی شو ټول پلانونه راټول کړو - موږ به وګورو چې دا به په تولید کې څنګه پیښ شي. ثانیې به مختلف وي (ورو) ، مګر هغه معلومات چې موږ واقعیا لوستلو ، او پخپله پلانونه (کوم چې دلته شامل دي ، او داسې نور) په بشپړ ډول د تولید په څیر وګرځي. او تاسو کولی شئ په یو ماشین کې په موازي ډول ډیری داسې چیکونه پرمخ بوځي.
د: تاسو فکر نه کوئ چې دلته یو څو ستونزې شتون لري؟ لومړی یو حل دی چې یوازې په PostgreSQL کې کار کوي. دا طریقه ډیره شخصي ده، دا عمومي نه ده. دوهم دا چې Kubernetes (او هر هغه څه چې د کلاوډ ټیکنالوژي اوس پرمخ ځي) ډیری نوډونه لري، او دا نوډونه لنډمهاله دي. او ستاسو په قضیه کې دا یو ثابت، دوامداره نوډ دی. دا شیان ما شخړه کوي.
NS: لومړی، زه موافق یم، دا په بشپړه توګه د پوسټګریس کیسه ده. زه فکر کوم که موږ د نږدې ټولو حافظې لپاره یو ډول مستقیم IO او بفر حوض ولرو، دا طریقه به کار ونکړي - پالنونه به مختلف وي. مګر د اوس لپاره موږ یوازې د پوسټګریس سره کار کوو، موږ د نورو په اړه فکر نه کوو.
د Kubernetes په اړه. تاسو پخپله موږ ته په هر ځای کې ووایاست چې موږ دوامداره ډیټابیس لرو. که مثال ناکام شي، اصلي شی د ډیسک خوندي کول دي. دلته موږ په Kubernetes کې ټول پلیټ فارم هم لرو، او د پوسټګریس سره برخه جلا ده (که څه هم دا به یوه ورځ وي). له همدې امله ، هرڅه داسې دي: مثال راوتلی ، مګر موږ یې PV خوندي کړ او په ساده ډول یې له بل (نوي) مثال سره وصل کړ ، لکه څنګه چې هیڅ پیښ شوي ندي.
د: زما له نظره، موږ په Kubernetes کې پوډونه جوړوو. K8s - لچکدار: غوټۍ د اړتیا سره سم ترتیب شوي. دنده په ساده ډول یو پوډ رامینځته کول دي او ووایه چې دا د X مقدار سرچینو ته اړتیا لري ، او بیا K8s به دا پخپله وپیژني. مګر په کوبرنیټس کې د ذخیره کولو ملاتړ لاهم بې ثباته دی: 1.16په 1.17 (دا خپرونه خپره شوه недели مخکې) دا ځانګړتیاوې یوازې بیټا کیږي.
له شپږو میاشتو څخه تر یو کال پورې به تیریږي - دا به ډیر یا لږ باثباته شي ، یا لږترلږه دا به ورته اعلان شي. بیا د سنیپ شاټونو امکان او بیا اندازه کول ستاسو ستونزه په بشپړ ډول حل کوي. ځکه چې تاسو یو بنسټ لرئ. هو، دا ممکن خورا ګړندی نه وي ، مګر سرعت په هغه څه پورې اړه لري چې "د هود لاندې" دی ، ځکه چې ځینې پلي کونکي کولی شي د ډیسک فرعي سیسټم په کچه کاپي او کاپي لیکي.
NS: دا د ټولو انجنونو (Amazon، Google...) لپاره هم اړینه ده چې د دې نسخې ملاتړ پیل کړي - دا هم یو څه وخت نیسي.
NS: ما فکر کاوه چې دا یوه هڅه وه چې ټول پوډونه په یوه ډاکر عکس کې وتړئ. مګر دا معلومه شوه چې دا په بشپړ ډول مختلف دی. په هرصورت، دلته جلا کانټینرونه، جلا پوډونه شتون لري - یوازې په ډاکر کې.
د: هو. او دلته یو په زړه پورې تقلید رامینځته شوی ، مګر معنی دا ده ... موږ د ځای په ځای کولو لپاره یو ګټور کار لرو - werf. موږ غواړو دا یو مشروط حالت جوړ کړو werf up: "ما ته ځایی کبرنیټ ترلاسه کړئ." او بیا هلته مشروط چلوي werf follow. بیا پراختیا کونکی به وکولی شي IDE ترمیم کړي ، او په سیسټم کې به یوه پروسه پیل شي چې بدلونونه ګوري او عکسونه بیا رغوي ، محلي K8s ته یې بیا ځای په ځای کوي. په دې توګه موږ غواړو د محلي پراختیا د ستونزې د حل لپاره هڅه وکړو.
په K8s حقیقت کې سنیپ شاټونه او ډیټابیس کلونینګ
NS: که موږ د کاپي پر لیکلو ته راستون شو. ما ولیدل چې ورېځې هم عکسونه لري. دوی په بل ډول کار کوي. د مثال په توګه، په GCP کې: تاسو د متحده ایالاتو په ختیځ ساحل کې د څو ټیرابایټ مثال لرئ. تاسو وخت په وخت عکسونه اخلئ. تاسو په لویدیز ساحل کې د ډیسک یوه کاپي د سنیپ شاټ څخه واخلئ - په څو دقیقو کې هرڅه چمتو دي ، دا خورا ګړندي کار کوي ، یوازې زیرمه باید په حافظه کې ډکه شي. مګر دا کلونونه (سنیپ شاټونه) د نوي حجم 'وړاندې کولو' لپاره دي. دا ښه دی کله چې تاسو اړتیا لرئ ډیری مثالونه رامینځته کړئ.
مګر د ازموینو لپاره ، ماته داسې ښکاري چې سنیپ شاټونه ، کوم چې تاسو په ډاکر کې خبرې کوئ یا زه په ZFS ، btrfs او حتی LVM کې خبرې کوم ... - دوی تاسو ته اجازه درکوي په یوه ماشین کې واقعیا نوي ډیټا رامینځته نه کړئ. په بادل کې ، تاسو به لاهم د دوی لپاره هر ځل تادیه وکړئ او ثانیې نه ، مګر دقیقې انتظار وکړئ (او په قضیه کې سست بار، احتمالا یو ساعت).
پرځای یې ، تاسو کولی شئ دا معلومات په یوه یا دوه ثانیو کې ترلاسه کړئ ، ازموینه پرمخ وړئ او لرې یې کړئ. دا عکسونه مختلف ستونزې حل کوي. په لومړي حالت کې - اندازه کول او نوي نقلونه ترلاسه کول، او په دویم کې - د ازموینو لپاره.
د: زه موافق نه یم. د حجم کلونینګ کار په سمه توګه کول د بادل دنده ده. ما د دوی پلي کولو ته نه دی کتلی، مګر زه پوهیږم چې موږ دا په هارډویر کې څنګه کوو. موږ Ceph لرو، دا هر فزیکي حجم ته اجازه ورکوي (RBD) ووایه د ورايټۍ او په لسګونو ملی ثانیو کې د ورته ځانګړتیاو سره دوهم حجم ترلاسه کړئ، IOPSami، etc. تاسو اړتیا لرئ پوه شئ چې دننه د لیکلو یو ستونزمن کاپي شتون لري. ولې بادل باید ورته کار ونه کړي؟ زه ډاډه یم چې دوی هڅه کوي دا یو یا بل ډول ترسره کړي.
NS: مګر دا به بیا هم دوی ثانیې ونیسي، لسګونه ثانیې د مثال په توګه پورته کړي، ډاکر هلته راوړي، او داسې نور.
د: ولې دا اړینه ده چې ټول مثال پورته کړئ؟ موږ د 32 کورونو سره یو مثال لرو، 16 ... او دا کولی شي پدې کې فټ شي - د بیلګې په توګه، څلور. کله چې موږ پنځم امر وکړو، مثال به لا دمخه پورته شي، او بیا به حذف شي.
NS: هو، په زړه پورې، Kubernetes یوه بله کیسه ده. زموږ ډیټابیس په K8s کې نه دی، او موږ یو مثال لرو. مګر د څو ټیرابایټ ډیټابیس کلون کول له دوه ثانیو څخه ډیر وخت نه نیسي.
د: دا عالي ده. مګر زما لومړنی ټکی دا دی چې دا یو عام حل ندی. هو ، دا ښه دی ، مګر دا یوازې د پوسټګریس لپاره مناسب دی او یوازې په یو نوډ کې.
NS: دا نه یوازې د پوسټګریس لپاره مناسب دی: دا پلانونه، لکه څنګه چې ما تشریح کړل، یوازې به په دې کې کار وکړي. مګر که موږ د پلانونو په اړه فکر نه کوو، او موږ یوازې د فعالې ازموینې لپاره ټول ډیټا ته اړتیا لرو، نو دا د هر ډول DBMS لپاره مناسب دی.
د: ډیری کاله دمخه موږ په LVM سنیپ شاټونو کې ورته یو څه وکړل. دا یو کلاسیک دی. دا طریقه خورا فعاله کارول شوې وه. دولتي نوډونه یوازې یو درد دی. ځکه چې تاسو باید دوی ونه غورځوئ، تاسو باید تل په یاد ولرئ ...
NS: ایا تاسو دلته د هایبرډ کوم امکان ګورئ؟ راځئ چې ووایو Stateful یو ډول پوډ دی، دا د څو خلکو (ډیری ازموینو) لپاره کار کوي. موږ یو حجم لرو، مګر د فایل سیسټم څخه مننه، کلون محلي دي. که پوډ راښکته شي، مګر ډیسک پاتې شي، پوډ به پورته شي، د ټولو کلونونو په اړه معلومات حساب کړي، هر څه بیا پورته کړئ او ووایاست: "دا ستاسو کلونونه په دې بندرونو کې روان دي، دوی سره کار ته دوام ورکړئ."
د: په تخنیکي توګه دا پدې مانا ده چې په کوبرنیټس کې دا یو پوډ دی چې دننه موږ ډیری پوسټګریس چلوو.
NS: هو. هغه یو حد لري: راځئ چې ووایو له 10 څخه ډیر خلک په ورته وخت کې له هغه سره کار نه کوي. که تاسو 20 ته اړتیا لرئ، موږ به یو بل داسې پوډ پیل کړو. موږ به دا په بشپړه توګه کلون کړو، د دویم بشپړ حجم ترلاسه کولو سره، دا به ورته 10 "پتلی" کلونونه ولري. ایا تاسو دا فرصت نه ګورئ؟
د: موږ باید دلته امنیتي مسایل اضافه کړو. دا ډول تنظیم پدې معنی دی چې دا پوډ لوړ امتیازات (وړتیاوې) لري، ځکه چې دا کولی شي د فایل سیسټم غیر معیاري عملیات ترسره کړي ... مګر زه بیا تکراروم: زه باور لرم چې دوی به په منځنۍ موده کې په کوبرنیټس کې ذخیره تنظیم کړي، او بادل به دوی ټوله کیسه د حجمونو سره حل کړي - هرڅه به "یوازې کار وکړي". بیا اندازه کول، کلونینګ به وي ... یو حجم شتون لري - موږ وایو: "د دې پر بنسټ یو نوی جوړ کړئ" او د یوې نیمې ثانیې وروسته موږ هغه څه ترلاسه کوو چې موږ ورته اړتیا لرو.
NS: زه د ډیرو ټیرابایټ لپاره په یو نیم ثانیو باور نه لرم. په سیف کې تاسو دا پخپله کوئ، مګر تاسو د ورېځو په اړه خبرې کوئ. بادل ته لاړ شئ، په EC2 کې د څو ټیرابایټ EBS حجم کلون جوړ کړئ او وګورئ چې فعالیت به څه وي. دا به څو ثانیې ونه نیسي. زه ډیره علاقه لرم چې دوی به کله دې کچې ته ورسیږي. زه پوهیږم چې تاسو څه وایئ، مګر زه د توپیر غوښتنه کوم.