টিন্ডার কুবারনেটসে চলে গেছে

লিখেছেন: ক্রিস ওব্রায়ান, ইঞ্জিনিয়ারিং ম্যানেজার | ক্রিস টমাস, ইঞ্জিনিয়ারিং ম্যানেজার | জিনিয়ং লি, সিনিয়র সফটওয়্যার ইঞ্জিনিয়ার | সম্পাদনা করেছেন: কুপার জ্যাকসন, সফটওয়্যার ইঞ্জিনিয়ার

কেন

প্রায় দুই বছর আগে, টিন্ডার তার প্ল্যাটফর্মটি কুবারনেটসে স্থানান্তরিত করার সিদ্ধান্ত নিয়েছে। কুবারনেটস অপরিবর্তনীয় স্থাপনার মাধ্যমে টেন্ডার ইঞ্জিনিয়ারিংকে ধারককরণ এবং লো-টাচ অপারেশনের দিকে চালিত করার সুযোগ দিয়েছিল। অ্যাপ্লিকেশন বিল্ড, স্থাপনা এবং অবকাঠামো কোড হিসাবে সংজ্ঞায়িত করা হবে।

আমরা স্কেল এবং স্থিতিশীলতার চ্যালেঞ্জগুলি মোকাবিলার দিকেও তাকিয়ে ছিলাম। যখন স্কেলিং সমালোচনা হয়ে ওঠে, আমরা প্রায়শই নতুন ইসি 2 উদাহরণ অনলাইনে আসার জন্য বেশ কয়েক মিনিটের জন্য অপেক্ষা করি। মিনিটের বিপরীতে কয়েক সেকেন্ডের মধ্যে কন্টেইনারগুলির নির্ধারিত সময় এবং ট্র্যাফিক নির্ধারণের ধারণাটি আমাদের কাছে আবেদন করেছিল।

এটা সহজ ছিল না। 2019 এর শুরুর দিকে আমাদের স্থানান্তরকালে, আমরা আমাদের কুবেরনেটস ক্লাস্টারের মধ্যে সমালোচনামূলক ভর পৌঁছেছি এবং ট্র্যাফিকের পরিমাণ, ক্লাস্টারের আকার এবং ডিএনএসের কারণে বিভিন্ন চ্যালেঞ্জের মুখোমুখি হতে শুরু করেছি। আমরা 200 টি পরিষেবা স্থানান্তরিত করার জন্য আকর্ষণীয় চ্যালেঞ্জগুলি সমাধান করেছি এবং মোট 1000 টি নোড, 15,000 শুঁটি এবং 48,000 চলমান পাত্রে স্কেল করে একটি কুবারনেটস ক্লাস্টার চালাচ্ছি।

কিভাবে

জানুয়ারী 2018 থেকে শুরু করে, আমরা মাইগ্রেশন প্রচেষ্টার বিভিন্ন পর্যায়ে আমাদের পথে কাজ করেছি। আমরা আমাদের পরিষেবাগুলিতে সমস্ত ধারককরণের মাধ্যমে এবং সেগুলি কুবার্নেটের হোস্টিং স্টেজিং এনভায়রনমেন্টগুলির একটি সিরিজে স্থাপন করে শুরু করেছি। অক্টোবরের শুরুতে, আমরা পদ্ধতিগতভাবে আমাদের সমস্ত উত্তরাধিকার পরিষেবাকে কুবেরনেতে স্থানান্তরিত করতে শুরু করি। পরের বছর মার্চের মধ্যে, আমরা আমাদের স্থানান্তরকে চূড়ান্ত করেছিলাম এবং টিন্ডার প্ল্যাটফর্মটি এখন একচেটিয়াভাবে কুবারনেটসে চলে।

কুবেরনেটসের জন্য বিল্ডিং চিত্রগুলি

কুবেরনেটস ক্লাস্টারে চলছে এমন মাইক্রোসার্ভিসেসগুলির জন্য 30 টিরও বেশি উত্স কোড সংগ্রহস্থল রয়েছে। এই ভাণ্ডারগুলিতে কোড একই ভাষার একাধিক রানটাইম পরিবেশ সহ বিভিন্ন ভাষায় (যেমন, নোড.জেএস, জাভা, স্কালা, গো) লেখা হয়।

