সংযোগ ও প্রমাণীকরণ
পিয়ার-টু-পিয়ার সংযোগ (Raft পোর্ট = ক্লায়েন্ট পোর্ট + ১০০০) ক্লায়েন্ট পোর্টের সাথে সম্পূর্ণ একই ক্রমে স্থাপিত হয়। ক্লায়েন্ট/পিয়ার আলাদা করার কোনো প্রোটোকল-অভ্যন্তরীণ ধাপ নেই — ভূমিকা শুধু পোর্ট দিয়েই নির্ধারিত হয়।
- TCP সংযোগ — ডায়াল করা পক্ষই সবসময় অনুরোধকারী
- সার্ভারে TLS চালু থাকলে TLS হ্যান্ডশেক
- একটি প্রমাণীকরণ হ্যান্ডশেক — স্পেসিফিকেশন (challenge, digest, response) ক্লায়েন্ট পোর্টের সাথে বাইট-বাই-বাইট অভিন্ন
- এরপর থেকে দৈর্ঘ্য-প্রিফিক্সড RPC আদান-প্রদান
প্রবাহ
ডায়াল করা নোড
গ্রহণকারী নোড
TCP সংযোগ (Raft পোর্ট = ক্লায়েন্ট পোর্ট + 1000)
সার্ভারে TLS চালু থাকলে TLS হ্যান্ডশেক
challenge (SHA-256 ␣ nonce)
digest — cluster_tokens-এর প্রথম টোকেন দিয়ে গণনা
সম্পূর্ণ cluster_tokens তালিকার বিপরীতে যাচাই
এরপর থেকে দৈর্ঘ্য-প্রিফিক্সড Raft RPC আদান-প্রদান
অনুরোধপ্রতিক্রিয়াকনসেনসাস RPC (Raft)
ক্লায়েন্ট পোর্ট থেকে যেভাবে ভিন্ন
| বিষয় | ক্লায়েন্ট পোর্ট | Raft পোর্ট |
|---|---|---|
| যাচাইয়ে ব্যবহৃত টোকেন সেট | client_tokens | cluster_tokens |
| পাঠানো টোকেন | ক্লায়েন্টের কনফিগার করা টোকেন | cluster_tokens-এর প্রথম টোকেন |
| প্রমাণীকরণের পর | \n-সমাপ্ত ফ্রেম | দৈর্ঘ্য-প্রিফিক্সড RPC |
- গ্রহণকারী পাশে যাচাই
cluster_tokensতালিকার সম্পূর্ণটার বিপরীতে হয়, তাই পুরনো ও নতুন টোকেন একসাথে তালিকাভুক্ত করে একে একে নোড পুনরায় চালু করলে শূন্য-ডাউনটাইমে টোকেন ঘোরানো যায় (কনফিগারেশন (এনভায়রনমেন্ট ভ্যারিয়েবল))। - TLS চালু থাকলে Raft পোর্টও একই সার্টিফিকেট ব্যবহার করে। ডায়াল করা পক্ষ পিয়ারের সার্টিফিকেট
tls_ca(না থাকলে সিস্টেম ট্রাস্ট স্টোর) দিয়ে যাচাই করে;tls_skip_verifyশুধু টেস্টের জন্য। - প্রমাণীকরণ ব্যর্থ হলে
E auth_failed-এর পর সংযোগ বন্ধ হওয়াও একইরকম।