আমি কীভাবে এন এপাচি সার্ভারগুলির মধ্যে আগত ওয়েব ট্র্যাফিকের ভারসাম্য বজায় রাখতে পারি?


12

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

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

হতে পারে আমি এই ভুলটি সম্পর্কে যাচ্ছি, তবে আমি "ব্যালেন্সার / এস" কী হওয়া উচিত এবং সেগুলি কীভাবে সেট আপ করতে হবে তার সেরা অনুশীলনগুলির বিষয়ে আমি সন্ধান করছি।

যেকোনো সাহায্যই অসাধারণ. বিকল্প পাঠ


1
আমাকে ক্ষমা করুন তবে আপনি আপনার আঁকার জন্য কোন প্রোগ্রাম ব্যবহার করেছেন?
প্রিক্স

1
@ প্রিক্স - ভিজিওর মতো দেখাচ্ছে ( অফিস.মাইক্রোসফটকম
en-

উত্তর:


4

যেকোনও "বিপরীত প্রক্সি" আপনি যা চান তা করবে।

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

আপনার কী ধরণের প্রয়োজন তা ঠিক করতে আপনাকে সাহায্য করতে লোড ব্যালান্সার সম্পর্কে একটি নিবন্ধ পড়া ভাল হতে পারে: http://1wt.eu/articles/2006_lb/

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


2

প্রথমে, একটি গুরুত্বপূর্ণ প্রশ্নের উত্তর দেওয়া আবশ্যক:
আপনার কি ব্যবহারকারী সেশনগুলি লোড-ব্যালেন্সার (গুলি) দ্বারা পরিচালনা করা এবং সর্বদা একই ওয়েব সার্ভারে চালিত করা প্রয়োজন (জীবিত থাকলে)?

  • সেশনগুলির প্রয়োজন নেই : এক্ষেত্রে আপনার লোড ব্যালেন্সার হিসাবে দক্ষ এনগিনেক্স প্রোগ্রামটি ব্যবহার করা উচিত । কনফিগারেশনটি সেট করা সহজ, যেখানে আপনাকে মূলত কেবলমাত্র একটি upstream upstream_name { server1, ..., serverN }বিবৃতিতে কেবলমাত্র ওয়েব সার্ভারের তালিকাটি নির্দেশ করতে হয় , তারপরে, প্রদত্ত ডোমেনের জন্য আপনার একটি সহজ proxy_pass upstream_nameনির্দেশিকা প্রয়োজন । Nginx উইকি
    দেখুন ।

  • সেশনটির জন্য প্রয়োজনীয় পাউন্ডের অনুরূপ সেটিংস রয়েছে যেখানে আপনি কুকির নামটি নির্দেশ করেন যা সেশন আইডি ( ) হোস্ট করবে ID MYCOOKIENAME, তারপরে BACKENDআপনার সমস্ত সার্ভারের জন্য একটি তালিকা ।
    উদাহরণস্বরূপ পাউন্ড সেটআপ উদাহরণটি দেখুন ।

যখন বেশ কয়েকটি লোড ব্যালান্সারের প্রয়োজন দেখা দেয়, আপনি একটি heartbeatকনফিগারেশন করতে যেতে পারেন , যেটি নিশ্চিত করবে যে কেবলমাত্র একজন ব্যালেন্সার কোনও প্রদত্ত ডোমেনের জন্য ভার্চুয়াল আইপি মাউন্ট করেছে, (যদি সেশনগুলির প্রয়োজন হয়, বা উভয়কে মাউন্ট করুন এবং দুটি আইপি ঠিকানা দিয়ে ডিএনএস ফিড করবেন) দৃষ্টান্ত). এটি প্রয়োজনীয় হয়ে ওঠার সময় (অন্য সরঞ্জামগুলি দ্রুত বিকশিত হওয়ার সাথে সাথে) অন্য কোনও প্রশ্নে এটি বিশদ বিবরণ দেওয়া উচিত। উদাহরণস্বরূপ এই লিঙ্কটি
দেখুন ।


1

আপনার কাঠামোর অতিরিক্ত জটিলতা এবং একক পয়েন্ট ব্যর্থতার পরিচয় করানোর জন্য আপনার খুব ভাল কারণ প্রয়োজন।

রাউন্ড-রবিন লোড ব্যালেন্সিং

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

রাউন্ড-রবিন সম্পর্কিত যে পরিমাণ ভুল তথ্য রয়েছে তা আমাকে বিস্মিত করে। আমি যদি কৌতুকপূর্ণ ব্যক্তি হয়ে থাকি তবে আমি ভাবতে পারি যে বিক্রেতাদের সাথে কোনও সংযোগ আছে কিনা যেগুলি বড় ব্যয়বহুল লোড-ব্যালেন্সিং হার্ডওয়্যার উত্পাদন করে।

আমি একমাত্র পয়েন্টগুলি স্বীকার করব তা হ'ল

  1. আইপিভি 4 অ্যাড্রেসগুলি দুর্লভ এবং তাই ব্যয়বহুল হয়ে উঠছে - তবে এখনও অনেক বেশি। একটি সিসকো সিএসএস বলার চেয়ে অনেক সস্তা।

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


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


0

ভারসাম্যকারীদের জন্য আপনি http://www.linuxvirtualserver.org/ এ এলভিএসে সন্ধান করতে পারেন , সম্ভবত ট্র্যাফিকের সরাসরি চালনা এবং ফেইলওভার সঞ্চালনের জন্য সম্ভবত ldirectord এবং হার্টবিট চালাচ্ছেন।


0

