پوسٽ گريس اڱارو نمبر 5: “PostgreSQL ۽ Kubernetes. CI/CD. ٽيسٽ خودڪار"

پوسٽ گريس اڱارو نمبر 5: “PostgreSQL ۽ Kubernetes. CI/CD. ٽيسٽ خودڪار"

گذريل سال جي آخر ۾، روسي PostgreSQL ڪميونٽي جو هڪ ٻيو لائيو براڊ ڪاسٽ ٿيو #RuPostgres, جنهن دوران ان جي گڏيل باني Nikolai Samokhvalov فلانٽ ٽيڪنيڪل ڊائريڪٽر دمتري اسٽولياروف سان هن ڊي بي ايم ايس بابت ڪبرنيٽس جي حوالي سان ڳالهايو.

اسان هن بحث جي مکيه حصي جو هڪ نقل شايع ڪري رهيا آهيون، ۽ تي ڪميونٽي يوٽيوب چينل مڪمل وڊيو پوسٽ ڪئي وئي:

ڊيٽابيس ۽ ڪبرنيٽس

اين ايس: اسان اڄ VACUUM ۽ CHECKPOINTs بابت نه ڳالهائينداسين. اسان Kubernetes بابت ڳالهائڻ چاهيون ٿا. مون کي خبر آهي ته توهان وٽ ڪيترن سالن جو تجربو آهي. مون توهان جون وڊيوز ڏٺيون آهن ۽ انهن مان ڪجهه ٻيهر به ڏٺيون آهن... اچو ته سڌو سنئون نقطي تي وڃون: پوسٽ گريس يا MySQL K8s ۾ ڇو؟

ڊي ايس: هن سوال جو ڪو قطعي جواب نه آهي ۽ نه ٿو ٿي سگهي. پر عام طور تي، اها سادگي ۽ سهولت آهي... امڪاني. هرڪو منظم خدمتون چاهي ٿو.

اين ايس: ڪيئن RDSصرف گهر ۾؟

ڊي ايس: ها: RDS وانگر، ڪٿي به.

اين ايس: ”ڪنهن به هنڌ“ هڪ سٺو نقطو آهي. وڏي ڪمپنين ۾، هر شيء مختلف هنڌن تي واقع آهي. پوء ڇو، جيڪڏهن اها هڪ وڏي ڪمپني آهي، تيار ٿيل حل نه وٺي؟ مثال طور، Nutanix جي پنهنجي ترقي آهي، ٻيون ڪمپنيون (VMware...) ساڳيا آهن "RDS، صرف گهر ۾."

ڊي ايس: پر اسان هڪ الڳ عمل جي باري ۾ ڳالهائي رهيا آهيون ته صرف ڪجهه حالتن هيٺ ڪم ڪندو. ۽ جيڪڏهن اسان Kubernetes بابت ڳالهائي رهيا آهيون، پوء اتي هڪ وڏي قسم جي انفراسٽرڪچر آهي (جيڪو K8s ۾ ٿي سگهي ٿو). لازمي طور تي هي ڪلائوڊ ڏانهن APIs لاءِ هڪ معيار آهي ...

اين ايس: اهو پڻ مفت آهي!

ڊي ايس: اهو ايترو ضروري ناهي. مارڪيٽ جي تمام وڏي حصي لاءِ آزادي ضروري آهي. ٻيو ڪجهه ضروري آهي... توهان کي شايد اها رپورٽ ياد هوندي“ڊيٽابيس ۽ ڪبرنيٽس»؟

اين ايس: ها.

ڊي ايس: مون محسوس ڪيو ته اهو تمام غير معمولي طور تي وصول ڪيو ويو آهي. ڪجهه ماڻهن جو خيال هو ته مان چئي رهيو آهيان: ”يار، اچو ته سڀئي ڊيٽابيس ڪبرنيٽس ۾ آڻيون!“، جڏهن ته ٻين فيصلو ڪيو ته اهي سڀ خوفناڪ سائيڪلون هيون. پر مان ڪجهه چوڻ چاهيان ٿو مڪمل طور تي مختلف: ”ڏس ته ڇا ٿي رهيو آهي، ڪهڙا مسئلا آهن ۽ انهن کي ڪيئن حل ڪري سگهجي ٿو. ڇا اسان کي هاڻي ڪبرنيٽس ڊيٽابيس استعمال ڪرڻ گهرجي؟ پيداوار؟ چڱو، رڳو جيڪڏھن توھان چاھيو ٿا... ڪجھ شيون ڪرڻ. پر هڪ ديو لاء، مان چئي سگهان ٿو ته مان ان جي سفارش ڪريان ٿو. هڪ ديو لاء، ماحول ٺاهڻ / حذف ڪرڻ جي متحرڪ تمام ضروري آهي.

NS: ديو طرفان، ڇا توهان جو مطلب آهي سڀئي ماحول جيڪي پيداوار نه آهن؟ اسٽيجنگ، QA…

ڊي ايس: جيڪڏهن اسان perf اسٽينڊ بابت ڳالهائي رهيا آهيون، ته شايد نه، ڇاڪاڻ ته اتي گهربل گهربل آهن. جيڪڏهن اسان خاص ڪيسن جي باري ۾ ڳالهائي رهيا آهيون جتي اسٽيجنگ لاءِ هڪ تمام وڏو ڊيٽابيس جي ضرورت هوندي آهي، ته پوءِ شايد نه... جيڪڏهن اهو هڪ مستحڪم، ڊگهو ماحول آهي، ته پوءِ K8s ۾ موجود ڊيٽابيس هجڻ جو ڪهڙو فائدو؟

اين ايس: ڪو به نه. پر اسان کي جامد ماحول ڪٿي نظر اچي ٿو؟ هڪ جامد ماحول سڀاڻي ختم ٿي ويندو.

ڊي ايس: اسٽيجنگ جامد ٿي سگهي ٿو. اسان وٽ گراهڪ آهن ...

اين ايس: ها، مون وٽ به هڪ آهي. اهو هڪ وڏو مسئلو آهي جيڪڏهن توهان وٽ 10 TB ڊيٽابيس ۽ 200 GB اسٽيجنگ آهي ...

ڊي ايس: مون وٽ هڪ تمام ٿڌو ڪيس آهي! اسٽيجنگ تي ھڪڙو پراڊڪٽ ڊيٽابيس آھي جنھن ۾ تبديليون ڪيون وينديون آھن. ۽ اتي ھڪڙو بٽڻ آھي: "پيداوار ڏانھن رول ڪريو". اهي تبديليون - ڊيلٽا - شامل ڪيا ويا آهن (اهو لڳي ٿو ته اهي صرف API ذريعي هم وقت ڪيا ويا آهن) پيداوار ۾. هي هڪ تمام غير معمولي اختيار آهي.

اين ايس: مون وادي ۾ سٹارٽ اپ ڏٺا آهن جيڪي RDS يا هيروڪو ۾ به ويٺا آهن - اهي 2-3 سال اڳ جون ڪهاڻيون آهن - ۽ اهي ڊمپ کي پنهنجي ليپ ٽاپ تي ڊائون لوڊ ڪن ٿا. ڇاڪاڻ ته ڊيٽابيس اڃا تائين صرف 80 GB آهي، ۽ ليپ ٽاپ تي جاء آهي. پوءِ اهي هر ڪنهن لاءِ اضافي ڊسڪ خريد ڪندا آهن ته جيئن انهن وٽ آهن 3 ڊيٽابيس مختلف ترقيات کي انجام ڏيڻ لاءِ. ائين به ٿئي ٿو. مون اهو پڻ ڏٺو آهي ته اهي پروڊ کي نقل ڪرڻ کان ڊپ نه آهن اسٽيجنگ ۾ - اهو گهڻو ڪري ڪمپني تي منحصر آهي. پر مون اهو به ڏٺو ته اهي ڏاڍا خوفزده آهن، ۽ اهو ته انهن وٽ اڪثر وقت ۽ هٿ نه هوندا آهن. پر ان کان اڳ جو اسان هن موضوع تي وڃو، مان ڪبرنيٽس بابت ٻڌائڻ چاهيان ٿو. ڇا مان صحيح طور تي سمجھان ٿو ته ڪو به اڃا تائين پيداوار ۾ نه آهي؟

ڊي ايس: اسان وٽ پروڊ ۾ ننڍا ڊيٽابيس آهن. اسان ڏهن گيگا بائيٽ جي مقدار ۽ غير نازڪ خدمتن جي باري ۾ ڳالهائي رهيا آهيون جن لاءِ اسان نقل ٺاهڻ ۾ تمام سست هئاسين (۽ اهڙي ڪا ضرورت ناهي). ۽ مهيا ڪيو ويو آهي ته ڪوبرنيٽس هيٺ عام اسٽوريج آهي. هي ڊيٽابيس هڪ مجازي مشين ۾ ڪم ڪيو - شرطي طور تي VMware ۾، اسٽوريج سسٽم جي چوٽي تي. اسان ان ۾ رکيا PV ۽ ھاڻي اسان ان کي مشين کان مشين ڏانھن منتقل ڪري سگھون ٿا.

اين ايس: هن سائيز جو ڊيٽابيس، 100 GB تائين، سٺي ڊسڪ ۽ سٺي نيٽ ورڪ تي چند منٽن ۾ رول آئوٽ ڪري سگھجي ٿو، صحيح؟ 1 GB في سيڪنڊ جي رفتار هاڻي غير معمولي ناهي.

ڊي ايس: ها، لينر آپريشن لاءِ هي ڪو مسئلو ناهي.

اين ايس: ٺيڪ آهي، اسان کي صرف پيداوار بابت سوچڻو آهي. ۽ جيڪڏهن اسان غور ڪري رهيا آهيون ڪبرنيٽس غير پيداوار ماحول لاءِ، اسان کي ڇا ڪرڻ گهرجي؟ مون کي Zalando ۾ ڏٺو آپريٽر ڪريو، ڪرنچي ۾ ڏاڪڻ، ڪجھ ٻيا اختيار آھن. ۽ اتي آهي OnGres - اھو آھي اسان جو سٺو دوست الوارو اسپين کان: اھي جيڪي ڪندا آھن بنيادي طور تي صرف نه آھي آپريٽر، ۽ سڄي ورڇ (StackGres)، جنهن ۾، پوسٽ گريس پاڻ کان علاوه، انهن پڻ هڪ بيڪ اپ ڪرڻ جو فيصلو ڪيو، ايلچي پراکسي ...

ڊي ايس: ڇا لاءِ سفير؟ Postgres ٽرئفڪ کي خاص طور تي توازن؟

اين ايس: ها. اهو آهي، اهي ان کي ڏسندا آهن: جيڪڏهن توهان هڪ لينڪس ڊويزن ۽ ڪنيل وٺو، پوء باقاعده PostgreSQL ڪننل آهي، ۽ اهي هڪ تقسيم ٺاهڻ چاهيندا آهن جيڪي بادل-دوست هوندا ۽ ڪبرنيٽس تي هلندا. اهي گڏ ڪن ٿا اجزاء (بيڪ اپ، وغيره) ۽ انهن کي ڊيبگ ڪريو ته جيئن اهي سٺو ڪم ڪن.

ڊي ايس: ڏاڍو ٿڌو! لازمي طور تي هي سافٽ ويئر آهي توهان جي پنهنجي منظم پوسٽ گريس ٺاهڻ لاءِ.

اين ايس: لينڪس ڊسٽريبيوشن ۾ دائمي مسئلا آهن: ڊرائيور ڪيئن ٺاهيو ته جيئن سڀ هارڊويئر سپورٽ ٿئي. ۽ انهن جو خيال آهي ته اهي ڪبرنيٽس ۾ ڪم ڪندا. مون کي خبر آهي ته Zalando آپريٽر ۾ اسان تازو ڏٺو AWS سان ڪنيڪشن ۽ اهو هاڻي تمام سٺو ناهي. اتي ڪنهن خاص انفراسٽرڪچر سان ڳنڍڻ نه گهرجي - پوءِ ڪهڙو مقصد آهي؟

ڊي ايس: مون کي خبر ناهي ته Zalando ڪهڙي صورتحال ۾ اچي ويو، پر Kubernetes اسٽوريج ۾ هاڻي اهڙي طرح ٺاهيو ويو آهي ته عام طريقي سان ڊسڪ بيڪ اپ وٺڻ ناممڪن آهي. تازو معياري ۾ - جديد نسخي ۾ CSI وضاحتون - اسان سنيپ شاٽ کي ممڪن بڻايو، پر اهو ڪٿي لاڳو ٿئي ٿو؟ ايمانداري سان، سڀ ڪجھ اڃا تائين خام آهي... اسان ڪوشش ڪري رهيا آهيون CSI مٿان AWS، GCE، Azure، vSphere، پر جيئن ئي توهان ان کي استعمال ڪرڻ شروع ڪيو، توهان ڏسي سگهو ٿا ته اهو اڃا تيار ناهي.

اين ايس: ان ڪري اسان کي ڪڏهن ڪڏهن انفراسٽرڪچر تي ڀروسو ڪرڻو پوندو آهي. منهنجو خيال آهي ته اهو اڃا تائين هڪ ابتدائي مرحلو آهي - وڌندڙ درد. سوال: توهان انهن نون ماڻهن کي ڪهڙي صلاح ڏيندؤ جيڪي K8s ۾ PgSQL ڪوشش ڪرڻ چاهين ٿا؟ ڇا آپريٽر ٿي سگهي ٿو؟

