এটি ভারসাম্য রক্ষার জন্য প্রোটোকল এবং ব্যবহারের ক্ষেত্রে কী নির্ভর করে। যে কোনও সংযোগের পরিমাণ বোঝা / ব্যবহারের সাথে সম্পর্কিত, সেখানে ব্যবহার করা ভাল leastconn
। নেটওয়ার্ক এবং অ্যাপ্লিকেশনগুলি যেভাবে কাজ করে সে কারণে এটি প্রায়শই সত্য এবং আপনি leastconn
ডিফল্টরূপে ব্যবহার করা ভাল ।
আরডিপি / এক্স 11 রিমোট ডেস্কটপ / জাম্প হোস্ট
উদাহরণস্বরূপ, কোনও সংস্থার কাছে রিমোট ডেস্কটপগুলির একটি পুল রয়েছে যা কর্মচারীরা সংযুক্ত থাকে। আপনি চান কর্মীদের ডেস্কটপগুলিতে কিছুটা সমানভাবে বিতরণ করা হোক।
ব্যবহারের ক্ষেত্রে সক্রিয় সংযোগগুলির সংখ্যা মোটামুটি "এখনই কতজন কর্মচারী সেই ডেস্কটপটি ব্যবহার করছেন" is সর্বনিম্ন সংযোগের সাথে থাকা হোস্টের এটি ব্যবহারের জন্য সর্বনিম্ন কর্মচারী থাকে এবং এটি সম্ভবত কম লোড হয়। এই পরিস্থিতিতে "সর্বনিম্ন" ব্যবহার করুন, এটি ব্যবহারকারীর পরিমাণের সাথে সমানভাবে লোডটি ছড়িয়ে দেয়।
একটি আদর্শ লোড ব্যালেন্সার দূরবর্তী ডেস্কটপ লোড সম্পর্কে সচেতন হওয়া উচিত। কতজন ব্যবহারকারী? কত আবেদন? কত স্মৃতি এবং সিপিইউ গ্রাস করেছে? দূরবর্তী ডেস্কটপগুলিতে (মাইক্রোসফ্ট / সিট্রিক্স / ইত্যাদি ...) উত্সর্গীকৃত বাণিজ্যিক সমাধান রয়েছে, তারা সাধারণত ব্যবহারগুলি খুব ভালভাবে ছড়িয়ে দিতে এই মেট্রিকগুলি পরিমাপ করে। HAProxy একটি সাধারণ নেটওয়ার্ক লোড ব্যালেন্সার এবং এটি সংযোগ গণনা করার চেয়ে ভাল করতে পারে না leastconn
।
এইচটিটিপি / এইচটিটিপিএস
এইচটিটিপি সহ, একটি সক্রিয় সংযোগ মানে সার্ভার একটি অনুরোধ প্রক্রিয়াকরণে ব্যস্ত। সংযোগগুলি লোডের সাথে সরাসরি আনুপাতিক। আপনি সক্রিয় সংযোগগুলির সর্বনিম্ন পরিমাণ সহ সার্ভারটি নির্বাচন করতে চান (অনুরোধ প্রগতিতে)। leastconn
HTTP (S) ট্র্যাফিকের জন্য ব্যবহার করুন ।
দুটি এইচটিটিপি সার্ভারের সাথে একটি দৃশ্যের কল্পনা করুন, যেখানে একটি সার্ভার অনুরোধগুলি প্রক্রিয়া করতে ধীর হয় (সম্ভবত এটি ওভারলোড হয়েছে, সম্ভবত এটিতে পুরানো হার্ডওয়্যার রয়েছে)।
roundrobin
দুটি সার্ভারের মধ্যে অর্ধেক অনুরোধ বিতরণ করবে। এটি খুব অদক্ষ, দ্রুত সার্ভারের আরও বেশি নেওয়া উচিত। আরও খারাপ যে, ধীরে ধীরে সার্ভারটি ওভারলোড হতে পারে, আরও অনুরোধগুলি আসার কারণে আরও ধীর হয়ে যাবে এবং যে কোনও সময় অনুরোধগুলি বাদ দেওয়া শুরু করতে পারে। আপনি এটা চান না।
leastconn
সার্ভারগুলি অসম যে সনাক্ত করতে পারে। ধীর সার্ভারটি দীর্ঘ সময়ের জন্য সংযোগগুলি ধারণ করে, এতে সংযোগের পরিমাণ আরও বেশি। leastconn
এটির জন্য অ্যাকাউন্টগুলি এবং অন্য সার্ভারটি পছন্দ করে।
আমার অভিজ্ঞতায়, এমন ভূমিকার সাথে যেখানে আমি মাঝারি থেকে বড় ওয়েবসাইটগুলির জন্য পারফরম্যান্স টেস্টিং করছি testing এইচটিটিপি (এস) এর leastconn
মতো 300% দক্ষ হতে পারে roundrobin
। roundrobin
সংযোগটি মোটামুটি বিতরণ করে না এবং এটি উচ্চ লোডে অস্থিরতা সৃষ্টি করবে।
ডিএনএস অনুরোধ
(আসুন এড়িয়ে চলুন যে HAProxy ইউডিপি সমর্থন করে না এবং ইউডিপি সংযোগ কম)।
একটি শেষ উদাহরণ। ডিএনএস একটি সাধারণ প্রোটোকল। ক্লায়েন্টরা একটি ডোমেইনের অনুরোধ করতে একটি একক ইউডিপি বার্তা প্রেরণ করে এবং ডিএনএস সার্ভার একক বার্তায় উত্তর দেয়।
এই ক্ষেত্রে, সত্যিই কোনও সংযোগ নেই। সেখানে থাকলেও তা তাত্ক্ষণিকভাবে বন্ধ হয়ে যাবে (তাত্ত্বিকভাবে)।
এই পরিস্থিতিতে সংযোগগুলি গণনা করার কোনও অর্থ হবে না, এটি অনুকূল নয় leastconn
। একটি সাধারণ roundrobin
বার্তা বিতরণ করতে পারেন।
একটি সাধারণ ভুল বোঝাবুঝি
লোকেরা কখনও কখনও বিশ্বাস করে যে তাদের leastconn
স্বল্পকালীন সংযোগগুলির জন্য ব্যবহার করা উচিত নয় (শেষ উদাহরণের মতো)। এমনকি HAProxy ডকুমেন্টেশনও এ সম্পর্কে বিভ্রান্ত করছে।
leastconn
Use of this algorithm is recommended where very long sessions are
expected, such as LDAP, SQL, TSE, etc... but is not very well
suited for protocols using short sessions such as HTTP.
[misleading advice, should ignore it]
বাস্তব জগতে, short connections
একটি জিনিস নয়।
অ্যাপ্লিকেশনগুলি টিসিপির উপরে নির্মিত হয়। বার্তাগুলি বিতরণ করা হয় এবং প্রায়শই ক্রমে প্রক্রিয়া করা হয়। যখন কোনও সার্ভার ধীর বা অতিরিক্ত লোড হয়, তখন "সংক্ষিপ্ত" সংযোগগুলি দীর্ঘ হয়। যদি আরও সংযোগ থাকে তবে সম্ভবত কিছু (আরও) কাজ করা হচ্ছে। সংযোগ গণনা এবং সংযোগ সময়কাল পৃথক এবং অর্থ আছে।
একটি বেসিক HTTP সার্ভারের কথা চিন্তা করুন। কিছু সংস্থান কয়েক মিলিসেকেন্ড নেয়, কিছু এপিআই কলগুলি কয়েক সেকেন্ড সময় নেয়, কোনও পৃষ্ঠার মধ্যে এটির যে কোনও পরিমাণ অনুরোধ সহ লোড হতে সময় লাগতে পারে ইত্যাদি Requ leastconn
চলমান ক্রিয়াকলাপটি বোঝে এবং বিতরণটি সামঞ্জস্য করে যা লোড ব্যালান্সারের কাছ থেকে আপনি যা চান ঠিক তেমনই।