কম্পিউটার টিউটোরিয়াল

ObjectRocket একটি বছরে উচ্চ-উপলব্ধতা PostgreSQL রেপ্লিকার সাথে বার্ষিকী উদযাপন করল

মূলত ১২ ডিসেম্বর, ২০১৯-এ ObjectRocket.com/blog-এ প্রকাশিত

ছুটি ਦਾ মৌসুম আসছে, এবং এই musim র্যাকস্পেস ObjectRocket ইতিহাসে একটি গুরুত্বপূর্ণ মাইলস্টনের এক বছরের বার্ষিকী চিহ্নিত করছে। ২০১৯ সালের ছুটির ঠিক সময়ে, আমরা ObjectRocket PostgreSQL® সার্ভিসে উচ্চ উপলব্ধতা (HA) চালু করলাম। ObjectRocket-এ আমরা যেকোনো ডেটাস্টোর অফার করি সেটি প্রোডাকশন ওয়ার্কলোডের জন্য তৈরি, যেটি আমাদের সকল ক্লায়েন্টের জন্য HA আবশ্যক করে তোলে।

ObjectRocket একটি বছরে উচ্চ-উপলব্ধতা PostgreSQL রেপ্লিকার সাথে বার্ষিকী উদযাপন করল

HA কেন গুরুত্বপূর্ণ?

যদি HA টার্মটি আপনার জন্য অপরিচিত হয়, তবে আসুন কেন HA গুরুত্বপূর্ণ সেটি দ্রুত রিভিউ করি। সবচেয়ে প্রধান তিনটি HA-এর সুবিধা হল:

  • শূন্য বা বড় পরিমাণে ডাউনটাইম কমানো
  • ডেটা লস থেকে সুরক্ষা
  • বৃদ্ধি করা ডেটাবেস পারফরম্যান্স

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

  1. প্রাইমারিতে অপ্রত্যাশিত সমস্যা সনাক্ত করতে।
  2. প্রমোট করার জন্য একটি উপযুক্ত রেপ্লিকা নির্বাচন করতে।
  3. ব্যর্থ প্রাইমারি রিপেয়ার করা এবং একটি নতুন রেপ্লিকা তৈরি করা (যেটি আপনি প্রমোট করেছেন তার রিপ্লেসমেন্ট)۔

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

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

আমরা যে প্রযুক্তিগুলো ব্যবহার করি

এখন যেহেতু আমরা কী উপাদানগুলো আছে সেটি রিভিউ করেছি, আসুন ডুব মেরে দেখি আমরা উপরের প্রতিটি উপাদান কীভাবে প্রদান করছি:

রেপ্লিকেশন

Postgres অনেক রেপ্লিকেশন স্কিম নেটিভলি সাপোর্ট করে। আপনি বর্তমানে এক বা দুটি রেপ্লিকা কনফিগার করতে পারেন, কিন্তু আমরা ভবিষ্যতে অপশনগুলো প্রসারিত করব। রেপ্লিকেশনের আরেকটি সুক্ষ্ম পয়েন্ট হল সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস রেপ্লিকেশন ধারণা। সিঙ্ক্রোনাস রেপ্লিকেশনে, প্রাইমারি প্রতিটি রেপ্লিকার প্রতিটি রাইট ফিনিশ করলে কনফার্ম করার জন্য অপেক্ষা করে তারপর প্রাইমারি রাইটটিকে কমপ্লিট मानে। অ্যাসিনক্রোনাসে, প্রাইমারি রাইটগুলো রেপ্লিকাতে ফায়ার করে কিন্তু অ্যাপ্লিকেশন বা ক্লায়েন্ট রাইট কনফার্ম করার আগে তাদের কমপ্লিশন কনফার্ম করে না। আমরা যে সমাধানটি ব্যবহার করি সেটি আমাদের উভয় অ্যাসিনক্রোনাস এবং সিঙ্ক্রোনাস রেপ্লিকেশন সাপোর্ট করতে দেয়। ডিফল্টভাবে, আমরা সিঙ্ক্রোনাস রেপ্লিকেশন ইনেবল করি, এবং আমরা আমাদের এনভায়রনমেন্টে রেপ্লিকেশন কনফিগার করি যাতে একটি রাইট প্রাইমারিতে রাইট-আহেড লগ (WAL)-এ লিখা হয়েছে এবং কমপক্ষে একটি রেপ্লিকাতেও কনফার্ম করা হয়েছে। আপনি সেটিংস প্রতিটি ট্রানজ্যাকশন বা সেশন অনুযায়ী পরিবর্তন করতে পারেন।

ফেইলওভার এবং প্রোমোশন

ফেইলওভার এবং প্রোমোশন ফাংশনালিটি প্রদান করার জন্য বেশ কিছু ওপেন-সোর্স এবং থার্ড-পার্টি টুল আছে, কিন্তু আমরা Patroni বেছে নিয়েছি নিচের সুপérieur বৈশিষ্ট্যগুলোর কারণে:

  • নেটিভ Kubernetes® সাপোর্ট: আমরা আমাদের নতুন প্ল্যাটফর্ম Kubernetes-ভিত্তিক করে বানিয়েছি, তাই আপনি একটি টুল আডোপ্ট করতে পারেন যা শুধু Kubernetes-এ প্লাগ ইন করে, বদলে আরেকটি স্টেট বা কনসেনসাস মেকানিজমের প্রয়োজন নেই। এই অপশনটি কী।
  • সক্রিয় ডেভেলপমেন্ট এবং কমিউনিটি: Patroni-এর চারপাশের কমিউনিটি অত্যন্ত সক্রিয় এবং কার্যকারিতা বাড়ার সাথে সাথে আমাদের নিজস্ব অডিশন সহযোগিতা ও কন্ট্রিবিউট করতে সক্ষম করে। এছাড়া, কনফারেন্স টক এবং ডকুমেন্টেশন থেকে Zalando-এর একটি অপারেটর উদাহরণ পর্যন্ত প্রচুর রিসোর্স আছে যা আমাদের প্রযুক্তিটি শিখতে সাহায্য করে।
  • সহজ আর্কিটেকচার: অন্যান্য উপলব্ধ অনেক টুল ডেডিকেটেড রিসোর্স দাবি করে Postgres ইনস্ট্যান্সের বাইরে লোড ব্যালেন্সিং এবং প্রাইমারি প্রোমোশন হ্যান্ডল করার জন্য। Patroni Postgres-এর চারপাশে র‍্যাপ করে এবং নেটিভ Kubernetes কম্পোনেন্ট ব্যবহার করে অন্যান্য ফাংশন হ্যান্ডল করে, তাই আমাদের HA-এর জন্য অতিরিক্ত রিসোর্স আলোকেট করতে হয়নি।

আপনার মাইলেজ ভিন্ন হতে পারে, আমরা Patroni কে আমাদের এনভায়রনমেন্টে একটি চমৎকার, কনফিগার এবং মেইনটেইন করা সহজ ফিট পেয়েছি। আপনি মূলত Patroni-কে বলে দেন কোন HA গ্রুপে একটি নোড অংশ, এবং বাকি সেটি করে দেয়। এটি রেপ্লিকেশন কনফিগার করে, ফেলড প্রাইমারি সনাক্ত করে, রেপ্লিকা প্রমোট করে, নতুন রেপ্লিকা তৈরি করে, এবং এমনকি প্রসেসের শেষ অংশের জন্য Kubernetes-এর সাথে কাজ করে।

রিকোয়েস্ট রাউটিং

শেষে, Patroni এবং একটি নেটিভ Kubernetes কনস্ট্রাক্ট, যাকে সার্ভিস বলা হয়, পাজলটির শেষ টুকরোকে রিপ্রেজেন্ট করে। Kubernetes-এ একটি সার্ভিস একটি প্রোক্সির মত কাজ করে যা লেবেলের ভিত্তিতে ট্রাফিক রাউট করে একটি কন্টেইনার গ্রুপের (একটি পড) ওপর। Patroni সক্রিয় প্রাইমারিকে একটি মাস্টার লেবেল দিয়ে লেবেল করে, এবং Kubernetes ডেটাবেস ট্রাফিককে শুধু মাস্টার লেবেল বিশিষ্ট পডগুলোর দিকে রাউট করার দায়িত্ব নেয়। মনে রাখবেন এটি একটি হাই-লেভেল বর্ণনা, কিন্তু প্র্যাকটিসে এটিই কীভাবে কাজ করে। এই প্রসেসটিকে একটি সেকেন্ডারি পোর্ট প্রদান করার জন্য প্রসারিতও করা যেতে পারে যা ডেটাবেস রিড রিকোয়েস্টকে রেপ্লিকাগুলোর দিকে রাউট করে (প্রাইমারির লোড কমাতে)।

এটি প্রযুক্তিগুলোর একটি দ্রুত রানডাউন, কিন্তু আপনি যদি আরও শুনতে চান তবে আমাদের জানান। আমরা আমাদের কাস্টমারদের সাথে শপ টক করতে পছন্দ করি।

এখনই চেষ্টা করুন!

Mission Control-এ Create an Instance স্ক্রিনে Step 2-এর অধীনে Customize Your Instance নামে একটি সেকশন আছে। সেখানে আপনি বক্সে ক্লিক করে অ্যারোটি গ্রিন করতে পারেন, যা আপনার PostgreSQL ইনস্ট্যান্সের HA রেপ্লিকা যোগ করে। আপনি রেপ্লিকার সংখ্যা (এক বা দুটি) সিলেক্ট করতে পারেন উপরের ডানের এলিপসিস (…) ক্লিক করে।

ObjectRocket একটি বছরে উচ্চ-উপলব্ধতা PostgreSQL রেপ্লিকার সাথে বার্ষিকী উদযাপন করল

ডিফল্টভাবে, আমরা দুটি রেপ্লিকা সুপারিশ করি, যাতে একটি আউটেজের সময়ও আপনার রিডান্ডেন্সি থাকে, কিন্তু আপনি একটিও সিলেক্ট করতে পারেন।

ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন জিজ্ঞাসা করুন। আপনি সেলস চ্যাট-এ ক্লিক করেও এখনই কথা বলার শুরু করতে পারেন।


  1. ObjectRocket একটি বছরে উচ্চ-উপলব্ধতা PostgreSQL রেপ্লিকার সাথে বার্ষিকী উদযাপন করল

  2. ObjectRocket Elasticsearch স্থিতিশীলতা বাড়াতে ডেডিকেটেড মাস্টার নোড চালু করেছে

  3. PostgreSQL রেপ্লিকেশন ব্যাখ্যা: হাই অভেলেবিলিটি এবং ডিজাস্টার রিকভারি

  4. আধুনিক কাজে মাইক্রোসফট অফিসের প্রভাব: অফিস ছাড়া একটি দিন