ڊي ايس: مسئلو اهو آهي ته Postgres اسان لاء 3٪ آهي. اسان وٽ ڪبرنيٽس ۾ مختلف سافٽ ويئر جي تمام وڏي لسٽ پڻ آهي، مان هر شي کي لسٽ به نه ڪندس. مثال طور، Elasticsearch. اتي ڪيترائي آپريٽرز آھن: ڪجھ فعال طور تي ترقي ڪري رھيا آھن، ٻيا نه آھن. اسان پاڻ لاءِ گهرجون تيار ڪيون آهن ته هڪ آپريٽر کي ڇا هجڻ گهرجي ان لاءِ ته اسان ان کي سنجيدگي سان وٺون. هڪ آپريٽر ۾ خاص طور تي ڪبرنيٽس لاءِ - نه ته "آپريٽر ۾ ڪجهه ڪرڻ لاءِ Amazon جي حالتن ۾"... حقيقت ۾، اسان وڏي پيماني تي (= لڳ ڀڳ سڀ کلائنٽ) هڪ واحد آپريٽر استعمال ڪندا آهيون - Redis لاء (اسان جلد ئي سندس باري ۾ هڪ مضمون شايع ڪنداسين).

اين ايس: ۽ نه ته MySQL لاءِ؟ مون کي خبر آهي ته Percona... ڇاڪاڻ ته اهي هاڻي MySQL، MongoDB، ۽ Postgres تي ڪم ڪري رهيا آهن، انهن کي ڪجهه قسم جو عالمگير حل ٺاهڻو پوندو: سڀني ڊيٽابيسن لاءِ، سڀني ڪلائوڊ فراهم ڪندڙن لاءِ.

ڊي ايس: اسان وٽ MySQL لاءِ آپريٽرز کي ڏسڻ جو وقت نه هو. اهو في الحال اسان جو بنيادي ڌيان نه آهي. MySQL اسٽينڊ ۾ ٺيڪ ڪم ڪري ٿو. هڪ آپريٽر ڇو استعمال ڪريو جيڪڏهن توهان صرف هڪ ڊيٽابيس لانچ ڪري سگهو ٿا... توهان پوسٽرگس سان هڪ ڊڪر ڪنٽينر لانچ ڪري سگهو ٿا، يا توهان ان کي آسان طريقي سان لانچ ڪري سگهو ٿا.

اين ايس: ان بابت به هڪ سوال هو. ڪو به آپريٽر نه آهي؟

ڊي ايس: ها، اسان مان 100٪ PostgreSQL ڪنهن آپريٽر کان سواءِ هلن ٿا. ايترو پري. اسان فعال طور تي استعمال ڪريون ٿا آپريٽر پروميٿيوس ۽ ريڊس لاءِ. اسان وٽ Elasticsearch لاءِ هڪ آپريٽر ڳولڻ جو منصوبو آهي - اهو اهو آهي جيڪو سڀ کان وڌيڪ ”آگ تي“ آهي، ڇاڪاڻ ته اسان ان کي انسٽال ڪرڻ چاهيون ٿا Kubernetes ۾ 100٪ ڪيسن ۾. جيئن ته اسان کي يقيني بڻائڻ چاهيون ٿا ته MongoDB پڻ هميشه نصب ڪيو ويو آهي Kubernetes ۾. هتي ڪجهه خواهشون ظاهر ٿيندا آهن - اتي هڪ احساس آهي ته انهن حالتن ۾ ڪجهه ڪري سگهجي ٿو. ۽ اسان پوسٽ گريس کي به نه ڏٺو. يقينن، اسان ڄاڻون ٿا ته مختلف اختيارن جا آهن، پر حقيقت ۾ اسان وٽ هڪ اسٽينڊل آهي.

ڪبرنيٽس ۾ جاچ لاءِ ڊي بي

اين ايس: اچو ته جاچ جي موضوع تي هلون. ڊيٽابيس ۾ تبديلين کي ڪيئن وڌايو وڃي - هڪ DevOps نقطه نظر کان. هتي مائڪرو سروسز آهن، ڪيترائي ڊيٽابيس، هر وقت ڪجهه تبديل ٿي رهيو آهي. عام CI/CD کي ڪيئن يقيني بڻايو وڃي ته جيئن هر شيءِ ڊي بي ايم ايس جي نقطه نظر کان ترتيب ۾ هجي. توهان جو طريقو ڇا آهي؟

ڊي ايس: ھڪڙو جواب نه ٿو ٿي سگھي. اتي ڪيترائي اختيار آھن. پهرين بنيادي جي سائيز آهي جنهن کي اسين ٻاهر ڪڍڻ چاهيون ٿا. توهان پاڻ ذڪر ڪيو آهي ته ڪمپنيون مختلف رويا آهن انهن جي ڪاپي ڊيٽابيس جي ديو ۽ اسٽيج تي.

اين ايس: ۽ جي ڊي پي آر جي حالتن هيٺ، مان سمجهان ٿو ته اهي وڌيڪ ۽ وڌيڪ محتاط ٿي رهيا آهن ... مان چئي سگهان ٿو ته يورپ ۾ انهن اڳ ۾ ئي ڏنڊ لاڳو ڪرڻ شروع ڪيو آهي.

ڊي ايس: پر اڪثر توهان سافٽ ويئر لکي سگهو ٿا جيڪو پيداوار مان ڊمپ وٺندو آهي ۽ ان کي ڇڪيندو آهي. پروڊ ڊيٽا حاصل ڪئي وئي آهي (سنيپ شاٽ، ڊمپ، بائنري ڪاپي ...)، پر اهو گمنام آهي. ان جي بدران، نسل جا اسڪرپٽ ٿي سگهن ٿا: اهي فيڪٽرز يا صرف هڪ اسڪرپٽ ٿي سگهن ٿيون جيڪو هڪ وڏو ڊيٽابيس ٺاهي ٿو. مسئلو آهي: بنيادي تصوير ٺاهڻ ۾ ڪيترو وقت وٺندو آهي؟ ۽ ان کي گهربل ماحول ۾ ترتيب ڏيڻ ۾ ڪيترو وقت لڳندو آهي؟

اسان هڪ منصوبي تي آيا آهيون: جيڪڏهن ڪلائنٽ هڪ مقرر ڪيل ڊيٽا سيٽ آهي (ڊيٽابيس جو گهٽ ۾ گهٽ نسخو)، پوء اسان انهن کي ڊفالٽ طور استعمال ڪريون ٿا. جيڪڏهن اسان جائزو وٺڻ واري ماحول جي باري ۾ ڳالهائي رهيا آهيون، جڏهن اسان هڪ برانچ ٺاهي، اسان ايپليڪيشن جو هڪ مثال مقرر ڪيو - اسان اتي هڪ ننڍڙو ڊيٽابيس ٺاهي رهيا آهيون. پر اهو سٺو نڪتو اختيار، جڏهن اسان ڏينهن ۾ هڪ ڀيرو پيداوار مان ڊمپ وٺون ٿا (رات جو) ۽ هڪ ڊڪر ڪنٽينر ٺاهيندا آهيون PostgreSQL ۽ MySQL سان گڏ هن لوڊ ٿيل ڊيٽا سان. جيڪڏهن توهان کي هن تصوير مان ڊيٽابيس کي 50 ڀيرا وڌائڻ جي ضرورت آهي، اهو بلڪل آسان ۽ جلدي ڪيو ويندو.

اين ايس: سادو نقل ڪرڻ سان؟

