প্রোটোকল — সার্ভার ↔ সার্ভার (ক্লাস্টার)
শুধুমাত্র ক্লাস্টার মোডে ব্যবহৃত পিয়ার RPC প্রোটোকল। নোডগুলো Raft ঐকমত্যের মাধ্যমে একটি একক লক-স্টেট শেয়ার করে — প্রতিটি লক-স্টেট পরিবর্তন (অর্জন, মুক্তি, মেয়াদ শেষ) শুধুমাত্র লিডারের প্রস্তাব → সংখ্যাগরিষ্ঠ প্রতিলিপি → কমিট হওয়ার পরই প্রয়োগ হয়, তাই বিভাজন বা ফেইলওভারের সময়ও পারস্পরিক বর্জন (mutual exclusion) বজায় থাকে। ধারণাগত ব্যাখ্যার জন্য দেখুন কার্যপ্রণালী।
প্রবাহ — একটি অর্জন কমিট হওয়া পর্যন্ত
ক্লায়েন্ট
লিডার
ফলোয়ার ১
ফলোয়ার ২
A · অর্জন (key)
AppendEntries (Grant)
AppendEntries (Grant)
OK
সংখ্যাগরিষ্ঠতা পৌঁছালে → কমিট, সব নোডে প্রয়োগ
A · অর্জিত (token)
অনুরোধপ্রতিক্রিয়াকনসেনসাস RPC (Raft)
লিডার লক কমান্ডকে একটি প্রতিলিপিকৃত কমান্ডে রূপান্তরিত করে, একটি AppendEntries RPC-তে বহন করে পাঠায়, এবং নিজেসহ সংখ্যাগরিষ্ঠ নোড রেকর্ড করলেই কমিট করে (৩টি নোডে লিডার + ফলোয়ার ১-ই যথেষ্ট — বাকিদের সাড়ার জন্য অপেক্ষা করে না)। ক্লায়েন্ট সাড়া কমিটের পরই বেরোয়, তাই সাড়া পেয়ে গেলে সেই লক সংখ্যাগরিষ্ঠতায় লেখা হয়ে গেছে বুঝতে হবে।
পোর্ট ও ঠিকানার নিয়ম
- পিয়ার RPC একটি নিবেদিত Raft পোর্ট = ক্লায়েন্ট পোর্ট + ১০০০ ব্যবহার করে (যেমন
5225→6225)। এটি কোনো আলাদা কনফিগ কী ছাড়াই স্বয়ংক্রিয়ভাবে নির্ধারিত হয়, এবং শুধু ক্লাস্টার মোডেই শোনে। ফায়ারওয়ালে দুটো পোর্টই খুলতে হবে। - কনফিগারেশনে (
cluster_self/cluster_peers) সবসময় ক্লায়েন্ট ঠিকানা থাকে। শুধু পিয়ারকে ডায়াল করার সময়ই পোর্টে +১০০০ যোগ হয় — ক্লায়েন্টকে দেওয়াM(স্থানান্তরিত) রিডাইরেক্ট ঠিকানা সবসময় সাদামাটা ক্লায়েন্ট ঠিকানাই থাকে। - ভূমিকা শুধু পোর্ট দিয়েই নির্ধারিত হয় — ক্লায়েন্ট আর পিয়ার আলাদা করার কোনো প্রোটোকল-অভ্যন্তরীণ ধাপ নেই। সংযোগের ক্রম আর প্রমাণীকরণ/TLS নিয়মের জন্য দেখুন সংযোগ ও প্রমাণীকরণ।
সূচিপত্র
- সার্ভার-থেকে-সার্ভার
- Raft প্যারামিটার
- কনফিগারেশন (এনভায়রনমেন্ট ভ্যারিয়েবল)
- নিরবচ্ছিন্ন পুনরায় চালু (রোলিং) পদ্ধতি
আরও দেখুন
- লিডার নির্বাচন, সংখ্যাগরিষ্ঠ কমিট, ও ব্যর্থতার দৃশ্যকল্পের সহজ ব্যাখ্যা — কার্যপ্রণালী
- ক্লায়েন্ট কীভাবে লিডার খুঁজে পায় —
M· স্থানান্তরিত, সাড়া মেলানোর নিয়ম - বাস্তব ডিপ্লয়মেন্ট কনফিগারেশন (Docker, Kubernetes ইত্যাদি) — Ticketing সার্ভার ডিপ্লয়মেন্ট