বিল্ড সিস্টেমটি প্রতিটি মাইক্রোসার্চিসের জন্য সম্পূর্ণ কাস্টমাইজযোগ্য "বিল্ড প্রসঙ্গে" পরিচালনা করার জন্য ডিজাইন করা হয়েছে, যা সাধারণত ডকফেরফিল এবং শেল কমান্ডগুলির একটি সিরিজ থাকে। যদিও তাদের বিষয়বস্তুগুলি সম্পূর্ণ কাস্টমাইজযোগ্য, এই বিল্ড প্রসঙ্গে সমস্তই একটি মানক বিন্যাস অনুসরণ করে লেখা হয়। বিল্ড প্রসঙ্গে প্রমিতকরণের মানককরণ একটি একক বিল্ড সিস্টেমকে সমস্ত মাইক্রোসার্ভিসেস পরিচালনা করতে দেয়।

চিত্র 1–1 নির্মাতা পাত্রে মাধ্যমে স্ট্যান্ডার্ডাইজড বিল্ড প্রক্রিয়া

রানটাইম পরিবেশের মধ্যে সর্বাধিক ধারাবাহিকতা অর্জনের জন্য, উন্নয়ন এবং পরীক্ষার পর্যায়ে একই বিল্ড প্রক্রিয়াটি ব্যবহৃত হচ্ছে। প্ল্যাটফর্ম জুড়ে ধারাবাহিকভাবে বিল্ডিং পরিবেশের গ্যারান্টি দেওয়ার জন্য যখন আমাদের কোনও উপায় তৈরি করার প্রয়োজন হয়েছিল তখন এটি একটি অনন্য চ্যালেঞ্জ চাপিয়ে দেয়। ফলস্বরূপ, সমস্ত বিল্ড প্রক্রিয়াগুলি একটি বিশেষ "বিল্ডার" ধারকটির মধ্যে কার্যকর করা হয়।

বিল্ডার ধারক কার্যকর করার জন্য বেশ কয়েকটি উন্নত ডকার কৌশল প্রয়োজন। এই বিল্ডার কনটেইনার স্থানীয় ব্যবহারকারী আইডি এবং গোপনীয়তার (যেমন, এসএসএইচ কী, এডাব্লুএস শংসাপত্রাদি ইত্যাদি) উত্তরাধিকার সূত্রে টিন্ডার ব্যক্তিগত সংগ্রহস্থলগুলিতে অ্যাক্সেসের প্রয়োজন হয়। বিল্ড আর্টিক্টস সংরক্ষণের প্রাকৃতিক উপায়ে সোর্স কোড সম্বলিত স্থানীয় ডিরেক্টরিগুলি এটি মাউন্ট করে। এই পদ্ধতির ফলে কর্মক্ষমতা উন্নত হয়, কারণ এটি বিল্ডার ধারক এবং হোস্ট মেশিনের মধ্যে নির্মিত নিদর্শনগুলি অনুলিপি করে বাদ দেয়। পরবর্তী কনফিগারেশন ছাড়াই সঞ্চিত বিল্ড আর্টফিটগুলি পরের বার পুনরায় ব্যবহৃত হবে।

নির্দিষ্ট পরিষেবার জন্য, রান-টাইম এনভায়রনমেন্টের সাথে কম্পাইল-টাইম এনভায়রনমেন্টের সাথে মেলে তুলতে আমাদের বিল্ডারের মধ্যে আরও একটি ধারক তৈরি করা দরকার (উদাঃ, নোড.জেএস বিসিক্রিপ্ট লাইব্রেরি প্ল্যাটফর্ম-নির্দিষ্ট বাইনারি শিল্পকর্ম তৈরি করে)। সংকলন-সময়ের প্রয়োজনীয়তা পরিষেবাগুলির মধ্যে পৃথক হতে পারে এবং চূড়ান্ত ডকফেরফিলটি ফ্লাইয়ে রচিত হয়।

কুবেরনেটস ক্লাস্টার আর্কিটেকচার এবং মাইগ্রেশন

ক্লাস্টার সাইজিং

অ্যামাজন ইসি 2 উদাহরণগুলিতে স্বয়ংক্রিয় ক্লাস্টারের বিধানের জন্য আমরা কুব-আউস ব্যবহার করার সিদ্ধান্ত নিয়েছি। প্রথমদিকে, আমরা একটি সাধারণ নোড পুলে সবকিছু চালাচ্ছিলাম। সংস্থানগুলির আরও ভাল ব্যবহারের জন্য আমরা দ্রুত কাজের চাপকে বিভিন্ন আকার এবং দৃষ্টান্তের ধরণের মধ্যে আলাদা করার প্রয়োজনীয়তা সনাক্ত করেছি। যুক্তিটি হ'ল কম ভারী থ্রেডযুক্ত শুঁটি একসাথে চালানো আমাদের জন্য আরও বেশি অনুমানযোগ্য পারফরম্যান্সের ফলস্বরূপ ফলন করেছিল যে এগুলি একক থ্রেডযুক্ত পোডের সংখ্যক সহাবস্থান থাকতে দেয়।