ڊي ايس: ڊيٽا سڌو سنئون Docker تصوير ۾ محفوظ ڪئي وئي آهي. اهي. اسان وٽ هڪ تيار ٿيل تصوير آهي، جيتوڻيڪ 100 GB. Docker ۾ تہن جي مهرباني، اسان جلدي طور تي هن تصوير کي ترتيب ڏئي سگھون ٿا جيترو اسان کي ضرورت آهي. طريقو بيوقوف آهي، پر اهو سٺو ڪم ڪري ٿو.

اين ايس: پوءِ، جڏھن توھان ٽيسٽ ڪندا آھيو، اھو ساڄي اندر Docker ۾ تبديل ٿيندو آھي، صحيح؟ ڊاڪر اندر ڪاپي-آن-لکيو - ان کي اڇلايو ۽ ٻيهر وڃو، سڀ ڪجھ ٺيڪ آهي. ڪلاس! ۽ ڇا توهان اڳ ۾ ئي ان کي مڪمل طور تي استعمال ڪري رهيا آهيو؟

ڊي ايس: گهڻي وقت تائين.

اين ايس: اسان تمام گهڻيون شيون ڪندا آهيون. صرف اسان ڊاڪر جي ڪاپي-آن-لکڻ استعمال نه ڪندا آهيون، پر ڪجهه ٻيو.

ڊي ايس: اهو عام ناهي. ۽ Docker هر جڳهه ڪم ڪري ٿو.

اين ايس: نظريي ۾، ها. پر اسان وٽ پڻ ماڊلز آهن، توهان مختلف ماڊل ٺاهي سگهو ٿا ۽ مختلف فائل سسٽم سان ڪم ڪري سگهو ٿا. هتي ڪهڙو لمحو آهي. Postgres پاسي کان، اسان اهو سڀ ڪجهه مختلف طور تي ڏسون ٿا. ھاڻي مون ڊاڪر پاسي کان ڏٺو ۽ ڏٺم ته سڀ ڪجھ توھان لاءِ ڪم ڪري ٿو. پر جيڪڏهن ڊيٽابيس تمام وڏو آهي، مثال طور، 1 ٽي بي، پوء اهو سڀ ڪجهه ڊگهو وقت وٺندو آهي: رات جو آپريشن، ۽ ڊڪر ۾ هر شيء کي ڀرڻ ... ۽ جيڪڏهن 5 ٽي بي ڊڪر ۾ ڀريل آهن ... يا سڀ ڪجهه ٺيڪ آهي؟

ڊي ايس: ڇا فرق آهي: اهي بلب آهن، صرف بٽ ۽ بائيٽ.

اين ايس: فرق هي آهي: ڇا توهان ان کي ڊمپ ۽ بحالي ذريعي ڪندا آهيو؟

ڊي ايس: بلڪل ضروري ناهي. هن تصوير ٺاهڻ جا طريقا مختلف ٿي سگهن ٿا.

اين ايس: ڪجهه گراهڪن لاءِ، اسان ان کي ٺاهيو آهي ته جيئن باقاعده بنيادي تصوير ٺاهڻ جي بدران، اسان ان کي مسلسل تازه ڪاري رکون. اهو بنيادي طور تي هڪ نقل آهي، پر اهو ڊيٽا حاصل ڪري ٿو ماسٽر کان سڌو نه، پر هڪ آرڪائيو ذريعي. هڪ بائنري آرڪائيو جتي WALs هر روز ڊائون لوڊ ڪيا ويندا آهن، جتي بيڪ اپ ورتو ويندو آهي... اهي WALs پوءِ ٿوري دير سان بنيادي تصوير تائين پهچندا آهن (لفظي طور تي 1-2 سيڪنڊ). اسان ان مان ڪنهن به طريقي سان کلون ڪيون ٿا - هاڻي اسان وٽ ڊفالٽ طور ZFS آهي.

ڊي ايس: پر ZFS سان توهان هڪ نوڊ تائين محدود آهيو.

اين ايس: ها. پر ZFS پڻ هڪ جادو آهي موڪليو: ان سان توهان هڪ سنيپ شاٽ موڪلي سگهو ٿا ۽ ايستائين (مون واقعي هن کي اڃان تائين نه آزمايو آهي، پر...) توهان موڪلي سگهو ٿا هڪ ڊيلٽا ٻن جي وچ ۾ PGDATA. حقيقت ۾، اسان وٽ هڪ ٻيو اوزار آهي جيڪو اسان حقيقت ۾ اهڙن ڪمن لاء نه سمجهيو آهي. PostgreSQL آهي pg_rewind، جيڪو ڪم ڪري ٿو "سمارٽ" rsync وانگر، گهڻو ڪجهه ڇڏي ڏيو جيڪو توهان کي ڏسڻ جي ضرورت ناهي، ڇو ته اتي ڪجھ به تبديل نه ٿيو آهي. اسان ٻن سرورن جي وچ ۾ جلدي هم وقت سازي ڪري سگھون ٿا ۽ ساڳئي طريقي سان ريوائنڊ ڪري سگھون ٿا.

تنهن ڪري، هن کان، وڌيڪ DBA پاسي، اسان هڪ اوزار ٺاهڻ جي ڪوشش ڪري رهيا آهيون جيڪا اسان کي ساڳيو ڪم ڪرڻ جي اجازت ڏئي ٿي جيڪا توهان چيو آهي: اسان وٽ هڪ ڊيٽابيس آهي، پر اسان چاهيون ٿا ته 50 ڀيرا، تقريبا هڪ ئي وقت.

ڊي ايس: 50 ڀيرا مطلب توهان کي آرڊر ڪرڻ جي ضرورت آهي 50 اسپاٽ مثالن.

اين ايس: نه، اسان سڀ ڪجهه هڪ مشين تي ڪندا آهيون.

ڊي ايس: پر توهان ڪيئن وڌندا 50 ڀيرا جيڪڏهن هي هڪ ڊيٽابيس آهي، چئو، ٽيرا بائيٽ. گهڻو ڪري هوء هڪ مشروط 256 GB رام جي ضرورت آهي؟

اين ايس: ها، ڪڏهن ڪڏهن توهان کي تمام گهڻي يادگيري جي ضرورت هوندي آهي - اهو عام آهي. پر هي زندگي مان هڪ مثال آهي. پيداوار واري مشين ۾ 96 ڪور ۽ 600 GB آهي. ساڳئي وقت، 32 ڪور (جيتوڻيڪ 16 ڪور هاڻي ڪڏهن ڪڏهن) ۽ 100-120 GB ميموري ڊيٽابيس لاء استعمال ڪيا ويا آهن.

ڊي ايس: ۽ اتي 50 ڪاپيون مناسب آهن؟

اين ايس: پوءِ هتي صرف هڪ ڪاپي آهي، پوءِ ڪاپي-آن-رائيٽ (ZFS) ڪم ڪري ٿي... مان توهان کي وڌيڪ تفصيل سان ٻڌايان ٿو.