এনগিনেক্স একটি প্রবাহের প্রক্সি হিসাবে দুর্দান্ত, আমি এটি একটি কনফিগারেশনে প্রতিদিন 1 এম + অজানা করার ক্ষেত্রে দুর্দান্ত সাফল্যের সাথে ব্যবহার করেছি


0

ঠিক আছে, এই কিছুক্ষণ আগে জিজ্ঞাসা করা হয়েছিল, এবং আমি পার্টিতে দেরি করেছি। তবুও এখানে কিছু যুক্ত করার দরকার আছে।

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

আপনার উইলির তারেরউ লোড ব্যালেন্সিং প্রবর্তনটি পড়া উচিত যা নেকেডিবিলের সাথে যুক্ত ছিল। এটি এখনও বৈধ, এবং এটি একটি ভাল ভূমিকা।

এগুলি কীভাবে আপনার প্রয়োজনের সাথে খাপ খায় তা বিবেচনা করা উচিত:

  • টিসিপি / আইপি স্তর লোড ব্যালান্সার (লিনাক্স ভার্চুয়াল সার্ভার এবং অন্যান্য)। ওভারহেড প্রতি সংক্ষিপ্ততম, সর্বোচ্চ গতি, HTTP "দেখতে" পারে না।
  • এইচটিটিপি স্তরের লোড ব্যালান্সার (HAProxy, nginx, অ্যাপাচি ২.২, পাউন্ড, মাইক্রোসফ্ট এআরআর এবং আরও অনেক কিছু)। উচ্চতর ওভারহেড, HTTP দেখতে পারে, HTTP gzip করতে পারে, SSL করতে পারে, স্টিকি স্টেশনের লোড ব্যালেন্সিং করতে পারে।
  • এইচটিটিপি বিপরীত প্রক্সি (অ্যাপাচি ট্র্যাফিক সার্ভার, বার্নিশ, স্কুইড)। ক্যাশে-সক্ষম অবজেক্টস (কিছু ওয়েবপেজ, সিএসএস, জেএস, ইমেজ) র‌্যামে সঞ্চয় করতে পারে এবং ব্যাকএন্ড ওয়েবসারভারকে জড়িত না করে পরবর্তী ক্লায়েন্টগুলিতে ফরোয়ার্ড করতে পারে। L7 HTTP লোড ব্যালান্সাররা প্রায়শই একই কাজ করতে পারে।

দ্বিতীয় ব্যালেন্সার আছে কারণ আমি নিশ্চিত যে এক পর্যায়ে ব্যালান্সারেরও খুব সাহায্যের প্রয়োজন হবে।

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

"ভারসাম্যকারী / গুলি" কী হওয়া উচিত এবং সেগুলি কীভাবে সেটআপ করবেন তার সেরা অনুশীলনগুলিতে সহায়তা করুন।

সমস্যার জায়গাটি হ'ল সেশন স্টেট পরিচালনা এবং কিছুটা ব্যর্থতার রাষ্ট্র আচরণ। লোড ব্যালান্সারগুলি সেট আপ করা তুলনামূলকভাবে সোজা।

যদি আপনি কেবল 2-4 ব্যাকএন্ড ওয়েবআপ সার্ভার ব্যবহার করেন তবে মূল আইপি ঠিকানার ভিত্তিতে স্ট্যাটিক হ্যাশিং व्यवहार्य হতে পারে। এটি ওয়েবঅ্যাপ সার্ভারগুলির মধ্যে ভাগ করে নেওয়া সেশন স্টেটের প্রয়োজনীয়তা এড়ায়। প্রতিটি ওয়েবঅ্যাপ নোড সামগ্রিক ট্র্যাফিকের 1 / এন দেখে এবং গ্রাহক-টু-সার্ভার ম্যাপিং স্বাভাবিক ক্রিয়াকলাপে স্থির থাকে। যদিও এটি বৃহত্তর ইনস্টলেশন জন্য ভাল ফিট না।

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

স্ট্যাটিক হ্যাশিং বা ভাগ করা সেশন স্টেট না উভয়ই আপনার পক্ষে উপযুক্ত যদি না হয়, তবে পছন্দটি সাধারণত ' স্টিকি সেশন ' লোড ব্যালেন্সিং এবং প্রতি সার্ভার সেশন স্থিতি। বেশিরভাগ ক্ষেত্রে এটি সূক্ষ্মভাবে কাজ করে, এবং এটি একটি সম্পূর্ণ ব্যবহারযোগ্য পছন্দ।

ভারসাম্যকারীরা দেখতে পাবে যে প্রতিটি অ্যাপাচে উদাহরণে কতগুলি সংযোগ রয়েছে (অভ্যন্তরীণ আইপি বা চিরন্তন আইপিগুলির কোনও কনফিগার তালিকার মাধ্যমে) এবং সংযোগগুলি সমানভাবে বিতরণ করে

হ্যাঁ, কিছু সাইট এটি ব্যবহার করে। বিদ্যমান বিভিন্ন লোড ব্যালেন্সিং অ্যালগরিদমের জন্য অনেকগুলি নাম রয়েছে। যদি আপনি রাউন্ড রবিন বা এলোমেলো (বা ভারী রাউন্ড রবিন, ভারী র্যান্ডম) বেছে নিতে পারেন তবে উপরে বর্ণিত কারণে আমি আপনাকে এটি করার পরামর্শ দিচ্ছি।

শেষ কথা: ভুলে যাবেন না যে অনেক বিক্রেতারা (এফ 5, সিসকো এবং আরও যুক্তিসঙ্গত দামগুলিতে হাই-এন্ড, এফএক্স কোয়েট পয়েন্ট এবং কেম্প টেকনোলজিসে অন্যান্য) পরিপক্ক লোড ব্যালেন্সিং অ্যাপ্লিকেশন সরবরাহ করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.