আমরা স্থিতি:

  • পর্যবেক্ষণের জন্য m5.4xlarge (প্রমিথিউস)
  • নোড.জেএস ওয়ার্কলোড (সিঙ্গল-থ্রেডড ওয়ার্কলোড) এর জন্য সি 5.4xlarge
  • জাভা এবং গো (মাল্টি-থ্রেডেড ওয়ার্কলোড) এর জন্য c5.2xlarge
  • কন্ট্রোল প্লেনের জন্য সি 5.4xlarge (3 নোড)

অভিপ্রয়াণ

আমাদের উত্তরাধিকার অবকাঠামো থেকে কুবারনেটসে স্থানান্তরের প্রস্তুতির একটি পদক্ষেপ ছিল একটি নির্দিষ্ট ভার্চুয়াল প্রাইভেট ক্লাউড (ভিপিসি) সাবনেটে নির্মিত নতুন ইলাস্টিক লোড ব্যালান্সার (ইএলবি) -র দিকে ইঙ্গিত করার জন্য বিদ্যমান পরিষেবা-থেকে-পরিষেবা যোগাযোগকে পরিবর্তন করা। এই সাবনেটটি কুবারনেটস ভিপিসিতে দেখানো হয়েছিল। এটি আমাদের নির্ভরশীলতার জন্য পরিষেবা নির্ভরতার জন্য নির্দিষ্ট ক্রমানুসারে মডিউলগুলিকে গ্রানুলারালি মাইগ্রেট করার অনুমতি দেয়।

এই শেষবিন্দুগুলি ওয়েটড ডিএনএস রেকর্ড সেটগুলি ব্যবহার করে তৈরি করা হয়েছিল যাতে প্রতিটি নতুন ইএলবিতে একটি সিএনএম নির্দেশ করা হয়েছিল। কাটাওভারে, আমরা একটি নতুন রেকর্ড যুক্ত করেছি, 0 টি নতুন ওজন সহ নতুন কুবারনেটস পরিষেবা ELB এর দিকে ইঙ্গিত করে, আমরা তারপরে রেকর্ড সেটটিতে টাইম টু লাইভ (টিটিএল) সেট করলাম 0 তে। পুরানো এবং নতুন ওজনগুলি ধীরে ধীরে সামঞ্জস্য করা হয়েছিল শেষ পর্যন্ত নতুন সার্ভারে 100% দিয়ে শেষ হয়। কাটাওভারটি সম্পূর্ণ হওয়ার পরে, টিটিএল আরও যুক্তিসঙ্গত কিছুতে সেট করা হয়েছিল।

আমাদের জাভা মডিউলগুলি কম ডিএনএস টিটিএলকে সম্মানিত করেছে, কিন্তু আমাদের নোড অ্যাপ্লিকেশনগুলি তা করে নি। আমাদের একজন ইঞ্জিনিয়ার সংযোগ পুল কোডটির অংশটি আবার কোনও লিখিতভাবে এটি এমন কোনও পরিচালককে মোড়কে লিখতে পারেন যাতে প্রতি 60s এর মধ্যে পুলগুলি রিফ্রেশ হয়। এটি কোনও প্রশংসনীয় পারফরম্যান্স হিট না করে আমাদের পক্ষে খুব ভালভাবে কাজ করেছে।

শিক্ষা

নেটওয়ার্ক তারেক সীমা

2019 এর 8 ই জানুয়ারীর ভোরের দিকে, টিন্ডারের প্ল্যাটফর্মটি অবিচ্ছিন্ন বিভ্রাটের শিকার হয়েছিল। এর আগে সকালে সকালে প্ল্যাটফর্মের বিলম্বের ক্ষেত্রে কোনও সম্পর্কহীন বৃদ্ধির প্রতিক্রিয়া হিসাবে, গুচ্ছটিতে পোড এবং নোডের সংখ্যাগুলি মাপা হয়েছিল। এর ফলে আমাদের সমস্ত নোডে এআরপি ক্যাশে ক্লান্তি প্রকাশিত হয়েছিল।

এআরপি ক্যাশের সাথে সম্পর্কিত লিনাক্সের তিনটি মান রয়েছে:

ধার

gc_thresh3 একটি হার্ড ক্যাপ। যদি আপনি "প্রতিবেশী টেবিল ওভারফ্লো" লগ এন্ট্রিগুলি পান, এটি এটি নির্দেশ করে যে এআরপি ক্যাশের একটি সিঙ্ক্রোনাস আবর্জনা সংগ্রহের (জিসি) পরেও প্রতিবেশী প্রবেশ প্রবেশের জন্য পর্যাপ্ত জায়গা ছিল না। এই ক্ষেত্রে, কার্নেল কেবল প্যাকেটটি পুরোপুরি ফেলে দেয়।

আমরা কুবারনেটসে আমাদের নেটওয়ার্ক ফ্যাব্রিক হিসাবে ফ্ল্যানেল ব্যবহার করি। প্যাকেটগুলি ভিএক্সএলএএন এর মাধ্যমে ফরোয়ার্ড করা হয়। ভিএক্সএলএএন হ'ল একটি স্তর 3 নেটওয়ার্কের উপর একটি স্তর 2 ওভারলে স্কিম। এটি লেয়ার 2 নেটওয়ার্ক বিভাগগুলিকে প্রসারিত করার উপায় সরবরাহ করতে ম্যাক অ্যাড্রেস-ইন-ইউজার ডেটাগ্রাম প্রোটোকল (ম্যাক-ইন-ইউডিপি) এনক্যাপসুলেশন ব্যবহার করে। ফিজিকাল ডেটা সেন্টার নেটওয়ার্কের মাধ্যমে পরিবহন প্রোটোকলটি আইপি প্লাস ইউডিপি।

চিত্র 2-1 ফ্ল্যানেল চিত্র (ক্রেডিট)

চিত্র 2–2 ভিএক্সএলএএন প্যাকেট (ক্রেডিট)

প্রতিটি কুবারনেটস কর্মী নোড একটি বৃহত / 9 ব্লকের বাইরে ভার্চুয়াল ঠিকানার নিজের 24/24 ভাগ বরাদ্দ করে। প্রতিটি নোডের জন্য, এর ফলে 1 টি রুট টেবিল এন্ট্রি, 1 টি এআরপি টেবিল এন্ট্রি (ফ্ল্যানেল 1 ইন্টারফেসে) এবং 1 ফরোয়ার্ডিং ডাটাবেস (এফডিবি) এন্ট্রি হয়। এগুলি যুক্ত করা হয় যখন কর্মী নোড প্রথম প্রবর্তন করেন বা প্রতিটি নতুন নোড আবিষ্কার হয়।

তদতিরিক্ত, নোড-টু-পড (বা পড-টু-পড) যোগাযোগ শেষ পর্যন্ত এথ0 ইন্টারফেসের উপর দিয়ে প্রবাহিত হয় (উপরের ফ্ল্যানেল ডায়াগ্রামে চিত্রিত)। এটি প্রতিটি নোড উত্স এবং নোড গন্তব্যের জন্য এআরপি টেবিলের অতিরিক্ত প্রবেশের ফলাফল করবে।

আমাদের পরিবেশে, এই ধরণের যোগাযোগ খুব সাধারণ। আমাদের কুবেরনেটস পরিষেবা সামগ্রীর জন্য একটি ELB তৈরি হয় এবং কুবারনেটস প্রতিটি নোডকে ELB দিয়ে নিবন্ধন করে। ELB পড সচেতন নয় এবং নির্বাচিত নোড প্যাকেটের চূড়ান্ত গন্তব্য নাও হতে পারে। এর কারণ হ'ল নোড যখন ইএলবি থেকে প্যাকেটটি গ্রহণ করে, তখন সেবার জন্য এটির আইপটিবল নিয়মগুলি মূল্যায়ণ করে এবং এলোমেলোভাবে অন্য নোডে একটি পোড নির্বাচন করে।

বিভ্রাটের সময়, ক্লাস্টারে মোট নোড 605 ছিল। উপরে বর্ণিত কারণগুলির জন্য, এটি ডিফল্ট gc_thresh3 মানটি গ্রহণের জন্য যথেষ্ট ছিল। একবার এটি হয়ে গেলে, কেবল প্যাকেটগুলি বাদ দেওয়া হয় না, তবে পুরো ফ্ল্যানেল / 24 এস ভার্চুয়াল ঠিকানার স্থানটি এআরপি টেবিল থেকে অনুপস্থিত। নোড টু পড যোগাযোগ এবং DNS লুকআপ ব্যর্থ। (ডিএনএসকে গুচ্ছের মধ্যে হোস্ট করা হয়েছে, যেহেতু পরে এই নিবন্ধে আরও বিস্তারিতভাবে ব্যাখ্যা করা হবে))

সমাধানের জন্য, gc_thresh1, gc_thresh2, এবং gc_thresh3 মান উত্থাপন করা হয়েছে এবং নিখোঁজ নেটওয়ার্কগুলি পুনরায় নিবন্ধনের জন্য ফ্ল্যানেল পুনরায় শুরু করতে হবে।

অপ্রত্যাশিতভাবে স্কেলে ডিএনএস চালানো

আমাদের মাইগ্রেশনকে সামঞ্জস্য করার জন্য, আমরা আমাদের পরিষেবার জন্য লিবারেসি থেকে কুবেরনেটস পর্যন্ত ট্র্যাফিক শেপিং এবং ইনক্রিমেন্টাল কাটওভার সুবিধার্থে আমরা ডিএনএসকে ভারীভাবে ব্যবহার করেছি। আমরা সম্পর্কিত রুট 53 রেকর্ডসেটগুলিতে তুলনামূলকভাবে কম টিটিএল মান সেট করি। যখন আমরা ইসি 2 উদাহরণগুলিতে আমাদের উত্তরাধিকারের অবকাঠামো চালাই, তখন আমাদের সমাধানকারী কনফিগারেশনটি অ্যামাজনের ডিএনএসের দিকে ইঙ্গিত করে। আমরা এটিকে সম্মতি দিয়েছি এবং আমাদের পরিষেবাদি এবং অ্যামাজনের পরিষেবাগুলির (যেমন ডায়নামোডিবি) তুলনামূলকভাবে কম টিটিএল-এর ব্যয় বেশিরভাগের নজরেই গেছে।

যখন আমরা কুবারনেটসে আরও বেশি সংখ্যক পরিষেবা চালিত হয়েছি, আমরা আমাদের নিজেদের একটি ডিএনএস পরিষেবা চালিয়ে দেখতে পেয়েছি যা প্রতি সেকেন্ডে 250,000 অনুরোধের উত্তর দিচ্ছে। আমরা আমাদের অ্যাপ্লিকেশনগুলির মধ্যে মাঝে মাঝে এবং কার্যকর ডিএনএস লুকোচুরির সময়সীমার মুখোমুখি হয়েছি। এটি সম্পূর্ণরূপে সুর করার চেষ্টা এবং একটি DNS সরবরাহকারী একটি CoreDNS স্থাপনার স্যুইচ করে সত্ত্বেও ঘটেছিল যা একবারে ১২০ টি কোরে গ্রাসকারী 1000 পোডে পৌঁছেছিল।

অন্যান্য সম্ভাব্য কারণ ও সমাধানগুলি গবেষণা করার সময়, আমরা একটি নিবন্ধ পেয়েছি যা একটি রেস শর্ত বর্ণনা করে লিনাক্স প্যাকেট ফিল্টারিং ফ্রেমওয়ার্ক নেটফিল্টারকে প্রভাবিত করে। ফ্ল্যানেল ইন্টারফেসে একটি ইনক্রিমেন্টিং ইনসার্ট_ফেইলড কাউন্টার সহ আমরা যে ডিএনএস টাইমআউটগুলি দেখছিলাম, সেগুলি নিবন্ধের অনুসন্ধানগুলির সাথে সামঞ্জস্য করা হয়েছে।

উত্স এবং গন্তব্য নেটওয়ার্ক ঠিকানা অনুবাদ (এসএনএটি এবং ডিএনএটি) এবং পরবর্তীকালে কনট্র্যাক সারণিতে সন্নিবেশ করার সময় সমস্যাটি দেখা দেয়। অভ্যন্তরীণভাবে আলোচিত এবং সম্প্রদায়ের দ্বারা প্রস্তাবিত একটি কর্মচক্রটি হ'ল ডিএনএসকে কর্মী নোডের দিকে নিয়ে যাওয়া। এক্ষেত্রে:

  • এসএনএটি প্রয়োজনীয় নয়, কারণ ট্রাফিক স্থানীয়ভাবে নোডে অবস্থান করছে। এটি এথ0 ইন্টারফেস জুড়ে প্রেরণ করার দরকার নেই।
  • ডিএনএটি প্রয়োজনীয় নয় কারণ গন্তব্য আইপি নোডের স্থানীয় এবং iptables নিয়মে এলোমেলোভাবে নির্বাচিত পোড নয়।

আমরা এই পদ্ধতির সাথে এগিয়ে যাওয়ার সিদ্ধান্ত নিয়েছি। কোরডএনএস কুবারনেটসে ডেমনসেট হিসাবে মোতায়েন করা হয়েছিল এবং আমরা নুডের স্থানীয় ডিএনএস সার্ভারকে প্রতিটি পোডের রেজোলভকনফ-তে কুবেলেট - ক্লাস্টার-ডিএনএস কমান্ড পতাকাটি কনফিগার করে ইনজেকশন দিয়েছিলাম। ওয়ার্কআরউন্ডটি ডিএনএস সময়সীমার জন্য কার্যকর ছিল।

যাইহোক, আমরা এখনও বাদ প্যাকেট এবং ফ্ল্যানেল ইন্টারফেসের সন্নিবেশ_ফয়েলটি পাল্টা বৃদ্ধি দেখি। উপরের কাজটির পরেও এটি অব্যাহত থাকবে কারণ আমরা কেবল ডিএনএস ট্র্যাফিকের জন্য এসএনএটি এবং / অথবা ডিএনএটি এড়িয়ে চলি। অন্যান্য ধরণের ট্র্যাফিকের জন্য এখনও রেসের শর্তটি দেখা দেবে। ভাগ্যক্রমে, আমাদের প্যাকেটগুলির বেশিরভাগ টিসিপি হয় এবং যখন শর্তটি আসে তখন প্যাকেটগুলি সফলভাবে পুনঃপ্রেরণ করা হবে। সকল ধরণের ট্র্যাফিকের জন্য একটি দীর্ঘমেয়াদী স্থিরতা এমন কিছু যা আমরা এখনও আলোচনা করছি।

ভাল লোড ভারসাম্য অর্জনের জন্য দূত ব্যবহার করা

আমরা যখন আমাদের ব্যাকএন্ড পরিষেবাগুলি কুবারনেটসে স্থানান্তরিত করেছি, তখন আমরা শুকনো জুড়ে ভারসাম্যহীন ভারে ভুগতে শুরু করি। আমরা আবিষ্কার করেছি যে এইচটিটিপি কিপালাইভের কারণে, প্রতিটি রোলিং মোতায়েনের প্রথম প্রস্তুত পোডগুলিতে ইএলবি সংযোগগুলি আটকে রয়েছে, তাই বেশিরভাগ ট্র্যাফিক উপলব্ধ পোডের একটি ছোট শতাংশের মধ্য দিয়ে প্রবাহিত হয়েছিল। আমরা যে প্রথমটি প্রশমিত করার চেষ্টা করেছি তার মধ্যে একটি হ'ল সবচেয়ে খারাপ অপরাধীদের জন্য নতুন মোতায়েনের ক্ষেত্রে 100% ম্যাক্সসার্জ ব্যবহার করা। এটি কিছুটা বড় মোতায়েনের সাথে প্রান্তিক কার্যকর এবং দীর্ঘস্থায়ী নয়।

আমরা যে অন্য প্রশমনটি ব্যবহার করেছি তা হ'ল সমালোচনামূলক পরিষেবাগুলিতে কৃত্রিমভাবে রিসোর্স অনুরোধগুলি স্ফীত করে দেওয়া যাতে কোলোকেটেড পোডগুলিতে অন্যান্য ভারী পোদের পাশাপাশি আরও বেশি শিরোনাম হয়। রিসোর্স বর্জ্যের কারণে এটি দীর্ঘমেয়াদে কার্যকরও হতে পারে না এবং আমাদের নোড অ্যাপ্লিকেশনগুলি একক থ্রেডযুক্ত ছিল এবং এইভাবে কার্যকরভাবে 1 কোর এ ক্যাপ করা হয়েছিল। আরও ভাল লোড ব্যালেন্সিংকে কাজে লাগানোর একমাত্র পরিষ্কার সমাধান ছিল।

আমরা অভ্যন্তরীণভাবে রাষ্ট্রদূতকে মূল্যায়ন করার চেষ্টা করছিলাম। এটি আমাদের খুব সীমিত ফ্যাশনে এটি মোতায়েন করার এবং তাত্ক্ষণিক সুবিধাগুলি কাটাবার সুযোগ দিয়েছিল। দূত হ'ল একটি মুক্ত উত্স, উচ্চ-কর্মক্ষমতা লেয়ার 7 প্রক্সি বৃহত পরিষেবা-ভিত্তিক আর্কিটেকচারের জন্য ডিজাইন করা। এটি স্বয়ংক্রিয় পুনরায় চেষ্টা, সার্কিট ব্রেকিং এবং বৈশ্বিক হার সীমাবদ্ধকরণ সহ উন্নত লোড ব্যালেন্সিং কৌশলগুলি প্রয়োগ করতে সক্ষম।

আমরা যে কনফিগারেশনটি নিয়ে এসেছি তা হ'ল প্রতিটি পডের পাশাপাশি একটি রাষ্ট্রদূত সিডিকার থাকা যা স্থানীয় কন্টেইনার বন্দরে আঘাত হানার জন্য একটি রুট এবং ক্লাস্টার ছিল। সম্ভাব্য ক্যাসকেডিং হ্রাস করতে এবং একটি ছোট ব্লাস্ট ব্যাসার্ধ ধরে রাখতে আমরা প্রতিটি সার্ভিসের জন্য ফ্রন্ট-প্রক্সি দূত পোডগুলির একটি বহর ব্যবহার করেছি, প্রতিটি সার্ভিসের জন্য প্রতিটি উপলভ্যতা জোনে (এজেড) একটি করে স্থাপনা ব্যবহার করেছি। এগুলি আমাদের একটি ইঞ্জিনিয়ারকে একত্রে একটি ছোট পরিষেবা আবিষ্কারের ব্যবস্থাকে একত্রিত করে যা প্রদত্ত পরিষেবার জন্য প্রতিটি এজেডে শিংয়ের একটি তালিকা ফিরিয়ে দেয়।

পরিষেবা সম্মুখ-দূতগণ তারপরে একটি প্রবাহের ক্লাস্টার এবং রুটের সাহায্যে এই পরিষেবা আবিষ্কার পদ্ধতিটি ব্যবহার করে। আমরা যুক্তিসঙ্গত সময়সীমা কনফিগার করেছি, সমস্ত সার্কিট ব্রেকার সেটিংসকে বাড়িয়েছি এবং তারপরে ক্ষণস্থায়ী ব্যর্থতা এবং মসৃণ মোতায়েনের জন্য সহায়তা করার জন্য একটি ন্যূনতম পুনরায় চেষ্টা কনফিগারেশন রেখেছি। আমরা এই সামনের দূত পরিষেবার প্রতিটি টিসিপি ইএলবি দিয়ে ফ্রন্ট করেছি। এমনকি যদি আমাদের প্রধান সামনের প্রক্সি স্তর থেকে রক্ষণশীল কিছু নির্দিষ্ট দূত পোডে পিন হয়ে যায় তবে এগুলি লোডটি হ্যান্ডেল করতে আরও ভাল সক্ষম ছিল এবং সর্বনিম্ন_প্রযুক্তির মাধ্যমে ব্যাকএন্ডে ভারসাম্য বজায় রাখতে কনফিগার করা হয়েছিল।

মোতায়েনের জন্য, আমরা অ্যাপ্লিকেশন এবং সিডিকার পড উভয়ের জন্য একটি প্রিস্টপ হুক ব্যবহার করেছি। এই হুকটি সিডিকার স্বাস্থ্য চেক ব্যর্থ করে অ্যাডমিন এন্ডপয়েন্টটি, একটি ছোট ঘুম সহ, ইনফ্লাইট সংযোগগুলি সম্পূর্ণরূপে এবং নিষ্কাশনের অনুমতি দেওয়ার জন্য কিছু সময় দেয়।

আমরা এত তাড়াতাড়ি চলতে পারার একটি কারণ হ'ল সমৃদ্ধ মেট্রিকগুলির কারণে আমরা আমাদের সাধারণ প্রমিথিউস সেটআপটির সাথে সহজেই সংহত করতে সক্ষম হয়েছি। কনফিগারেশন সেটিংসে ট্র্যাফিক কাটা এবং ট্র্যাফিক কাটাতে গিয়ে আমাদের ঠিক কী ঘটছে তা এটি আমাদের দেখতে দেয়।

ফলাফল তাত্ক্ষণিক এবং সুস্পষ্ট ছিল। আমরা সর্বাধিক ভারসাম্যহীন পরিষেবা দিয়ে শুরু করেছি এবং এই মুহুর্তে এটি আমাদের ক্লাস্টারের সবচেয়ে গুরুত্বপূর্ণ পরিষেবাগুলির বারোটির সামনে চলছে। এই বছর আমরা আরও উন্নত পরিষেবা আবিষ্কার, সার্কিট ব্রেকিং, আউটলেট সনাক্তকরণ, হার সীমাবদ্ধকরণ এবং ট্রেসিং সহ একটি পূর্ণ-পরিষেবা জাল নিয়ে যাওয়ার পরিকল্পনা করছি।

রাষ্ট্রদূতকে কাটওভার করার সময় চিত্র 3-11 সিপিইউর একটি সেবার কনভার্সেশন

শেষ ফলাফল

এই শিক্ষাগুলি এবং অতিরিক্ত গবেষণার মাধ্যমে, আমরা একটি বৃহত কুবারনেটস ক্লাস্টারগুলি ডিজাইন, মোতায়েন ও পরিচালনা করার বিষয়ে অত্যন্ত পরিচিততার সাথে একটি শক্তিশালী ইন-হাউস অবকাঠামো দল তৈরি করেছি। টিন্ডারের পুরো ইঞ্জিনিয়ারিং সংস্থার কাছে এখন কুবেরনেটসে কীভাবে তাদের অ্যাপ্লিকেশনগুলি ধারককরণ এবং স্থাপন করা যায় সে সম্পর্কে জ্ঞান এবং অভিজ্ঞতা রয়েছে।

আমাদের লিগ্যাসি অবকাঠামোতে, যখন অতিরিক্ত স্কেল প্রয়োজন হত, আমরা প্রায়শই বেশ কয়েক মিনিটের জন্য নতুন ইসি 2 উদাহরণ অনলাইনে আসার অপেক্ষা করে থাকি। পাত্রে এখন মিনিটের বিপরীতে কয়েক সেকেন্ডের মধ্যে ট্র্যাফিক নির্ধারিত এবং পরিবেশন করা হবে। একক ইসি 2 উদাহরণে একাধিক পাত্রে সময় নির্ধারণের ফলে অনুভূমিক ঘনত্বও উন্নত হয়। ফলস্বরূপ, আমরা পূর্ববর্তী বছরের তুলনায় 2019 সালে ইসি 2-তে যথেষ্ট ব্যয় সাশ্রয় প্রকল্প করেছি।

এটি প্রায় দুই বছর সময় নিয়েছে, তবে আমরা মার্চ 2019 সালে আমাদের স্থানান্তরকে চূড়ান্ত করেছিলাম The টিন্ডার প্ল্যাটফর্মটি 200 টি পরিষেবা, 1,000 নোড, 15,000 পোড এবং 48,000 চলমান পাত্রে সমন্বিত একটি কুবেরনেটস ক্লাস্টারে একচেটিয়াভাবে চলে। অবকাঠামো এখন আর আমাদের অপারেশন দলগুলির জন্য সংরক্ষিত কোনও কাজ নয়। পরিবর্তে, পুরো সংস্থার ইঞ্জিনিয়াররা এই দায়বদ্ধতায় ভাগ করে নেয় এবং কোড হিসাবে সমস্ত কিছু দিয়ে কীভাবে তাদের অ্যাপ্লিকেশনগুলি তৈরি করা এবং স্থাপন করা হয় তার উপর নিয়ন্ত্রণ রাখে।

আরো দেখুন

ইনস্টাগ্রামে কাউকে আপনার উল্লেখ করা থেকে আপনি কীভাবে বাধা দেন?গার্লফ্রেন্ড তার স্ন্যাপচ্যাটে একটি লোককে ধাক্কা মারছে। তিনি তাকে মুছে ফেলবেন না বা আমার অনুরোধের মাধ্যমে তাকে ব্যাক আপ করতে বলবেন যাতে আমি তাকে প্রাইভেট ম্যাসেজ করে ইনস্টাগ্রামে এবং তার কাছ থেকে সমস্ত যোগাযোগ বিচ্ছিন্ন করতে বলি। এখন সে পাগল এবং আমাকে পাগল বলছে। কে ঠিক আছে?আপনি কি আপনার স্ন্যাপচ্যাট রেখার উপর চাপ দিচ্ছেন? আপনি কেন তাদের চালিয়ে যেতে চান?আমি কীভাবে অর্থ উপার্জনের জন্য একটি ইনস্টাগ্রাম বায়োলিঙ্ক ব্যবহার করতে পারি?কেন আমি ইনস্টাগ্রামের গল্পগুলিতে পোস্ট করতে পারি না?হোয়াটসঅ্যাপে স্বয়ংক্রিয়ভাবে ডাউনলোড করা থেকে ভয়েস বার্তাগুলি অক্ষম করার কোনও উপায় আছে কি? যদি হ্যাঁ, তা করার প্রক্রিয়াটি কী?আমাকে কি ইনস্টাগ্রাম থেকে অনুসরণকারী হিসাবে আমার প্রাক্তনটি সরিয়ে ফেলা উচিত? আমি সবেমাত্র আবিষ্কার করেছি এটি সম্ভব ছিল। দীর্ঘ গল্প সংক্ষিপ্ত: এটি একটি শীতল ব্রেকআপ ছিল এবং আমরা প্রায় (প্রায় 3 বছর) বলার অপেক্ষা রাখে না। কোনটি আরও বেশি ক্ষতিগ্রস্থ করবে: তাকে আমার জীবন নিয়ে আপডেট করা হচ্ছে বা কেটে ফেলা হচ্ছে?অ্যান্ড্রয়েডে আমি কীভাবে কারও ইনস্টাগ্রাম পোস্টগুলিকে নিঃশব্দ করব?