مثال طور، اسان وٽ 10 ٽي بي ڊيٽابيس آهي. انهن ان لاءِ هڪ ڊسڪ ٺاهيو، ZFS پڻ ان جي سائيز کي 30-40 سيڪڙو تائين دٻايو. جيئن ته اسان لوڊ ٽيسٽ نه ڪندا آهيون، صحيح جوابي وقت اسان لاءِ اهم ناهي: ان کي 2 ڀيرا سست ٿيڻ ڏيو - اهو ٺيڪ آهي.

اسان پروگرامرز، QA، DBA، وغيره کي موقعو ڏيو ٿا. 1-2 سلسلي ۾ ٽيسٽ ڪريو. مثال طور، اهي شايد ڪنهن قسم جي لڏپلاڻ کي هلائي سگهن ٿيون. ان کي هڪ ڀيرو 10 ڪور جي ضرورت ناهي - ان کي 1 پوسٽ گريس پس منظر، 1 ڪور جي ضرورت آهي. لڏپلاڻ شروع ٿيندي - شايد خودڪار ويڪيوم اڃا شروع ٿيندو، پوءِ ٻيو ڪور استعمال ڪيو ويندو. اسان وٽ 16-32 ڪور مختص ڪيا ويا آهن، تنهنڪري 10 ماڻهو هڪ ئي وقت ڪم ڪري سگهن ٿا، ڪو مسئلو ناهي.

ڇاڪاڻ ته جسماني طور تي PGDATA ساڳيو، اهو ظاهر ٿئي ٿو ته اسان اصل ۾ پوسٽ گريس کي ٺڳي رهيا آهيون. چال هي آهي: مثال طور، 10 پوسٽ گريس هڪ ئي وقت شروع ڪيا ويا آهن. عام طور تي مسئلو ڇا آهي؟ رکيائون حصيداري_بفرز، اچو ته 25 سيڪڙو. مطابق، هي 200 GB آهي. توهان انهن مان ٽن کان وڌيڪ لانچ ڪرڻ جي قابل نه هوندا، ڇاڪاڻ ته ياداشت ختم ٿي ويندي.

پر ڪجهه نقطي تي اسان محسوس ڪيو ته اهو ضروري نه هو: اسان 2 GB تائين حصيداري_بفرز سيٽ ڪيو. PostgreSQL آهي effective_cache_size، ۽ حقيقت ۾ اهو صرف هڪ ئي آهي جيڪو اثر انداز ڪري ٿو منصوبا. اسان ان کي 0,5 ٽي بي تي مقرر ڪيو. ۽ اهو به مسئلو ناهي ته اهي اصل ۾ موجود نه آهن: هو منصوبا ٺاهي ٿو ڄڻ ته اهي موجود آهن.

ان جي مطابق، جڏهن اسان ڪجهه قسم جي لڏپلاڻ جي جانچ ڪنداسين، اسان سڀني منصوبن کي گڏ ڪري سگهون ٿا - اسان ڏسنداسين ته اهو ڪيئن ٿيندو پيداوار ۾. اتي سيڪنڊ مختلف (سست) هوندا، پر ڊيٽا جيڪا اسان اصل ۾ پڙهون ٿا، ۽ منصوبا پاڻ (جنهن ۾ شامل آهن، وغيره) بلڪل ساڳيو ئي ڦري ٿو جيئن پيداوار ۾. ۽ توهان هڪ مشين تي متوازي ۾ ڪيترائي اهڙيون چيڪ هلائي سگهو ٿا.

ڊي ايس: ڇا توهان نٿا سمجهو ته هتي ڪجهه مسئلا آهن؟ پهريون هڪ حل آهي جيڪو صرف PostgreSQL تي ڪم ڪري ٿو. اهو طريقو تمام نجي آهي، اهو عام ناهي. ٻيو اهو آهي ته ڪبرنيٽس (۽ هر شي جيڪا ڪلائوڊ ٽيڪنالاجي هاڻي وڃي رهي آهي) ۾ ڪيترائي نوڊس شامل آهن، ۽ اهي نوڊس عارضي آهن. ۽ توهان جي صورت ۾ اهو هڪ مستحڪم، مسلسل نوڊ آهي. اهي شيون مون کي تڪرار ڪن ٿا.

اين ايس: پهرين، مان متفق آهيان، هي هڪ خالص پوسٽ گريس ڪهاڻي آهي. مان سمجهان ٿو ته جيڪڏهن اسان وٽ ڪجهه قسم جو سڌو IO ۽ هڪ بفر پول آهي تقريبن سڀني ياداشتن لاءِ، اهو طريقو ڪم نه ڪندو - منصوبا مختلف هوندا. پر ھاڻي اسان صرف پوسٽ گريس سان ڪم ڪريون ٿا، اسان ٻين بابت نه ٿا سوچيو.

ڪبرنيٽس بابت. توهان پاڻ اسان کي هر هنڌ ٻڌايو ته اسان وٽ هڪ مستقل ڊيٽابيس آهي. جيڪڏهن مثال ناڪام ٿئي ٿي، بنيادي شيء ڊسڪ کي بچائڻ آهي. هتي اسان وٽ پڻ آهي مڪمل پليٽ فارم ڪبرنيٽس ۾، ۽ پوسٽ گريس سان جزو الڳ آهي (جيتوڻيڪ اهو هڪ ڏينهن اتي هوندو). تنهن ڪري، سڀ ڪجهه هن طرح آهي: مثال گر ٿي ويو، پر اسان ان جي پي وي کي بچايو ۽ صرف ان کي ٻي (نئين) مثال سان ڳنڍيو، ڄڻ ته ڪجھ به نه ٿيو هو.

ڊي ايس: منهنجي نقطي نظر کان، اسان ڪبرنيٽس ۾ پوڊ ٺاهيندا آهيون. K8s - لچڪدار: ڳٽ ترتيب ڏنل آهن جيئن ضرورت هجي. اهو ڪم صرف هڪ پوڊ ٺاهڻ آهي ۽ اهو چوڻ آهي ته ان کي X مقدار جي وسيلن جي ضرورت آهي، ۽ پوء K8s ان کي پنهنجي طور تي معلوم ڪندو. پر ڪبرنيٽس ۾ اسٽوريج سپورٽ اڃا تائين غير مستحڪم آهي: 1.16۾ 1.17 (هي رليز جاري ڪيو ويو هفتي جو اڳ) اهي خاصيتون صرف بيٽا بڻجي ويندا آهن.

ڇهه مهينا هڪ ​​سال گذري ويندا - اهو وڌيڪ يا گهٽ مستحڪم ٿي ويندو، يا گهٽ ۾ گهٽ اهو اعلان ڪيو ويندو. پوءِ سنيپ شاٽ جو امڪان ۽ ريزائز ڪرڻ توهان جي مسئلي کي مڪمل طور تي حل ڪري ٿو. ڇاڪاڻ ته توهان وٽ هڪ بنياد آهي. ها، اهو شايد تمام تيز نه هجي، پر رفتار ان تي منحصر آهي ته ڇا آهي "هوڊ هيٺ"، ڇاڪاڻ ته ڪجهه عملن کي ڊسڪ سب سسٽم جي سطح تي ڪاپي ۽ ڪاپي ڪري سگهي ٿو.

