
पिछले साल के अंत में, रूसी पोस्टग्रेसीक्यूएल समुदाय
#RuPostgres का एक और लाइव प्रसारण
हुआ , जिसके दौरान इसके सह-संस्थापक निकोलाई समोक्वालोव ने फ्लेंटा के तकनीकी निदेशक दिमित्री स्टोलारोव से कुबेरनेट्स के संदर्भ में इस DBMS के बारे में बात की।
हम इस चर्चा के मुख्य निकाय की एक प्रतिलिपि प्रकाशित कर रहे हैं, और
समुदाय के YouTube चैनल पर एक पूरा वीडियो पोस्ट किया गया है:
डेटाबेस और कुबेरनेट्स
NS : हम आज VACUUM और CHECKPOINT की बात नहीं करेंगे। हम कुबेरनेट्स के बारे में बात करना चाहते हैं। मुझे पता है कि आपके पास कई वर्षों का अनुभव है। मैंने आपके वीडियो देखे और उनमें से कुछ की समीक्षा भी की ... चलो सीधे खदान पर चलते हैं: K8s में Postgres या MySQL क्यों है?DS : इस प्रश्न का कोई एक उत्तर नहीं है और यह नहीं हो सकता है। लेकिन सामान्य तौर पर, यह सरलता और सुविधा है ... क्षमता। आखिरकार, हर कोई प्रबंधित सेवाएं चाहता है।
NS : आरडीएस पसंद करने के लिए, केवल घर पर?डी एस : हाँ: आरडीएस को पसंद करने के लिए, केवल कहीं भी।
NS : "एनीवेयर" एक अच्छा बिंदु है। बड़ी कंपनियों में, सब कुछ अलग-अलग जगहों पर स्थित है। और फिर, यदि यह एक बड़ी कंपनी है, तो तैयार समाधान न लें? उदाहरण के लिए, Nutanix के अपने विकास हैं, अन्य कंपनियों (VMware ...) के पास एक ही "RDS, केवल घर पर" है।डीएस : लेकिन हम एक एकल कार्यान्वयन के बारे में बात कर रहे हैं जो केवल कुछ शर्तों के तहत काम करेगा। और अगर हम कुबेरनेट्स के बारे में बात कर रहे हैं, तो एक विशाल विविधता है (जो कि K8 में हो सकती है)। यह अनिवार्य रूप से एपीआई के क्लाउड के लिए मानक है ...
NS : यह मुफ़्त है!डीएस : यह इतना महत्वपूर्ण नहीं है। बाजार के बहुत बड़े हिस्से के लिए फ्री महत्वपूर्ण नहीं है। एक और बात महत्वपूर्ण है ... आप शायद रिपोर्ट "
डेटाबेस और कुबेरनेट्स " को याद करते हैं?
NS : हाँ।DS : मुझे एहसास हुआ कि वह बहुत अस्पष्ट रूप से माना जाता था। कुछ लोगों ने सोचा कि मैं कह रहा था: "दोस्तों, हम सभी डेटाबेस कुबेरनेट्स गए थे!", जबकि अन्य ने फैसला किया कि वे सभी भयानक साइकिल थे। और मैं पूरी तरह से कुछ और कहना चाहता था: “जो हो रहा है उसे देखो, क्या समस्याएं हैं और उन्हें कैसे हल किया जा सकता है। अब कुबेरनेट्स में कुर्सियां जाएं? Production'om? ठीक है, केवल अगर आप प्यार करते हैं ... कुछ चीजें कर रहे हैं। लेकिन देव के लिए, मैं कह सकता हूं कि मैं इसकी सलाह देता हूं। देव के लिए, गतिशील रूप से वातावरण बनाना / हटाना बहुत महत्वपूर्ण है। ”
NS: देव द्वारा, क्या आपके पास सभी वातावरण हैं जो ठेस नहीं हैं? मंचन, क्यूए ...डीएस : अगर हम पूर्ण स्टैंड के बारे में बात कर रहे हैं, तो शायद पहले से ही नहीं है, क्योंकि आवश्यकताएं वहां विशिष्ट हैं। यदि हम ऐसे विशेष मामलों के बारे में बात कर रहे हैं, जहां मंचन पर एक बहुत बड़े डेटाबेस की आवश्यकता होती है, तो शायद नहीं भी ... यदि यह एक स्थिर वातावरण है, लंबे समय तक रहता है, तो K8 में स्थित आधार होने का क्या लाभ है?
NS : कोई नहीं। लेकिन हम स्थैतिक वातावरण कहां देखते हैं? स्थिर वातावरण कल पुराना हो गया है।DS : स्टेजिंग स्थिर हो सकती है। हम ग्राहकों है ...
NS : हाँ, मेरे पास भी है। बड़ी समस्या है यदि आपके पास 10 टीबी और स्टेजिंग का आधार है - 200 जीबी ...DS : मैं एक बहुत अच्छा मामला है! मंचन पर एक prod'ovy आधार होता है जिसमें परिवर्तन किए जाते हैं। और एक बटन प्रदान किया जाता है: "उत्पादन के लिए रोल आउट"। इन परिवर्तनों - डेल्टास - को जोड़ा जाता है (ऐसा लगता है, वे उत्पादन में एपीआई के केवल सिंक्रनाइज़ हैं)। यह एक बहुत ही विदेशी विकल्प है।
NS : मैंने घाटी में स्टार्टअप्स को देखा, जो आरडीएस में बैठे हैं, या यहां तक कि हेरोकू में भी - ये 2-3 साल पहले की कहानियां हैं - और वे अपने लैपटॉप पर डंप डाउनलोड करते हैं। क्योंकि आधार अभी तक केवल 80 जीबी है, और लैपटॉप पर एक जगह है। फिर वे सभी के लिए डिस्क खरीदते हैं, ताकि उनके पास 3 आधार हों, ताकि वे अलग-अलग विकास कर सकें। ऐसा भी होता है। मैंने यह भी देखा कि वे मंचन में ठेस की नकल करने से डरते नहीं हैं - यह कंपनी पर बहुत निर्भर करता है। लेकिन उसने देखा कि वे बहुत डरते थे, और अक्सर उनके पास इतना समय और हाथ नहीं होता था। लेकिन इससे पहले कि हम इस विषय पर आगे बढ़ें, मैं कुबेरनेट्स के बारे में सुनना चाहता हूं। मैं सही ढंग से समझता हूं कि अभी तक कोई भी नहीं है?डी एस : हम ठेस में छोटे ठिकानों है। हम दसियों गीगाबाइट और गैर-महत्वपूर्ण सेवाओं के संस्करणों के बारे में बात कर रहे हैं, जिसके लिए प्रतिकृतियां बनाने के लिए बहुत आलसी था (और ऐसी कोई आवश्यकता नहीं है)। और बशर्ते कि कुबेरनेट्स के तहत एक सामान्य भंडारण है। यह डेटाबेस एक वर्चुअल मशीन में काम करता है - सशर्त रूप से VMware में, भंडारण के ऊपर। हमने इसे
पीवी में रखा और अब हम इसे कार से कार में स्थानांतरित कर सकते हैं।
NS : इस आकार के मामले, 100 जीबी तक, अच्छे डिस्क पर और एक अच्छे नेटवर्क के साथ कुछ ही मिनटों में, सही रोल किए जा सकते हैं? 1 जीबी प्रति सेकंड की गति अब विदेशी नहीं है।डी एस : हाँ, एक रैखिक ऑपरेशन के लिए यह कोई समस्या नहीं है।
NS : ठीक है, हमें केवल ठेस के बारे में सोचना चाहिए। और अगर हम गैर-ठेस वातावरण के लिए कुबेरनेट्स पर विचार करते हैं - यह कैसे करना है? मैं देखता हूं कि ज़ालैंडो में वे एक ऑपरेटर बना रहे हैं , कुरकुरे में वे देख रहे हैं, कुछ अन्य विकल्प हैं। और OnGres है - यह स्पेन से हमारा अच्छा दोस्त अल्वारो है: वे मूल रूप से सिर्फ एक ऑपरेटर नहीं हैं , बल्कि एक संपूर्ण वितरण ( स्टैकग्रेस ) हैं, जिसमें स्वयं पोस्टग्रेज के अलावा, उन्होंने बैकअप, एन्वॉय प्रॉक्सी को सामान करने का भी फैसला किया है ...DS : क्या के लिए दूत? ट्रैफ़िक संतुलन ठीक है?
NS : हाँ। यही है, वे इसे इस रूप में देखते हैं: यदि आप लिनक्स वितरण और कर्नेल लेते हैं, तो सामान्य PostgreSQL कर्नेल है, और वे एक वितरण करना चाहते हैं जो क्लाउड-फ्रेंडली है और कुबेरनेट पर चलता है। वे घटक (बैकअप, आदि) और डिबग करते हैं ताकि वे अच्छी तरह से काम करें।DS : बहुत अच्छा! संक्षेप में, यह आपके प्रबंधित पोस्टग्रेज को बनाने के लिए सॉफ्टवेयर है।
NS : लिनक्स वितरण में शाश्वत समस्याएं हैं: ड्राइवरों को कैसे बनाया जाए ताकि सभी हार्डवेयर समर्थित हों। और उनके पास यह विचार है कि वे कुबेरनेट्स में काम करेंगे। मुझे पता है कि ज़ालैंडो ऑपरेटर में हमने हाल ही में AWS पर नेत्रगोलक देखा था और यह बहुत अच्छा नहीं है। एक विशिष्ट बुनियादी ढांचे के संबंध नहीं होने चाहिए - फिर क्या है?डीएस : मुझे नहीं पता कि ज़ालैंडो किस विशिष्ट स्थिति में शामिल था, लेकिन कुबेरनेट्स भंडारण में अब इस तरह से बनाया गया है कि सामान्य तरीके से डिस्क बैकअप को निकालना असंभव है। हाल ही में, मानक -
सीएसआई विनिर्देश के नवीनतम संस्करण में - स्नैपशॉट की संभावना बनाई गई है, लेकिन इसे कहां लागू किया गया है? ईमानदारी से, यह अभी भी इतना कच्चा है ... हम AWS, GCE, Azure, vSphere के ऊपर CSI की कोशिश कर रहे हैं, लेकिन हम इसे थोड़ा उपयोग करना शुरू कर रहे हैं, क्योंकि आप देख सकते हैं कि यह अभी तक तैयार नहीं है।
NS : इसलिए, कभी-कभी आपको बुनियादी ढाँचे के साथ जुड़ना पड़ता है। मुझे लगता है कि यह अभी भी एक प्रारंभिक चरण है - विकास की समस्याएं। प्रश्न: आप उन शुरुआती लोगों को क्या सलाह देंगे जो K8s में PgSQL की कोशिश करना चाहते हैं? कौन सा ऑपरेटर शायद?DS : समस्या यह है कि हमारे लिए Postgres 3% है। कुबेरनेट्स में अभी भी हमारे पास अलग-अलग सॉफ़्टवेयर की एक बहुत बड़ी सूची है, मैंने सब कुछ भी सूचीबद्ध नहीं किया है। उदाहरण के लिए, एलेस्टिक्स खोज। बहुत सारे ऑपरेटर हैं: कुछ सक्रिय रूप से विकसित हो रहे हैं, अन्य नहीं हैं। खुद के लिए, हमने आवश्यकताओं को बनाया जो ऑपरेटर में होना चाहिए, ताकि हम उसे गंभीरता से लें। ऑपरेटर विशेष रूप से कुबेरनेट्स के लिए है - "अमेज़ॅन की शर्तों के तहत कुछ करने के लिए ऑपरेटर नहीं ..." वास्तव में, हम रेडिस के
लिए (हम लगभग इसके बारे में एक लेख प्रकाशित करेंगे ) - काफी मोटे तौर पर (= लगभग सभी ग्राहकों के लिए) एक ही ऑपरेटर का उपयोग करते हैं।
NS : लेकिन MySQL के लिए भी? मुझे पता है कि पेरकोना ... चूंकि वे अब MySQL, MongoDB और Postgres में शामिल हैं, इसलिए उन्हें सभी क्लाउड प्रदाताओं के लिए, सभी डेटाबेस के लिए, किसी न किसी प्रकार के सार्वभौमिक एक को ठीक करना होगा।डीएस : हमारे पास MySQL के बयानों को देखने का समय नहीं था। हमारे लिए, यह अब मुख्य फोकस नहीं है। MySQL स्वसंपूर्ण में ठीक काम करता है। एक ऑपरेटर क्यों, अगर आप सिर्फ डेटाबेस शुरू कर सकते हैं ... आप डाकटर के साथ डॉकटर कंटेनर शुरू कर सकते हैं, या आप इसे सरल तरीके से शुरू कर सकते हैं।
NS : यह भी एक सवाल था। कोई ऑपरेटर नहीं?DS : हाँ, हममें से 100% के पास PostgreSQL बिना ऑपरेटर के चल रहा है। अब तक। रेडिस के लिए हम सक्रिय रूप से प्रोमेथियस के ऑपरेटर का उपयोग करते हैं। हमारे पास इलास्टिक्स खोज के लिए एक ऑपरेटर खोजने की योजना है - यह सबसे अधिक जलता है क्योंकि हम इसे कुबेरनेट्स में 100% मामलों में स्थापित करना चाहते हैं। जिस तरह हम यह सुनिश्चित करना चाहते हैं कि कोबर्नेट में भी MongoDB हमेशा स्थापित रहे। कुछ विशलिस्ट यहां दिखाई देती हैं - एक भावना है कि इन मामलों में कुछ किया जा सकता है। और Postgres के बारे में हमने भी नहीं देखा। बेशक, हम विभिन्न विकल्पों के अस्तित्व के बारे में जानते हैं, लेकिन वास्तव में हमारे पास स्टैंडअलोन है।
Kubernetes में परीक्षण डेटाबेस
NS : चलो परीक्षण के विषय पर चलते हैं। डेटाबेस में परिवर्तन कैसे रोल करें - DevOps के दृष्टिकोण से। कई बार डेटाबेस, कई डेटाबेस, हर समय कुछ बदल रहा है। सामान्य सीआई / सीडी कैसे सुनिश्चित करें ताकि सब कुछ डीबीएमएस स्थिति से हो। आपका दृष्टिकोण क्या है?डीएस : इसका कोई जवाब नहीं हो सकता। कई विकल्प हैं। पहला आधार का आकार है जिसे हम रोल आउट करना चाहते हैं। आपने स्वयं उल्लेख किया है कि देव और मंच पर ठिकानों की एक प्रति होने के लिए कंपनियों का एक अलग रवैया है।
NS : और GDPR के संदर्भ में, मुझे लगता है कि वे अधिक से अधिक साफ-सुथरे हैं ... मैं कह सकता हूं कि यूरोप में वे पहले से ही ठीक होना शुरू कर चुके हैं।DS : लेकिन आप अक्सर ऐसा सॉफ्टवेयर लिख सकते हैं जो उत्पादन को प्रभावित करता है और इसे बाधित करता है। यह prod'ovye डेटा (स्नैपशॉट, डंप, बाइनरी कॉपी ...) निकलता है, लेकिन वे गुमनाम हैं। इसके बजाय, पीढ़ी स्क्रिप्ट हो सकती है: यह जुड़नार या बस एक स्क्रिप्ट हो सकती है जो एक बड़े डेटाबेस को उत्पन्न करती है। समस्या यह है: आधार छवि बनाने में कितना समय लगता है? और इसे सही माहौल पर तैनात करने के लिए कितना समय?
हम इस योजना के लिए आए थे: यदि ग्राहक के पास फ़िक्चर डेटासेट (डेटाबेस का न्यूनतम संस्करण) है, तो डिफ़ॉल्ट रूप से हम उनका उपयोग करते हैं। यदि हम समीक्षा वातावरण के बारे में बात कर रहे हैं, जब हमने शाखा बनाई थी, तो हमने एक आवेदन उदाहरण तैनात किया है - हम वहां एक छोटा डेटाबेस तैयार कर रहे हैं। लेकिन
विकल्प अच्छी तरह से निकला, जब हम दिन में एक बार (रात में) उत्पादन से डंप को हटाते हैं और इसके आधार पर डॉकटर कंटेनर को पोस्टग्रेसीक्यूएल और MySQL के साथ इन लोड किए गए डेटा के साथ इकट्ठा करते हैं। यदि आपको इस छवि से 50 बार आधार को तैनात करने की आवश्यकता है, तो यह काफी सरल और जल्दी से किया जाता है।
NS : सरल नकल?DS : डेटा को सीधे डॉकर इमेज में स्टोर किया जाता है। यानी हमारे पास एक तैयार छवि है, जिसमें 100 जीबी है। डॉकर में परतों के लिए धन्यवाद, हम इस छवि को जल्दी से कई बार आवश्यकतानुसार तैनात कर सकते हैं। विधि गूंगा है, लेकिन यह बहुत अच्छी तरह से काम करता है।
NS : आगे, परीक्षण करते समय, यह डॉकटर के अंदर, सही बदलता है? डॉकर के अंदर कॉपी-ऑन-राइट - इसे फेंक दें और फिर से जाएं, सब कुछ ठीक है। क्लास! और आप पहले से ही इसे और मुख्य के साथ उपयोग कर सकते हैं?डी एस : लंबे समय के लिए।
NS : हम बहुत समान चीजें करते हैं। केवल हम डॉकर की कॉपी-ऑन-राइट का उपयोग नहीं करते हैं, लेकिन कुछ और।जेएस : वह सामान्य नहीं है। और Docker'ny हर जगह काम करता है।
NS : सिद्धांत रूप में, हाँ। लेकिन हमारे पास वहां मॉड्यूल भी हैं, आप विभिन्न मॉड्यूल बना सकते हैं और विभिन्न फाइल सिस्टम के साथ काम कर सकते हैं। क्या एक पल। Postgres से, हम इस सब को अलग तरह से देखते हैं। अब मैंने डॉकर की तरफ से देखा और देखा कि आपके लिए सब कुछ काम करता है। लेकिन अगर डेटाबेस विशाल है, उदाहरण के लिए, 1 टीबी, तो यह सब लंबा है: रात में दोनों ऑपरेशन और डॉकटर में सब कुछ सामान ... और अगर 5 टीबी डॉकर में भरी हुई है ... या सब कुछ सामान्य है?DS : इससे क्या फर्क पड़ता है: यह बूँदें, बस बिट्स और बाइट्स हैं।
NS : अंतर यह है: क्या आप डंप और पुनर्स्थापना के माध्यम से ऐसा करते हैं?डी एस : बिलकुल नहीं। इस छवि को बनाने के लिए तरीके अलग हो सकते हैं।
NS : कुछ क्लाइंट्स के लिए, हमने इसे इसलिए बनाया है ताकि नियमित रूप से एक बेसिक इमेज तैयार करने के बजाय हम इसे लगातार अपडेट करते रहें। यह अनिवार्य रूप से एक प्रतिकृति है, लेकिन डेटा सीधे मास्टर से प्राप्त नहीं किया जाता है, लेकिन संग्रह के माध्यम से। द्विआधारी संग्रह जहां हर दिन वाल्स लुढ़का जाता है, वहां बैकअप भी हटा दिए जाते हैं ... ये वाल्स तब उड़ते हैं - थोड़ी देरी (शाब्दिक 1-2 सेकंड) - बेस छवि के लिए। हम इसे किसी भी तरह से क्लोन करते हैं - अब हमारे पास डिफ़ॉल्ट रूप से ZFS है।DS : लेकिन ZFS के साथ आप एक नोड तक सीमित हैं।
NS : हाँ। लेकिन ZFS के पास एक जादुई भेजना भी है: आप इसके साथ एक स्नैपशॉट भेज सकते हैं और यहां तक कि (मैं वास्तव में अभी तक इसका परीक्षण नहीं किया है, लेकिन ...) आप दो PGDATA
बीच एक डेल्टा भेज सकते हैं। वास्तव में, हमारे पास एक और उपकरण है जिसे हमने विशेष रूप से ऐसे कार्यों के लिए नहीं माना है। PostgreSQL में pg_rewind है , जो "स्मार्ट" rsync के रूप में काम करता है, बहुत सारी ऐसी चीजों को छोड़ देता है जिन्हें आपको देखना नहीं है, क्योंकि निश्चित रूप से वहां कुछ भी नहीं बदला है। हम दो सर्वरों के बीच एक त्वरित सिंक्रनाइज़ेशन कर सकते हैं और ठीक उसी तरह से रिवाइंड कर सकते हैं।इसलिए, हम इस पर प्रयास कर रहे हैं, अधिक DBA'noy, एक उपकरण बनाने के लिए जो आपको वही काम करने की अनुमति देता है जो आपने कहा था: हमारे पास एक आधार है, लेकिन हम 50 बार कुछ परीक्षण करना चाहते हैं, लगभग एक ही समय में।डीएस : 50 बार का मतलब है कि आपको 50 स्पॉट इंस्टेंसेस ऑर्डर करने की आवश्यकता है।
NS : नहीं, हम सब कुछ एक मशीन पर करते हैं।DS : लेकिन अगर आप एक बेस कहते हैं, तो आप 50 बार कैसे तैनात करते हैं। सबसे अधिक संभावना है कि उसे सशर्त रूप से 256 जीबी रैम की आवश्यकता होगी?
NS : हाँ, कभी-कभी बहुत अधिक मेमोरी की आवश्यकता होती है - यह सामान्य है। लेकिन जीवन से ऐसा उदाहरण। उत्पादन मशीन में 96 कोर और 600 जीबी हैं। इसी समय, डेटाबेस के लिए 32 कोर का उपयोग किया जाता है (यहां तक कि 16 कोर का उपयोग कभी-कभी किया जाता है) और 100-120 जीबी मेमोरी।DS : और 50 प्रतियाँ मिलती हैं?
NS : तो केवल एक प्रति है, फिर कॉपी-ऑन-राइट (ZFS'ny) काम करता है ... मैं आपको और बताऊंगा।उदाहरण के लिए, हमारे पास 10 टीबी का आधार है। उन्होंने इसके लिए एक डिस्क बनाई, ZFS ने अभी भी इसके प्रतिशत का आकार 30-40 तक निचोड़ा। चूंकि हम लोड परीक्षण नहीं करते हैं, इसलिए सटीक प्रतिक्रिया समय हमारे लिए महत्वपूर्ण नहीं है: इसे 2 गुना तक धीमा होने दें - यह ठीक है।हम प्रोग्रामर, क्यूए, डीबीए, आदि को सक्षम करते हैं। 1-2 थ्रेड्स में परीक्षण करें। उदाहरण के लिए, वे किसी तरह का प्रवास शुरू कर सकते हैं। इसे एक बार में 10 कोर की आवश्यकता नहीं होती है - इसे 1 पोस्टग्रेज बैकेंड, 1 कोर की आवश्यकता होती है। माइग्रेशन शुरू हो जाएगा - शायद ऑटोवैक्यूम अभी भी शुरू होगा , फिर दूसरा कोर सक्रिय हो जाएगा। हमने 16-32 कोर आवंटित किए हैं, इसलिए 10 लोग एक साथ काम कर सकते हैं, कोई समस्या नहीं है।चूंकि PGDATA
शारीरिक रूप से समान है, इसलिए यह पता चलता है कि हम वास्तव में पोस्टग्रेज को बेवकूफ बना रहे हैं। चाल यह है: यह शुरू होता है, उदाहरण के लिए, एक ही समय में 10 पोस्टग्रेज। आमतौर पर क्या समस्या है? उन्होंने 25% पर share_buffers कहा। इस हिसाब से यह 200 जीबी है। आप उनमें से तीन से अधिक शुरू नहीं करेंगे, क्योंकि स्मृति समाप्त हो जाएगी।लेकिन कुछ बिंदु पर हमने महसूस किया कि यह आवश्यक नहीं था: हमने साझा_बफ़र को 2 जीबी पर सेट किया। PostgreSQL में प्रभावी_केच_साइज़ है, और वास्तव में यह केवल योजनाओं को प्रभावित करता है। हमने इसे 0.5 टीबी पर रखा। और इससे कोई फर्क नहीं पड़ता कि वे वास्तव में वहाँ नहीं हैं: वह इस तरह की योजना बनाता है जैसे वे हैं।तदनुसार, जब हम किसी प्रकार के प्रवासन का परीक्षण करते हैं, तो हम सभी योजनाओं को एकत्र कर सकते हैं - हम देखेंगे कि यह उत्पादन में कैसे होगा। वहां सेकंड अलग (धीमे) होंगे, लेकिन जो डेटा हम वास्तव में पढ़ते हैं, और खुद योजनाएं (किस तरह के जोइन आदि) उत्पादन के समान ही प्राप्त होते हैं। और समानांतर में, आप इनमें से कई जांच एक मशीन पर चला सकते हैं।DS : क्या आपको लगता है कि कई समस्याएं हैं? पहला एक समाधान है जो केवल PostgreSQL पर काम करता है। यह दृष्टिकोण बहुत ही निजी है, यह सामान्य नहीं है। दूसरा - कुबेरनेट्स (और यह वह जगह है जहां अब बादल जा रहा है) में बहुत सारे नोड्स शामिल हैं, और ये नोड्स अल्पकालिक हैं। और आपके मामले में यह एक स्टेटफुल, लगातार नोड है। ये बातें मुझे विरोधाभास करती हैं।
NS : पहला - मैं सहमत हूं, यह एक विशुद्ध रूप से पोस्टग्रेज कहानी है। मुझे लगता है कि अगर हमारे पास लगभग सभी मेमोरी के लिए कोई प्रत्यक्ष आईओ और एक बफर पूल है, तो यह दृष्टिकोण काम नहीं करेगा - अलग-अलग योजनाएं होंगी। लेकिन हम अभी केवल पोस्टग्रेज के साथ काम कर रहे हैं, हम दूसरों के बारे में नहीं सोचते हैं।कुबेरनेट्स के बारे में। आप स्वयं हमेशा कहते हैं कि हमारे पास एक स्थायी आधार है। यदि उदाहरण क्रैश हो जाता है, तो मुख्य बात डिस्क को सहेजना है। यहां हमारे पास कुबेरनेट्स में संपूर्ण मंच भी है, और पोस्टग्रेज के साथ घटक अलग है (हालांकि यह किसी दिन वहां होगा)। इसलिए, सब कुछ ऐसा है: उदाहरण गिर गया, लेकिन हमने इसे पीवी बचा लिया और सिर्फ दूसरे (नए) उदाहरण से जुड़ा, जैसे कि कुछ भी नहीं हुआ था।DS : मेरे दृष्टिकोण से, हम कुबेरनेट्स में पॉड बनाते हैं। K8s - लोचदार: घटकों को आवश्यकतानुसार अपने आप से ऑर्डर किया जाता है। कार्य केवल एक पॉड बनाने और कहना है कि इसे एक्स संसाधनों की आवश्यकता है, और फिर K8s इसे समझेंगे। लेकिन कुबेरनेट्स में भंडारण समर्थन अभी भी अस्थिर है:
1.16 में ,
1.17 में (यह रिलीज
सप्ताह पहले जारी किया गया था), ये विशेषताएं केवल बीटा बन जाती हैं।
छह महीने या एक साल बीत जाएगा - यह कम या ज्यादा स्थिर हो जाएगा, या कम से कम इस तरह से घोषित किया जाएगा। तब स्नैपशॉट और आकार बदलने की संभावना पहले से ही आपकी समस्या को पूरी तरह हल करती है। क्योंकि आपके पास आधार है। हां, यह बहुत तेज नहीं हो सकता है, लेकिन गति "हुड के नीचे" पर निर्भर करती है, क्योंकि कुछ कार्यान्वयन डिस्क सबसिस्टम के स्तर पर कॉपी-ऑन-राइट को कॉपी और कॉपी कर सकते हैं।
एनएस : इस संस्करण का समर्थन शुरू करने के लिए सभी इंजनों (अमेज़ॅन, Google ...) के लिए भी आवश्यक है - इसमें भी कुछ समय लगता है।डीएस : जबकि हम उनका उपयोग नहीं करते हैं। हम अपने का उपयोग करते हैं।
कुबेरनेट्स के तहत स्थानीय विकास
NS : क्या आपने एक ऐसी इच्छा सूची का सामना किया है जब आपको एक मशीन पर सभी पॉड्स को बढ़ाने और इस तरह के एक छोटे परीक्षण करने की आवश्यकता होती है। जल्दी से अवधारणा का प्रमाण प्राप्त करने के लिए, देखें कि आवेदन Kubernetes में काम करता है, इसके लिए मशीनों का एक गुच्छा आवंटित किए बिना। वहाँ एक Minikube है, है ना?डीएस : मुझे ऐसा लगता है कि यह मामला - एक नोड पर तैनात - विशेष रूप से स्थानीय विकास के बारे में है। या ऐसे पैटर्न के कुछ अभिव्यक्तियाँ। वहाँ
Minikube है , वहाँ
k3s ,
KIND हैं । हम कुबेरनेट्स इन डॉकर का उपयोग करने जा रहे हैं। अब वे परीक्षण के लिए उसके साथ काम करने लगे।
NS : मैं समझता था कि यह एक डॉकटर छवि में सभी पॉड्स को लपेटने का एक प्रयास है। लेकिन यह पता चला कि यह कुछ और के बारे में है। वैसे भी, अलग कंटेनर हैं, अलग-अलग पॉड्स - बस डॉकर में।डी एस : हाँ। और वहाँ एक बल्कि नकली नकल किया जाता है, लेकिन बात यह है ... हमारे पास एक तैनाती उपकरण है -
werf । हम इसमें एक मोड बनाना चाहते हैं - सशर्त रूप से
werf up
: "मुझे एक स्थानीय कुबेरनेट्स उठाएं"। और फिर
werf follow
सशर्त
werf follow
। फिर डेवलपर आईडीई में संपादित करने में सक्षम होगा, और सिस्टम में एक प्रक्रिया शुरू की जाती है जो परिवर्तनों को देखती है और छवियों को फिर से खोजती है, उन्हें स्थानीय K8s में फिर से तैयार करती है। इसलिए हम स्थानीय विकास की समस्या को हल करने का प्रयास करना चाहते हैं।
K8s की वास्तविकताओं में स्नैपशॉट और डेटाबेस क्लोनिंग
NS : यदि आप कॉपी-ऑन-राइट पर वापस जाते हैं। मैंने देखा कि बादलों में भी झाँकियाँ होती हैं। वे अलग तरह से काम करते हैं। उदाहरण के लिए, जीसीपी में: आपके पास यूएसए के पूर्वी तट पर एक बहु-टेराबाइट उदाहरण है। आप समय-समय पर स्नैपशॉट करते हैं। आप स्नैपशॉट से पश्चिमी तट पर डिस्क की एक प्रति उठाते हैं - कुछ मिनटों में सब कुछ तैयार हो जाता है, यह बहुत तेज़ी से काम करता है, केवल कैश को मेमोरी में भरने की आवश्यकता होती है। लेकिन ये क्लोन (स्नैपशॉट) - एक नए वॉल्यूम को 'प्रोविजन' करने के लिए। यह बहुत अच्छा है जब आपको कई उदाहरण बनाने की आवश्यकता होती है।लेकिन परीक्षणों के लिए, यह मुझे लगता है, स्नैपशॉट जो आप डॉकटर के बारे में बात करते हैं या मैं ZFS, btrfs और यहां तक कि LVM के बारे में बात करता हूं ... - वे आपको एक ही मशीन पर वास्तव में नया डेटा नहीं बनाने की अनुमति देते हैं। क्लाउड में, आपको अभी भी हर बार उनके लिए भुगतान करना होगा और मिनट नहीं, बल्कि मिनट (और एक आलसी लोड के मामले में, यह शायद घंटे हैं)।इसके बजाय, आप एक या दो सेकंड में यह डेटा प्राप्त कर सकते हैं, परीक्षण चला सकते हैं और इसे फेंक सकते हैं। ये स्नैपशॉट विभिन्न समस्याओं को हल करते हैं। पहले मामले में - पैमाने पर और नए प्रतिकृतियां प्राप्त करने के लिए, और दूसरे में - परीक्षणों के लिए।डीएस : मैं सहमत नहीं हूं। सामान्य रूप से क्लोनिंग क्लाउड का कार्य है। मैंने उनके कार्यान्वयन को नहीं देखा, लेकिन मुझे पता है कि हम इसे हार्डवेयर पर कैसे करते हैं। हमारे पास सिफ है, इसमें आप किसी भी भौतिक आयतन (
आरबीडी ) को
क्लोन करने के लिए कह सकते हैं और
मिलिसकेंड के दसियों में एक ही विशेषताओं,
आईओपीएस , आदि के साथ एक दूसरा वॉल्यूम प्राप्त कर सकते हैं। आपको समझना होगा कि अंदर एक मुश्किल कॉपी-ऑन-राइट है। बादल ऐसा क्यों नहीं करता है? मुझे यकीन है कि वे किसी तरह ऐसा करने की कोशिश कर रहे हैं।
NS : लेकिन वे अभी भी सेकंड लेंगे, उदाहरण के लिए दसियों सेकंड, डॉकर को वहां लाएंगे, आदि।डीएस : पूरे उदाहरण को उठाना क्यों आवश्यक है? लेकिन हमारे पास 32 कोर के लिए एक उदाहरण है, 16 के लिए ... और यह किसी भी तरह से फिट बैठता है - उदाहरण के लिए, चार। जब हम पांचवां आदेश देते हैं, तो उदाहरण बढ़ जाएगा, और फिर इसे हटा दिया जाएगा।
NS : हाँ, दिलचस्प बात यह है कि कुबेरनेट्स की एक अलग कहानी है। हमारा डेटाबेस K8s और एक उदाहरण में नहीं है। लेकिन बहु-टेराबाइट डेटाबेस का क्लोनिंग दो सेकंड से अधिक नहीं लेता है।DS : यह अच्छा है। लेकिन मेरा प्रारंभिक संदेश यह है कि यह एक सामान्य समाधान नहीं है। हां, यह अच्छा है, लेकिन केवल Postgres उपयुक्त है और केवल एक नोड पर है।
NS : यह न केवल Postgres के लिए उपयुक्त है: इन योजनाओं, जैसा कि मैंने वर्णित किया है, केवल उसी तरीके से काम करेगी। लेकिन अगर आप योजनाओं से परेशान नहीं हैं, लेकिन हमें केवल कार्यात्मक परीक्षण के लिए सभी डेटा की आवश्यकता है, तो यह किसी भी डीबीएमएस के लिए उपयुक्त है।DS : कई साल पहले हमने LVM स्नैपशॉट पर ऐसा किया था। यह एक क्लासिक है। इस दृष्टिकोण का बहुत सक्रिय रूप से उपयोग किया गया है। बस स्टेटफुल नोड्स एक दर्द है। क्योंकि उन्हें गिराए जाने की आवश्यकता नहीं है, हमेशा उनके बारे में याद रखें ...
NS : क्या आपको यहां कोई हाइब्रिड संभावना दिखाई देती है? मान लीजिए कि स्टेटफुल कुछ प्रकार की फली है, यह कई लोगों (कई परीक्षकों) के लिए काम करता है। हमारे पास एक वॉल्यूम है, लेकिन फ़ाइल सिस्टम के लिए धन्यवाद, क्लोन स्थानीय हैं। यदि पॉड गिरता है, तो डिस्क बनी रहती है - पॉड उगता है, यह सभी क्लोनों के बारे में जानकारी पर विचार करता है, सब कुछ वापस लेता है और कहता है: "यहां इन बंदरगाहों पर आपके क्लोन हैं, उनके साथ आगे काम करना शुरू करें।"DS : तकनीकी रूप से, इसका मतलब है कि कुबेरनेट्स के भीतर, यह एक पॉड है, जिसके अंदर हम कई पोस्टग्रेज चलाते हैं।
NS : हाँ। उसकी एक सीमा है: मान लीजिए, एक ही समय में, 10 से अधिक लोग उसके साथ काम नहीं करते हैं। यदि आपको 20 की आवश्यकता है - तो दूसरी ऐसी पॉड चलाएं। पूरी तरह से वास्तविक रूप से क्लोन, दूसरा पूर्ण मात्रा प्राप्त करने के बाद, यह एक ही 10 "पतली" क्लोन होगा। क्या ऐसा अवसर नहीं दिखता?डीएस : हमें यहां सुरक्षा मुद्दों को जोड़ना होगा। इस तरह के एक संगठन विकल्प का अर्थ है कि इस पॉड में उच्च क्षमताएं हैं क्योंकि यह फ़ाइल सिस्टम पर गैर-मानक संचालन कर सकता है ... लेकिन मैं दोहराता हूं: मेरा मानना है कि मध्यम अवधि में, कुबेरनेट्स में भंडारण तय हो जाएगा, वॉल्यूम के साथ पूरी कहानी बादलों में तय की जाएगी। - सब कुछ "बस काम कर रहा होगा।" यह आकार देगा, क्लोनिंग ... एक वॉल्यूम है - हम कहते हैं: "उसी के आधार पर एक नया बनाएं" - और एक दूसरे और एक आधे के बाद हमें वह मिलता है जो हमें चाहिए।
NS : मैं कई टेराबाइट्स के लिए डेढ़ सेकंड में विश्वास नहीं करता। सेफ पर, आप इसे स्वयं करते हैं, और आप बादलों के बारे में बात करते हैं। क्लाउड पर जाएं, EC2 पर, कई टेराबाइट्स के ईबीएस वॉल्यूम का क्लोन बनाएं और देखें कि प्रदर्शन क्या होगा। इसमें कुछ सेकंड नहीं लगते हैं। मुझे बहुत दिलचस्पी है जब वे इस तरह के एक संकेतक तक पहुंचते हैं। मैं समझता हूं कि आप किस बारे में बात कर रहे हैं, लेकिन मुझे असहमत होने दें।DS : ठीक है, लेकिन मैंने कहा कि मध्यम अवधि में, अल्पावधि नहीं। कई सालों तक।
Zalando से PostgreSQL के लिए प्रो ऑपरेटर
इस बैठक के मध्य में, ज़ालैंडो के एक पूर्व डेवलपर, एलेक्सी क्ल्युकिन, जिन्होंने पोस्टग्रेसीक्यूएल ऑपरेटर के इतिहास के बारे में बात की थी, ने भी उनका साथ दिया:
यह बहुत अच्छा है कि सामान्य तौर पर इस विषय को छुआ गया: पोस्टग्रैब्स और कुबेरनेट्स। जब हमने इसे 2017 में ज़ालैंडो में करना शुरू किया, तो यह ऐसा विषय था जिसे हर कोई करना चाहता था, लेकिन किसी ने नहीं किया। हर किसी के पास पहले से ही कुबेरनेट्स थे, लेकिन जब पूछा गया कि डेटाबेस के साथ क्या करना है, यहां तक कि केल्सी हाईटॉवर जैसे लोग जो K8 का प्रचार करते हैं, उन्होंने कुछ इस तरह कहा:
“प्रबंधित सेवाओं पर जाएं और उनका उपयोग करें; डेटाबेस को कुबेरनेट्स में शुरू न करें। अन्यथा, आपका K8 तय करेगा, उदाहरण के लिए, अपग्रेड करने के लिए, सभी नोड्स को बाहर करें, और आपका डेटा दूर, बहुत दूर तक उड़ जाएगा। "
हमने एक ऑपरेटर बनाने का फैसला किया, जो इस सलाह के विपरीत, कुबेरनेट्स में पोस्टग्रेज डेटाबेस लॉन्च करेगा। और हमारे पास एक अच्छी नींव थी - पेट्रोनी । यह सही तरीके से किए गए PostgreSQL के लिए एक स्वचालित विफलता है, अर्थात। क्लस्टर जानकारी के लिए भंडार के रूप में etcd, consul या ZooKeeper का उपयोग करना। ऐसा भंडार जो हर किसी को दिया जाएगा, उदाहरण के लिए, जो नेता अब है, वही जानकारी - इस तथ्य के बावजूद कि हमारे पास सब कुछ वितरित है - ताकि कोई विभाजित मस्तिष्क न हो। इसके अलावा, हमारे पास उसके लिए डॉकटर की छवि थी।
सामान्य तौर पर, आंतरिक लौह डेटा केंद्र से क्लाउड पर माइग्रेशन के बाद कंपनी में ऑटो फ़ेलओवर की आवश्यकता प्रकट होती है। क्लाउड PaaS (प्लेटफॉर्म-ए-ए-सर्विस) के मालिकाना समाधान पर आधारित था। यह ओपन सोर्स है, लेकिन इसे बढ़ाने के लिए आपको कड़ी मेहनत करनी होगी। इसे STUPS कहा जाता था।
प्रारंभ में, कुबेरनेट्स नहीं थे। अधिक सटीक रूप से, जब इसका अपना समाधान तैनात किया गया था, तो K8 पहले से ही था, लेकिन इतना कच्चा था कि यह उत्पादन के लिए उपयुक्त नहीं था। यह मेरी राय में, 2015 या 2016 था। 2017 तक, कुबेरनेट्स कम या ज्यादा परिपक्व हो गए - वहां प्रवास करने की आवश्यकता थी।
और हमारे पास पहले से ही एक डॉकटर कंटेनर था। वहाँ PaaS है कि Docker इस्तेमाल किया गया था। क्यों K8s की कोशिश नहीं की? अपना वक्तव्य क्यों नहीं लिखा? मूरत काबिलोव, जो एविटो से हमारे पास आया था, ने इसे अपनी पहल पर एक परियोजना के रूप में शुरू किया - "प्ले" - और प्रोजेक्ट "टेक ऑफ" कर लिया।
लेकिन सामान्य तौर पर, मैं एडब्ल्यूएस के बारे में बात करना चाहता था। क्यों ऐतिहासिक रूप से AWS संबंधित कोड था ...
जब आप कुबेरनेट्स में कुछ चलाते हैं, तो आपको यह समझने की आवश्यकता है कि K8s इस तरह के काम में प्रगति कर रहा है। यह लगातार विकसित हो रहा है, सुधार कर रहा है और समय-समय पर टूट भी रहा है। आपको कुबेरनेट्स में सभी परिवर्तनों की सावधानीपूर्वक निगरानी करने की आवश्यकता है, आपको इसमें खुद को विसर्जित करने के लिए तैयार रहने की आवश्यकता है, और यह पता करें कि यह कैसे विस्तार से काम करता है - शायद जितना आप चाहते हैं। यह सिद्धांत रूप में, किसी भी मंच जिस पर आप अपने डेटाबेस चलाते हैं ...
इसलिए, जब हमने बयान दिया, हमारे पास पोस्टग्रेज थे, जो एक बाहरी वॉल्यूम (इस मामले में, ईबीएस, जब से हमने एडब्ल्यूएस में काम किया था) के साथ काम किया था। डेटाबेस बढ़ रहा था, किसी समय इसका आकार बदलना आवश्यक था: उदाहरण के लिए, ईबीएस का मूल आकार 100 टीबी है, डेटाबेस इसके लिए बड़ा हो गया है, अब हम 200 टीबी में ईबीएस बनाना चाहते हैं। कैसे? मान लीजिए कि आप एक नए उदाहरण को डंप / रिस्टोर कर सकते हैं, लेकिन यह लंबा और डाउनटाइम के साथ है।
इसलिए, मैं एक आकार बदलना चाहता था जो ईबीएस विभाजन का विस्तार करेगा और फिर नई जगह का उपयोग करने के लिए फ़ाइल सिस्टम को बताएगा। और हमने इसे किया था, लेकिन उस समय कुबेरनेट्स के पास रिसाइज़ ऑपरेशन के लिए कोई एपीआई नहीं था। चूंकि हमने AWS पर काम किया था, इसलिए हमने इसके एपीआई के लिए कोड लिखा था।
कोई भी अन्य प्लेटफार्मों के लिए ऐसा करने के लिए परेशान नहीं करता है। इस कथन में कोई जटिलता नहीं है कि इसे केवल AWS पर चलाया जा सकता है, और इसने बाकी सभी चीजों पर काम नहीं किया। सामान्य तौर पर, यह एक ओपन सोर्स प्रोजेक्ट है: यदि कोई भी नए एपीआई के उपयोग में तेजी लाना चाहता है, तो हमारा स्वागत है। GitHub है , पुल-अनुरोध - ज़ालैंडो टीम उन्हें जल्दी से जवाब देने और ऑपरेटर को बढ़ावा देने की कोशिश कर रही है। जहाँ तक मुझे पता है, परियोजना ने Google समर ऑफ़ कोड और कुछ अन्य समान पहलों में भाग लिया । ज़ालैंडो इस पर बहुत सक्रिय है।
पुनश्च बोनस!
यदि आप PostgreSQL और Kubernetes के विषय में रुचि रखते हैं, तो हम इस तथ्य पर भी ध्यान आकर्षित करते हैं कि पिछले हफ्ते अगला पोस्टग्रैज हुआ था, जहां
ज़ालैंडो के अलेक्जेंडर कुकुश्किन ने निकोलाई के साथ बात की थी। इसका वीडियो
यहां उपलब्ध
है ।
पी पी एस
हमारे ब्लॉग में भी पढ़ें: