রেডিস সেন্টিনেল

Redisa Sentinela



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







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



উপরন্তু, একটি মাস্টার নোড ব্যর্থতা নিশ্চিত করা হয় যদি একাধিক সেন্টিনেল সম্মত হন যে একটি প্রদত্ত মাস্টার পৌঁছানো বা উপলব্ধ নয়। এটি ব্যর্থতা সনাক্তকরণের পর্যায়টি শেষ করে এবং ব্যর্থতার প্রক্রিয়াটি এখনই শুরু হয়। সুতরাং, রেডিস সেন্টিনেলকে নির্দিষ্ট বৈশিষ্ট্য সহ একটি বিতরণ ব্যবস্থা হিসাবে দেখা যেতে পারে।



সেন্টিনেলদের চুক্তি একটি কোরাম মানের উপর ভিত্তি করে যা নিম্নলিখিত বিভাগে আলোচনা করা হবে।





যার মান

কোরাম মান হল সর্বাধিক সংখ্যক সেন্টিনেল যা মাস্টার নোড ডাউন হলে সম্মত হতে হবে। এই মানটি শুধুমাত্র মাস্টার নোডে ব্যর্থতা সনাক্ত করতে ব্যবহৃত হয়। নেতা হিসাবে নির্বাচিত সেন্টিনেলের সাথে এগিয়ে যাওয়ার জন্য একাধিক উপলব্ধ সেন্টিনেল নোডের অনুমোদন দিয়ে ব্যর্থতা প্রক্রিয়া শুরু হয়।

রেডিস সেন্টিনেলের বৈশিষ্ট্য

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



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

পরবর্তী বিভাগে, আমরা রেডিস সেন্টিনেলগুলিকে মাস্টার-প্রতিলিপি উদাহরণ সহ কনফিগার করব এবং নোডগুলি নিরীক্ষণ করতে সেন্টিনেল API ব্যবহার করব।

সেন্টিনেল কনফিগারেশন

প্রথমত, আমরা 7000 এবং 7001 পোর্টে দুটি Redis ইনস্ট্যান্স তৈরি করি। পোর্ট 7000 হবে মাস্টার নোড এবং অন্যটি মাস্টারের প্রতিলিপি করে। উভয় দৃষ্টান্ত যথাক্রমে নিম্নলিখিত কনফিগার ফাইল ব্যবহার করে:

মাস্টার নোড কনফিগারেশন

বন্দর 7000
ক্লাস্টার-সক্রিয় নম্বর
cluster-config-file nodes.conf
ক্লাস্টার-নোড-টাইমআউট 5000
পরিশিষ্ট হ্যাঁ

স্লেভ নোড কনফিগারেশন

বন্দর 7001
ক্লাস্টার-সক্রিয় নম্বর
cluster-config-file nodes.conf
ক্লাস্টার-নোড-টাইমআউট 5000
পরিশিষ্ট হ্যাঁ

উভয় দৃষ্টান্ত প্রতিটির সাথে সম্পর্কিত কনফিগারেশন ফাইল প্রদান করে শুরু হবে। আমরা আলাদাভাবে Redis ইনস্ট্যান্স শুরু করতে নিম্নলিখিত কমান্ড ব্যবহার করতে পারি:

redis-সার্ভার redis.conf

আসুন নিম্নরূপ পোর্ট 7001 এ শুরু হওয়া Redis উদাহরণের সাথে সংযোগ করি:

redis-cli -পি 7001

এখন, আমরা এই উদাহরণটিকে 7000 পোর্টে চলমান মাস্টারের একটি প্রতিরূপ করতে পারি। REPLICAOF কমান্ডটি নিম্নরূপ ব্যবহার করা যেতে পারে:

127.0.0.1 এর প্রতিরূপ 7000

প্রত্যাশিত হিসাবে, পোর্ট 7001 এ চলমান উদাহরণটি পোর্ট 7000 এ চলমান মাস্টারের প্রতিরূপ নোড হয়ে উঠেছে।

এখন, আমরা উপরের মাস্টার ইনস্ট্যান্স নিরীক্ষণের জন্য তিনটি রেডিস সেন্টিনেল কনফিগার করতে প্রস্তুত। নিম্নলিখিত হিসাবে দেখানো পোর্ট 5000, 5001 এবং 5002 এ তিনটি সেন্টিনেল ইনস্ট্যান্স তৈরি করতে আমাদের তিনটি কনফিগারেশন ফাইল থাকতে হবে।

প্রতিটি sentinel.conf পোর্ট নম্বর পরিবর্তন করা হবে ছাড়া ফাইল নিম্নলিখিত মত দেখায়:

বন্দর 5000
সেন্টিনেল মনিটর মাস্টারনোড 127.0.0.1 7000 দুই
সেন্টিনেল ডাউন-আফটার-মিলিসেকেন্ড মাস্টারনোড 5000
সেন্টিনেল ফেইলওভার-টাইমআউট মাস্টারনোড 60000

এখন, তিন সেন্টিনেল চালানোর সময়। আপনি পাথ সহ redis-sentinel এক্সিকিউটেবল ব্যবহার করতে পারেন sentinel.conf কনফিগারেশন ফাইল একটি সেন্টিনেল উদাহরণ তৈরি করতে। অন্যথায়, আমরা এখনও পাথ নির্দিষ্ট করে redis-সার্ভারকে এক্সিকিউটেবল বলতে পারি sentinel.conf এবং পতাকা -সেন্টিনেল .

আসুন নিম্নলিখিত কমান্ডটি ব্যবহার করে প্রতিটি সেন্টিনেল শুরু করি:

redis-সার্ভার sentinel.conf -- সেন্টিনেল

প্রথম সেন্টিনেল পোর্ট 5000 এ শুরু হয়েছে। একইভাবে, আপনি অন্য দুটি উদাহরণও শুরু করতে পারেন।

এখন, আমাদের রেডিস সেন্টিনেল সেটআপটি নিম্নলিখিত চিত্রে দেখানো হয়েছে এবং চলছে:

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

সেন্টিনেল API

Redis সংশ্লিষ্ট মাস্টার এবং প্রতিলিপি নিরীক্ষণ করতে, বিজ্ঞপ্তির জন্য সদস্যতা নিতে এবং সেন্টিনেল সেটিংস পরিবর্তন করতে একটি পৃথক সেন্টিনেল API প্রদান করে। তদ্ব্যতীত, নিম্নলিখিত কয়েকটি ব্যবহার তালিকাভুক্ত করা হয়েছে।

  • পর্যবেক্ষণ করা রেডিস মাস্টার এবং স্লেভ ইনস্ট্যান্সের স্থিতি পরীক্ষা করুন
  • অন্যান্য সেন্টিনেল সম্পর্কে বিস্তারিত
  • একটি ব্যর্থতার ইভেন্টে সেন্টিনেলদের থেকে পুশ-স্টাইলের বিজ্ঞপ্তিগুলি পান

রেডিস সেন্টিনেল এবং মনিটর করা নোডগুলিকে জিজ্ঞাসা, আপডেট বা সেট করতে সেন্টিনেল কমান্ডটি তার সম্পর্কিত সাবকমান্ডের সাথে ব্যবহার করা যেতে পারে।

মাস্টার নোডের স্থিতি পরীক্ষা করুন

সময়ে সময়ে মাস্টার নোডের স্বাস্থ্য পর্যবেক্ষণ করা বা পরীক্ষা করা খুবই গুরুত্বপূর্ণ। নিম্নলিখিত সেন্টিনেল API কমান্ডটি মাস্টার বিবরণ পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে:

সেন্টিনেল মাস্টার < পর্যবেক্ষণ করা_মাস্টার_নাম >