اين ايس: اهو پڻ ضروري آهي ته سڀني انجڻين لاءِ (Amazon, Google...) هن ورجن کي سپورٽ ڪرڻ شروع ڪن - اهو پڻ ڪجهه وقت وٺندو.

ڊي ايس: اسان اڃا تائين ان کي استعمال نه ڪندا آهيون. اسان پنهنجو استعمال ڪندا آهيون.

Kubernetes لاء مقامي ترقي

اين ايس: ڇا توهان کي اهڙي خواهش نظر آئي آهي جڏهن توهان کي هڪ مشين تي سڀني پوڊس کي انسٽال ڪرڻ جي ضرورت آهي ۽ اهڙي ننڍڙي ٽيسٽ ڪريو. جلدي تصور جو ثبوت حاصل ڪرڻ لاءِ، ڏسو ته ايپليڪيشن ڪبرنيٽس ۾ هلندي آهي، ان لاءِ مشينن جو هڪ گروپ وقف ڪرڻ کان سواءِ. اتي Minikube آهي، صحيح؟

ڊي ايس: اهو مون کي لڳي ٿو ته هي ڪيس - هڪ نوڊ تي مقرر ڪيل - خاص طور تي مقامي ترقي بابت آهي. يا اهڙي نموني جا ڪجهه ظاهر. کائو منيڪيوب، هتي آهي ڪي 3ا, KIND. اسان ڊاکر ۾ ڪبرنيٽس استعمال ڪرڻ طرف وڌي رهيا آهيون. هاڻي اسان ان سان گڏ ٽيسٽ لاء ڪم ڪرڻ شروع ڪيو.

اين ايس: مان سمجهان ٿو ته هي هڪ ڪوشش هئي سڀني پوڊس کي هڪ ڊاکر تصوير ۾ لپائڻ جي. پر اهو ظاهر ٿيو ته اهو ڪجهه مڪمل طور تي مختلف آهي. بهرحال، اتي الڳ ڪنٽينر آهن، الڳ پوڊ - صرف ڊڪر ۾.

ڊي ايس: ها. ۽ اُتي ھڪڙو مضحکہ خیز نقل ڪيو ويو آھي، پر معنيٰ ھي آھي... اسان وٽ ڊيپلائيمينٽ لاءِ ھڪ افاديت آھي - werf. اسان ان کي هڪ مشروط موڊ بڻائڻ چاهيون ٿا werf up: "مون کي مقامي ڪبرنيٽس حاصل ڪريو." ۽ پوء اتي مشروط هلائي werf follow. پوءِ ڊولپر IDE کي ايڊٽ ڪرڻ جي قابل ٿي ويندو، ۽ سسٽم ۾ ھڪڙو عمل شروع ڪيو ويندو جيڪو تبديلين کي ڏسي ٿو ۽ تصويرن کي ٻيهر ٺاھي ٿو، انھن کي مقامي K8s تي ٻيهر ترتيب ڏئي ٿو. اهڙي طرح اسان چاهيون ٿا ته مقامي ترقي جو مسئلو حل ڪيو وڃي.

K8s حقيقت ۾ سنيپ شاٽ ۽ ڊيٽابيس ڪلوننگ

اين ايس: جيڪڏهن اسان ڪاپي-تي-لکڻ ڏانهن واپس وڃون ٿا. مون ڏٺو ته بادلن ۾ به سنيپ شاٽ آهن. اهي مختلف ڪم ڪن ٿا. مثال طور، GCP ۾: توهان وٽ آهي هڪ ملٽي ٽيرا بائيٽ مثال آمريڪا جي اوڀر ساحل تي. توهان وقتي طور تي تصويرون وٺو. توهان هڪ سنيپ شاٽ کان اولهه سامونڊي ڪناري تي ڊسڪ جي ڪاپي ڪڍو ٿا - ڪجهه منٽن ۾ هر شيء تيار آهي، اهو تمام جلدي ڪم ڪري ٿو، صرف ڪيش کي ميموري ۾ ڀرڻ جي ضرورت آهي. پر اهي کلون (سنيپ شاٽ) هڪ نئين حجم کي ’رزق‘ ڏيڻ لاءِ آهن. اهو ٿڌو آهي جڏهن توهان کي تمام گهڻو مثال ٺاهڻ جي ضرورت آهي.

پر ٽيسٽن لاءِ، مون کي لڳي ٿو ته سنيپ شاٽ، جن بابت توهان ڳالهائيندا آهيو ڊاڪر ۾ يا مان ڳالهائيندو آهيان ZFS، btrfs ۽ حتي LVM ۾... - اهي توهان کي اجازت نه ڏيندا آهن واقعي نئين ڊيٽا هڪ مشين تي ٺاهي. بادل ۾، توهان اڃا تائين انهن لاء هر وقت ادا ڪنداسين ۽ انتظار ڪريو سيڪنڊن، پر منٽن (۽ صورت ۾ سست لوڊ، ممڪن آهي هڪ واچ).

ان جي بدران، توهان هن ڊيٽا کي هڪ سيڪنڊ يا ٻه ۾ حاصل ڪري سگهو ٿا، ٽيسٽ کي هلائي ۽ ان کي اڇلائي ڇڏيو. اهي تصويرون مختلف مسئلا حل ڪن ٿا. پهرين صورت ۾ - ماپ ڪرڻ ۽ نئين replicas حاصل ڪرڻ لاء، ۽ ٻئي ۾ - ٽيسٽ لاء.

ڊي ايس: مان متفق نه آهيان. حجم ڪلوننگ جو ڪم صحيح طريقي سان ڪرڻ ڪلائوڊ جو ڪم آهي. مون انهن جي عمل کي نه ڏٺو آهي، پر مون کي خبر آهي ته اسان اهو هارڊويئر تي ڪيئن ڪندا آهيون. اسان وٽ ڪيف آهي، اهو ڪنهن به جسماني حجم جي اجازت ڏئي ٿو (آر بي ڊي) چئو ڪلون ۽ مليس سيڪنڊن جي ساڳين خاصيتن سان ٻيو حجم حاصل ڪريو، IOPS'امي وغيره. توهان کي اهو سمجهڻ جي ضرورت آهي ته اندر اندر هڪ مشڪل ڪاپي آهي. بادل کي ائين ڇو نه ڪرڻ گهرجي؟ مون کي پڪ آهي ته اهي ڪوشش ڪري رهيا آهن اهو هڪ طريقو يا ٻيو.

اين ايس: پر اهو اڃا تائين وٺندو انهن کي سيڪنڊن، ڏهن سيڪنڊن جو هڪ مثال وڌائڻ، ڊڪر کي اتي آڻڻ، وغيره.

ڊي ايس: ڇو ضروري آهي ته هڪ سڄو مثال بلند ڪجي؟ اسان وٽ ھڪڙو مثال آھي 32 ڪور، 16... ۽ اھو ان ۾ فٽ ٿي سگھي ٿو - مثال طور، چار. جڏهن اسان پنجين کي ترتيب ڏيو ٿا، مثال اڳ ۾ ئي اٿاريو ويندو، ۽ پوء ان کي ختم ڪيو ويندو.

اين ايس: ها، دلچسپ، ڪبرنيٽس هڪ مختلف ڪهاڻي ٿي. اسان جو ڊيٽابيس K8s ۾ نه آهي، ۽ اسان وٽ هڪ مثال آهي. پر ملٽي ٽيرابائيٽ ڊيٽابيس کي ڪلون ڪرڻ ۾ ٻن سيڪنڊن کان وڌيڪ نه لڳندو آهي.

ڊي ايس: هي عظيم آهي. پر منهنجو شروعاتي نقطو اهو آهي ته اهو هڪ عام حل ناهي. ها، اهو ٿڌو آهي، پر اهو صرف مناسب آهي Postgres ۽ صرف هڪ نوڊ تي.

اين ايس: اهو مناسب آهي نه رڳو Postgres لاءِ: اهي منصوبا، جيئن مون بيان ڪيو آهي، صرف ان ۾ ڪم ڪندو. پر جيڪڏهن اسان منصوبن جي باري ۾ پريشان نه ٿا ڪريون، ۽ اسان کي صرف فنڪشنل ٽيسٽ لاء سڀني ڊيٽا جي ضرورت آهي، پوء اهو ڪنهن به ڊي بي ايم ايس لاء مناسب آهي.

ڊي ايس: ڪيترائي سال اڳ اسان LVM سنيپ شاٽ تي ڪجھ ساڳيو ڪم ڪيو. هي هڪ کلاسک آهي. اهو طريقو تمام فعال طور تي استعمال ڪيو ويو آهي. رياستي نوڊس صرف هڪ درد آهن. ڇو ته توهان کي انهن کي نه ڇڏڻ گهرجي، توهان کي انهن کي هميشه ياد رکڻ گهرجي ...

اين ايس: ڇا توهان هتي هڪ هائبرڊ جو ڪو امڪان ڏسي رهيا آهيو؟ اچو ته چوندا آهن رياستي هڪ قسم جو پوڊ آهي، اهو ڪيترن ئي ماڻهن لاء ڪم ڪري ٿو (ڪيترائي ٽيسٽ ڪندڙ). اسان وٽ ھڪڙو حجم آھي، پر فائل سسٽم جي مھرباني، ڪلون مقامي آھن. جيڪڏهن پوڊ ٿئي ٿو، پر ڊسڪ باقي رهي ٿو، پوڊ اڀري ويندو، سڀني ڪلونن بابت معلومات ڳڻيو، سڀ ڪجهه ٻيهر کڻو ۽ چئو: "هتي توهان جا ڪلون آهن انهن بندرگاهن تي، انهن سان ڪم جاري رکو."

ڊي ايس: ٽيڪنيڪل طور تي هن جو مطلب اهو آهي ته Kubernetes جي اندر اهو هڪ پوڊ آهي جنهن جي اندر اسين ڪيترائي پوسٽ گريس هلائيندا آهيون.

اين ايس: ها. هن جي هڪ حد آهي: چئو ته 10 کان وڌيڪ ماڻهو هن سان گڏ ڪم نه ڪن. جيڪڏهن توهان کي 20 جي ضرورت آهي، اسان هڪ ٻيو اهڙو پوڊ لانچ ڪنداسين. اسان ان کي مڪمل طور تي کلون ڪنداسين، ٻيو مڪمل حجم حاصل ڪرڻ کان پوء، ان ۾ ساڳيا 10 "پتلي" کلون هوندا. ڇا توهان اهو موقعو نه ٿا ڏسو؟

ڊي ايس: اسان کي هتي سيڪيورٽي مسئلن کي شامل ڪرڻ جي ضرورت آهي. هن قسم جي تنظيم جو مطلب آهي ته هن پوڊ وٽ اعليٰ مراعات (صلاحيتون) آهن، ڇاڪاڻ ته اهو فائيل سسٽم تي غير معياري آپريشن ڪري سگهي ٿو... پر مان ورجائي ٿو: مان سمجهان ٿو ته وچولي مدت ۾ اهي ڪبرنيٽس ۾ اسٽوريج کي درست ڪندا، ۽ بادل اهي پوري ڪهاڻي کي جلد سان درست ڪندا - سڀ ڪجهه "بس ڪم" ڪندو. اتي ريزائز ٿيندو، ڪلوننگ... اتي ھڪڙو حجم آھي - اسان چئون ٿا: "ھن جي بنياد تي ھڪڙو نئون ٺاھيو،" ۽ اڌ سيڪنڊ کان پوء اسان کي ضرورت آھي.

اين ايس: مان ڪيترن ئي ٽيرا بائيٽس لاءِ هڪ اڌ سيڪنڊ ۾ يقين نه ٿو رکان. ڪيف تي توهان اهو پاڻ ڪريو ٿا، پر توهان ڪڪرن بابت ڳالهايو ٿا. بادل ڏانھن وڃو، EC2 تي ملٽي ٽيرابائيٽ EBS حجم جو ڪلون ٺاھيو ۽ ڏسو ته ڪارڪردگي ڇا ٿيندي. اهو ڪجهه سيڪنڊ نه وٺندو. مون کي ڏاڍي دلچسپي آهي جڏهن اهي هن سطح تي پهچي ويندا. مان سمجهان ٿو ته توهان ڇا چئي رهيا آهيو، پر مون کي مختلف ڪرڻ جي درخواست آهي.

ڊي ايس: ٺيڪ آهي، پر مون چيو وچين مدت ۾، نه مختصر مدت ۾. ڪيترن سالن تائين.

Zalando کان PostgreSQL لاءِ آپريٽر بابت

هن ملاقات جي وچ ۾، Alexey Klyukin، Zalando کان هڪ اڳوڻو ڊولپر، پڻ شامل ٿيو ۽ PostgreSQL آپريٽر جي تاريخ بابت ڳالهايو:

اهو عظيم آهي ته هي موضوع عام طور تي ڇڪايو ويو آهي: ٻئي پوسٽ گريس ۽ ڪبرنيٽس. جڏهن اسان 2017 ۾ Zalando تي ڪرڻ شروع ڪيو، اهو هڪ موضوع هو جيڪو هرڪو ڪرڻ چاهيندو هو، پر ڪنهن به نه ڪيو. هر ڪنهن وٽ اڳ ۾ ئي ڪبرنيٽس هئا، پر جڏهن انهن پڇيو ته ڊيٽابيس سان ڇا ڪجي، جيتوڻيڪ ماڻهو پسند ڪن ٿا ڪيلي هاء ٽاور، جيڪو K8s جي تبليغ ڪئي، ڪجھ هن طرح چيو:

"منظم ڪيل خدمتن ڏانھن وڃو ۽ انھن کي استعمال ڪريو، ڪبرنيٽس ۾ ڊيٽابيس نه ھلايو. ٻي صورت ۾، توهان جا K8 فيصلو ڪندا، مثال طور، هڪ اپ گريڊ ڪرڻ لاء، سڀني نوڊس کي بند ڪريو، ۽ توهان جو ڊيٽا تمام گهڻو پري، پري پرواز ڪندو.

