কম্পিউটার

ক্রিসমাসের দ্বিতীয় দিনে, অবজেক্ট রকেট আমাকে দিয়েছে:দুটি উচ্চ-প্রাপ্যতা পোস্টগ্রেসএসকিউএল প্রতিলিপি

মূলত 12 ডিসেম্বর, 2019, ObjectRocket.com/blog-এ প্রকাশিত

ছুটির দিনগুলি আসছে, এবং এই সিজনটি Rackspace ObjectRocket ইতিহাসের একটি গুরুত্বপূর্ণ মাইলফলকের এক বছরের বার্ষিকীকে চিহ্নিত করে৷ 2019 ছুটির মরসুমের জন্য ঠিক সময়ে, আমরা উচ্চ উপলব্ধতা চালু করেছি (HA) ObjectRocket PostgreSQL® পরিষেবাতে। ObjectRocket-এ আমরা যে সব ডেটাস্টোর অফার করি তা উৎপাদন কাজের চাপের জন্য তৈরি করা হয়েছে, আমাদের সমস্ত ক্লায়েন্টদের জন্য HA প্রয়োজন৷

ক্রিসমাসের দ্বিতীয় দিনে, অবজেক্ট রকেট আমাকে দিয়েছে:দুটি উচ্চ-প্রাপ্যতা পোস্টগ্রেসএসকিউএল প্রতিলিপি

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

যদি শব্দটি HA হয় আপনার কাছে অপরিচিত, আসুন কেন HA গুরুত্বপূর্ণ তার একটি দ্রুত পর্যালোচনা করি। প্রথম এবং সর্বাগ্রে, HA এর তিনটি প্রধান সুবিধা হল:

  • শূন্য বা ব্যাপকভাবে কমে যাওয়া ডাউনটাইম
  • ডেটা ক্ষতির বিরুদ্ধে সুরক্ষা
  • ডাটাবেসের কর্মক্ষমতা বৃদ্ধি

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

  1. প্রাথমিক ক্ষেত্রে অপ্রত্যাশিত সমস্যাগুলি সনাক্ত করুন৷
  2. প্রাথমিক পদে উন্নীত করার জন্য একটি উপযুক্ত প্রতিরূপ নির্বাচন করুন।
  3. ব্যর্থ প্রাথমিক মেরামত করুন এবং একটি নতুন প্রতিলিপি তৈরি করুন (আপনি যেটি প্রচার করেছেন সেটি প্রতিস্থাপন করতে)।

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

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

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

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

প্রতিলিপি

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

ফেলওভার এবং প্রচার

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

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

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

অনুরোধ রাউটিং

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

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

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

একটি উদাহরণ তৈরি করুনমিশন কন্ট্রোল-এ স্ক্রীন ধাপ 2-এর অধীনে একটি বিভাগ রয়েছে যার নাম আপনার উদাহরণ কাস্টমাইজ করুন . সেখানে আপনি তীরটিকে সবুজ করতে বাক্সে ক্লিক করতে পারেন, যা আপনার PostgreSQL উদাহরণের HA প্রতিলিপি যোগ করে। আপনি উপরের ডানদিকে উপবৃত্ত (…) ক্লিক করে প্রতিলিপির সংখ্যা (এক বা দুটি) নির্বাচন করতে পারেন।

ক্রিসমাসের দ্বিতীয় দিনে, অবজেক্ট রকেট আমাকে দিয়েছে:দুটি উচ্চ-প্রাপ্যতা পোস্টগ্রেসএসকিউএল প্রতিলিপি

ডিফল্টরূপে, আমরা দুটি প্রতিলিপি সুপারিশ করি, যাতে বিভ্রাটের সময়ও আপনার অপ্রয়োজনীয়তা থাকে তবে আপনি একটি নির্বাচন করতে পারেন৷

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


  1. ক্রিসমাসের দ্বিতীয় দিনে, অবজেক্ট রকেট আমাকে দিয়েছে:দুটি উচ্চ-প্রাপ্যতা পোস্টগ্রেসএসকিউএল প্রতিলিপি

  2. ক্রিসমাসের তৃতীয় দিনে, অবজেক্ট রকেট আমাকে দিয়েছে:তিনটি মাস্টার নোড

  3. PostgresSQL এ প্রতিলিপি

  4. অফিসে একটি দিন ... অফিস ছাড়া