পর্যবেক্ষণ করা_মাস্টার_নাম: মাস্টার নোডের নাম যা সেন্টিনেল কনফিগারেশন ফাইলে নির্দিষ্ট করা আছে যা আমরা আগের ধাপে তৈরি করেছি।

আমাদের সেটআপে মাস্টার স্ট্যাটাস জিজ্ঞাসা করতে এই কমান্ডটি ব্যবহার করা যাক। আমাদের ক্ষেত্রে, মাস্টার নোড নাম হয় 'মাস্টারনোড'।

সেন্টিনেল মাস্টার মাস্টারনোড

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

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

সংযুক্ত প্রতিলিপি সম্পর্কে তথ্য পান

আমরা নিম্নলিখিত সেন্টিনেল সাব কমান্ড ব্যবহার করে মাস্টার নোডের সাথে সংযুক্ত প্রতিলিপিগুলি পরীক্ষা করতে পারি:

সেন্টিনেল প্রতিরূপ < পর্যবেক্ষণ করা_মাস্টার_নাম >

এই উদাহরণে, মাস্টারের নাম 'মাস্টারনোড'।

সেন্টিনেল রেপ্লিকাস মাস্টারনোড

প্রত্যাশিত হিসাবে, সেন্টিনেল পোর্ট 7001 এ চলমান স্লেভ নোড সনাক্ত করেছে।

অ্যাসোসিয়েটেড সেন্টিনেল সম্পর্কে তথ্য পান

একইভাবে, আমরা নিম্নলিখিত সেন্টিনেল সাবকমান্ড ব্যবহার করে বর্তমান মাস্টার নোডের সাথে যুক্ত অন্যান্য সেন্টিনেল সম্পর্কিত বিশদ অনুসন্ধান করতে পারি:

সেন্টিনেল সেন্টিনেল < মাস্টার_নোড_নাম >

এই ক্ষেত্রে, আমরা 'মাস্টারনোড' নামের মাস্টার নোড সম্পর্কিত তথ্য আনব।

সেন্টিনেল সেন্টিনেল মাস্টারনোড

মাস্টার নোড ঠিকানা পান

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

সেন্টিনেল গেট-মাস্টার-অ্যাডিআর-বাই-নাম < মাস্টার_নোড_নাম >

আসুন আমাদের দৃশ্যের জন্য উপরের কমান্ডটি নিম্নরূপ কার্যকর করি:

সেন্টিনেল get-master-addr-by-name masternode

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

সেন্টিনেল ফেইলওভার প্রক্রিয়া

যেহেতু আমাদের সেন্টিনেল কনফিগার করা হয়েছে, আমরা ফেইল-ওভার ফেজ পরীক্ষা করতে পারি। আসুন আমাদের মাস্টার নোডকে 300 সেকেন্ডের জন্য ঘুমাতে পাঠাই যা মাস্টার নোডে ব্যর্থতার অনুকরণ করে।

ডিবাগ ঘুম 300

পোর্ট 7000 এ চলমান মাস্টার নোডটি এখন পৌঁছানো যাবে না। সুতরাং, সংশ্লিষ্ট সেন্টিনেলরা লক্ষ্য করবেন যে মাস্টার এর সাথে অনুপলব্ধ +sdown ঘটনা তারপর, এই সেট করা হবে +ওডাউন যেখানে 2 জন সেন্টিনেল নিশ্চিত করে যে কোরাম মান অনুযায়ী মাস্টার নোডটি ডাউন রয়েছে। অবশেষে, ব্যর্থতার পর্যায় শুরু হবে এবং আদর্শভাবে প্রতিরূপটিকে নতুন মাস্টারে উন্নীত করা উচিত।

আসুন মাস্টার নোড আইপি ঠিকানা এবং পোর্টটি আবার পরীক্ষা করি।

সেন্টিনেল get-master-addr-by-name masternode

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

উপসংহার

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