اسان فيصلو ڪيو ته هڪ آپريٽر ٺاهيو جيڪو، هن مشوري جي برخلاف، ڪبرنيٽس ۾ پوسٽ گريس ڊيٽابيس شروع ڪندو. ۽ اسان وٽ هڪ سٺو سبب هو - پتروني. هي PostgreSQL لاءِ هڪ خودڪار ناڪامي آهي، صحيح طريقي سان ڪيو ويو آهي، يعني. ڪلستر بابت معلومات جي ذخيري جي طور تي etcd، قونصل يا ZooKeeper استعمال ڪندي. اهڙو ذخيرو جيڪو هر ڪنهن کي ڏيندو جيڪو پڇندو، مثال طور، موجوده ليڊر ڇا آهي، ساڳي معلومات - ان حقيقت جي باوجود ته اسان وٽ سڀ ڪجهه ورهايل آهي - انهي ڪري ته دماغ ۾ ورهايل ناهي. پلس اسان وٽ هئا ڊاکر تصوير هن لاء.

عام طور تي، اندروني هارڊويئر ڊيٽا سينٽر کان بادل ڏانهن لڏپلاڻ کان پوء خودڪار ناڪامي لاء ڪمپني جي ضرورت ظاهر ٿي. بادل هڪ مالڪي PaaS (پليٽفارم-جي-هڪ-سروس) حل تي ٻڌل هو. اهو کليل ذريعو آهي، پر ان کي حاصل ڪرڻ ۽ هلائڻ لاء تمام گهڻو ڪم ورتو. ان کي سڏيو ويو اسٽوپس.

شروعات ۾، ڪو به ڪوبرنيٽس نه هو. وڌيڪ واضح طور تي، جڏهن اسان جو پنهنجو حل لڳايو ويو، K8s اڳ ۾ ئي موجود هئا، پر اهو ايترو خام هو ته اهو پيداوار لاء مناسب نه هو. اهو هو، منهنجي خيال ۾، 2015 يا 2016. 2017 تائين، ڪبرنيٽس وڌيڪ يا گهٽ بالغ ٿي چڪا هئا- اتي لڏڻ جي ضرورت هئي.

۽ اسان وٽ اڳ ۾ ئي هڪ Docker ڪنٽينر هو. اتي ھڪڙو PaaS ھو جيڪو Docker استعمال ڪندو ھو. ڇو نه ڪوشش ڪريو K8s؟ پنهنجو آپريٽر ڇو نه لکو؟ مرات ڪابيلوف، جيڪو اسان وٽ Avito کان آيو هو، هن پنهنجي شروعات تي هڪ منصوبي جي طور تي شروع ڪيو - "کيڏڻ لاء" - ۽ پروجيڪٽ "بند ٿي ويو."

پر عام طور تي، مان AWS بابت ڳالهائڻ چاهيان ٿو. اتي تاريخي AWS لاڳاپيل ڪوڊ ڇو هو...

جڏهن توهان Kubernetes ۾ ڪجهه هلائيندا آهيو، توهان کي سمجهڻ جي ضرورت آهي ته K8s اهڙي ڪم جاري آهي. اهو مسلسل ترقي ڪري رهيو آهي، بهتر ٿي رهيو آهي ۽ وقت به وقت ٽوڙيندو رهي ٿو. توهان کي ڪبرنيٽس ۾ سڀني تبديلين تي ويجھي نظر رکڻ جي ضرورت آهي، توهان کي ان ۾ غوطه هڻڻ لاءِ تيار رهڻ جي ضرورت آهي جيڪڏهن ڪجهه ٿئي ٿو ۽ سکو ته اهو ڪيئن ڪم ڪري ٿو تفصيل سان - شايد توهان کان وڌيڪ چاهيو. اهو، اصول ۾، ڪنهن به پليٽ فارم تي لاڳو ٿئي ٿو جنهن تي توهان پنهنجو ڊيٽابيس هلائيندا آهيو ...

تنهن ڪري، جڏهن اسان بيان ڪيو، اسان وٽ پوسٽ گريس هڪ خارجي حجم تي هلندو هو (هن صورت ۾ EBS، جڏهن ته اسان AWS تي ڪم ڪري رهيا هئاسين). ڊيٽابيس وڌندو ويو، ڪجهه وقت تي ان کي تبديل ڪرڻ ضروري هو: مثال طور، EBS جي شروعاتي سائيز 100 TB هئي، ڊيٽابيس ان کي وڌايو، هاڻي اسان EBS 200 TB ڪرڻ چاهيون ٿا. ڪيئن؟ اچو ته چئو ته توهان هڪ نئين مثال تي ڊمپ / بحال ڪري سگهو ٿا، پر اهو هڪ ڊگهو وقت وٺندو ۽ دير سان شامل ٿيندو.

تنهن ڪري، مون هڪ ريزائيز چاهيو ته EBS ورهاڱي کي وڌايو ۽ پوء نئين جاء استعمال ڪرڻ لاء فائل سسٽم کي ٻڌايو. ۽ اسان اهو ڪيو، پر ان وقت ڪبرنيٽس وٽ ڪا به API نه هئي ريزائز آپريشن لاءِ. جتان اسان AWS تي ڪم ڪيو، اسان ان جي API لاءِ ڪوڊ لکيو.

ڪو به توهان کي ٻين پليٽ فارمن لاءِ ساڳيو ڪم ڪرڻ کان روڪي رهيو آهي. بيان ۾ ڪو به اشارو نه آهي ته اهو صرف AWS تي هلائي سگهجي ٿو، ۽ اهو هر شيء تي ڪم نه ڪندو. عام طور تي، هي هڪ اوپن سورس پروجيڪٽ آهي: جيڪڏهن ڪو ماڻهو نئين API جي استعمال جي شروعات کي تيز ڪرڻ چاهي ٿو، توهان کي ڀليڪار آهي. کائو GitHub, پل درخواستون - Zalando ٽيم انھن کي تڪڙو جواب ڏيڻ ۽ آپريٽر کي فروغ ڏيڻ جي ڪوشش ڪري ٿي. جيستائين مون کي خبر آهي، پروجيڪٽ شرڪت ڪئي گوگل سمر آف ڪوڊ تي ۽ ڪجھ ٻيا ساڳيا قدم. Zalando ان تي تمام سرگرم ڪم ڪري رهيو آهي.

پي ايس بونس!

جيڪڏهن توهان PostgreSQL ۽ Kubernetes جي موضوع ۾ دلچسپي رکو ٿا، ته مهرباني ڪري اهو پڻ نوٽ ڪريو ته ايندڙ پوسٽ گريس اڱارو گذريل هفتي ٿي، جتي مون نيڪولائي سان ڳالهايو Zalando کان اليگزينڊر Kukushkin. ان مان وڊيو موجود آهي هتي.

پي پي ايس

اسان جي بلاگ تي پڻ پڙهو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو