Ticketing
ডকুমেন্টেশন

সংযোগ ও প্রমাণীকরণ

পিয়ার-টু-পিয়ার সংযোগ (Raft পোর্ট = ক্লায়েন্ট পোর্ট + ১০০০) ক্লায়েন্ট পোর্টের সাথে সম্পূর্ণ একই ক্রমে স্থাপিত হয়। ক্লায়েন্ট/পিয়ার আলাদা করার কোনো প্রোটোকল-অভ্যন্তরীণ ধাপ নেই — ভূমিকা শুধু পোর্ট দিয়েই নির্ধারিত হয়।

  1. TCP সংযোগ — ডায়াল করা পক্ষই সবসময় অনুরোধকারী
  2. সার্ভারে TLS চালু থাকলে TLS হ্যান্ডশেক
  3. একটি প্রমাণীকরণ হ্যান্ডশেক — স্পেসিফিকেশন (challenge, digest, response) ক্লায়েন্ট পোর্টের সাথে বাইট-বাই-বাইট অভিন্ন
  4. এরপর থেকে দৈর্ঘ্য-প্রিফিক্সড RPC আদান-প্রদান

প্রবাহ

ডায়াল করা নোড
গ্রহণকারী নোড
TCP সংযোগ (Raft পোর্ট = ক্লায়েন্ট পোর্ট + 1000)
সার্ভারে TLS চালু থাকলে TLS হ্যান্ডশেক
challenge (SHA-256 ␣ nonce)
digest — cluster_tokens-এর প্রথম টোকেন দিয়ে গণনা
সম্পূর্ণ cluster_tokens তালিকার বিপরীতে যাচাই
এরপর থেকে দৈর্ঘ্য-প্রিফিক্সড Raft RPC আদান-প্রদান
অনুরোধপ্রতিক্রিয়াকনসেনসাস RPC (Raft)

ক্লায়েন্ট পোর্ট থেকে যেভাবে ভিন্ন

বিষয়ক্লায়েন্ট পোর্টRaft পোর্ট
যাচাইয়ে ব্যবহৃত টোকেন সেটclient_tokenscluster_tokens
পাঠানো টোকেনক্লায়েন্টের কনফিগার করা টোকেনcluster_tokens-এর প্রথম টোকেন
প্রমাণীকরণের পর\n-সমাপ্ত ফ্রেমদৈর্ঘ্য-প্রিফিক্সড RPC
  • গ্রহণকারী পাশে যাচাই cluster_tokens তালিকার সম্পূর্ণটার বিপরীতে হয়, তাই পুরনো ও নতুন টোকেন একসাথে তালিকাভুক্ত করে একে একে নোড পুনরায় চালু করলে শূন্য-ডাউনটাইমে টোকেন ঘোরানো যায় (কনফিগারেশন (এনভায়রনমেন্ট ভ্যারিয়েবল))।
  • TLS চালু থাকলে Raft পোর্টও একই সার্টিফিকেট ব্যবহার করে। ডায়াল করা পক্ষ পিয়ারের সার্টিফিকেট tls_ca (না থাকলে সিস্টেম ট্রাস্ট স্টোর) দিয়ে যাচাই করে; tls_skip_verify শুধু টেস্টের জন্য
  • প্রমাণীকরণ ব্যর্থ হলে E auth_failed-এর পর সংযোগ বন্ধ হওয়াও একইরকম।