অধ্যবসায়ের জন্য ভারসাম্য অর্জনের সেরা অনুশীলনগুলি


8

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

আমাদের বর্তমান লোড ব্যালেন্সিং দুটি স্তরে সঞ্চালিত হয়, প্রথমে আমরা আমাদের api.company.com ঠিকানার জন্য একাধিক এ রেকর্ডের বিজ্ঞাপন দিতে রাউন্ড রবিন ডিএনএস ব্যবহার করি। প্রতিটি আইপিতে আমরা একটি লিনাক্স এলভিএস: http://www.linuxvirtualserver.org/ , লোড-ব্যালেন্সার হোস্ট করি যা কোন এপিআই সার্ভারকে সংযোগটি হস্তান্তর করতে হবে তা নির্ধারণের জন্য একটি অনুরোধের উত্স আইপি ঠিকানার দিকে নজর দেয়। এই এলভিএস বাক্সগুলি একে অপরের কাছ থেকে বাহ্যিক ভিআইপি এবং অভ্যন্তরীণ গেটওয়ে আইপিগুলি গ্রহণের জন্য হার্টবিটড দিয়ে কনফিগার করা হয়েছে।

ইদানীং, আমরা দুটি নতুন ত্রুটি শর্ত দেখেছি।

প্রথম ত্রুটিটি হ'ল ক্লায়েন্টরা এক LVS থেকে অন্য মিডল আপলোডে দোদুল্যমান বা মাইগ্রেট করছে। ফলস্বরূপ এটি আমাদের লোড ব্যালেন্সারদের অবিচ্ছিন্ন সংযোগটি ট্র্যাক হারাতে এবং ট্র্যাফিকটিকে একটি নতুন এপিআই সার্ভারে প্রেরণ করে, যার ফলে দু'তোটি সার্ভার জুড়ে খণ্ডিত আপলোডটি ভেঙে যায়। আমাদের অভিপ্রায় ছিল রাউন্ড রবিন ডিএনএস টিটিএল মানটির জন্য আমাদের api.company.com (যা আমরা 1 ঘন্টা নির্ধারণ করেছি) ডাউন স্ট্রিম ক্যাশিং নেমসার্ভার, ওএস ক্যাশিং স্তর এবং ক্লায়েন্ট অ্যাপ্লিকেশন স্তর দ্বারা সম্মানিত করা। এই ত্রুটিটি আমাদের প্রায় 15% আপলোডের জন্য ঘটে।

দ্বিতীয় ত্রুটিটি আমরা খুব সাধারণভাবে দেখেছি। একটি ক্লায়েন্ট একটি এলভিএস বাক্সে ট্র্যাফিক শুরু করবে এবং এর পিছনে রিয়েলসরভার এ তে রবিত হবে। এরপরে, ক্লায়েন্ট একটি নতুন উত্সের আইপি ঠিকানার মাধ্যমে আসবে, যা এলভিএস বাক্সটি স্বীকৃতি দেয় না, যার ফলে চলমান ট্র্যাফিকটিকে সেই এলভিএসের পিছনে রিয়েলসিভার বিতেও চালিত করা হয়।

উপরের অংশে বর্ণিত আমাদের আর্কিটেকচারটি দেওয়া, আমি জানতে চাই যে আরও ভাল পদ্ধতির সাথে মানুষের অভিজ্ঞতা কী রয়েছে যা আমাদের ত্রুটিগুলির কেসগুলিকে আরও নিখুঁতভাবে পরিচালনা করতে দেয়?

5/3/2010 সম্পাদনা করুন:

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

http://www.brocade.com/support/Product_Manuals/ServerIron_ADXGlobalServer_LoadBalancingGuide/gslb.2.11.html#271674


আপনার প্রশ্নটি এখনই মোবাইলের জন্য নির্দিষ্ট নয়। সম্ভবত আপনি এটি সংশোধন এবং সরলীকরণ বিবেচনা করবে?
জেস্পার এম

উত্তর:


11

এর মূল সমাধানটি হ'ল শেষ ব্যবহারকারী আইপি ঠিকানার উপর নির্ভর না করে বরং একটি কুকির মাধ্যমে "স্টিকি সেশনস" সহ একটি স্তর 7 (HTTP / HTTPS) লোড ব্যালেন্সার ব্যবহার করুন।

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

স্টিকি সেশনগুলির প্রধান নেতিবাচক দিকটি হ'ল বেকেন্ড সার্ভার লোড কিছুটা আন-ইভেন হয়ে উঠতে পারে। লোড ব্যালান্সার কেবলমাত্র নতুন সংযোগগুলি তৈরি করার সময় লোডকে মোটামুটি বিতরণ করতে পারে, তবে বিদ্যমান সংযোগগুলি আপনার দৃশ্যে দীর্ঘস্থায়ী হতে পারে তবে কিছু সময়ের মধ্যে বোঝা পুরোপুরি সুষ্ঠুভাবে বিতরণ করা হবে না।

প্রায় প্রতিটি স্তর 7 লোড ব্যালেন্সার এটি করতে সক্ষম হওয়া উচিত। ইউনিক্স / লিনাক্সে কিছু সাধারণ উদাহরণ হ'ল এনগিনেক্স, এইচপিপ্রক্সি, অ্যাপসিস পাউন্ড, অ্যাডেচি ২.২ মোড_প্রক্সি সহ আরও অনেক কিছু। উইন্ডোজ ২০০++ এ মাইক্রোসফ্ট অ্যাপ্লিকেশন রিকোয়েস্ট রাউটিং রয়েছে। অ্যাপ্লায়েন্সেস হিসাবে, কোয়েট পয়েন্ট, লোডবিল্যান্সআরর্গ, কেম্প এবং ব্যারাকুডা নিম্ন-প্রান্তে সাধারণ; এবং এফ 5, সিট্রিক্স নেটস্কেলার এবং অন্যান্যরা উচ্চ-প্রান্তে।

HAProxy এর লেখক উইলির তারেরও এখানে লোড ব্যালেন্সিং কৌশলগুলির একটি সুন্দর ওভারভিউ রয়েছে

ডিএনএস রাউন্ড রবিন সম্পর্কে:

আমাদের অভিপ্রায় ছিল রাউন্ড রবিন ডিএনএস টিটিএল মানটির জন্য আমাদের api.company.com (যা আমরা 1 ঘন্টা নির্ধারণ করেছি) ডাউন স্ট্রিম ক্যাশিং নেমসার্ভার, ওএস ক্যাশিং স্তর এবং ক্লায়েন্ট অ্যাপ্লিকেশন স্তর দ্বারা সম্মানিত করা।

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

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


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

রাউন্ড রবিন ইস্যুটি ঠিক করতে আমি নিজের কাস্টম ডিএনএস সার্ভারটি লিখে শেষ করেছি। এটি সূত্রের আইপি ঠিকানাটি দেখে এবং একটি রেকর্ডের সাথে সামঞ্জস্য রেখে উত্তর দেওয়ার জন্য একটি হ্যাশ ব্যবহার করে। 10 এর একটি ফ্যাক্টর দ্বারা আমাদের "পপ স্যুইচ" সমস্যাটি কাজ করছে এবং হ্রাস পেয়েছে বলে মনে হচ্ছে
দমৌরাত

4

বিকল্প সম্পর্কে আপনার প্রশ্নের উত্তর দিতে: আপনি HAProxy এর মাধ্যমে শক্ত স্তর -7 লোড ব্যালেন্সিং পেতে পারেন ।

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


HAProxy অবশ্যই আমার দর্শনীয় স্থান ছিল। আমি এল 4 ভি এল 7 লোড ভারসাম্যের উপর একটি আকর্ষণীয় নিবন্ধটি পড়েছি। ব্লগ.অলড ব্যালেন্সআরওগ / কেন- লেয়ার- --সস আমার গ্রহণ: আমি এটি অ্যাপ্লিকেশনটির হাতে রাখতে চাই। আমি আমাদের অ্যাপ্লিকেশন পরিবর্তন করার সাথে সাথে এলবি স্তরে যে কোনও অতিরিক্ত "স্মার্ট" যুক্ত করব তা কেবল প্যাচ করা / পড়তে হবে ressed অ্যাপ্লিকেশনটিতে সমস্যা সমাধানের অর্থ হ'ল আমরা এলবিতে জিনিসগুলি অপ্টিমাইজ করতে এবং সূক্ষ্ম-সুর করতে পারি, যদিও আত্মবিশ্বাসী থাকি যে কোনও এলবি মিসটপ থাকলেও আমরা এখনও ডেটা পাব।
dmourati

@ ডমৌরাটি: দুঃখিত, তবে সেই ব্লগ পোস্টটি ভুল অনুমান দ্বারা পূর্ণ। অন্ধভাবে এটি অনুসরণ করবেন না। এটি একেবারেই সত্য যে ওয়েব অ্যাপ্লিকেশন সার্ভারগুলির জন্য "ভাগ করা কিছুই নয়" আর্কিটেকচারটি 'সেরা'। সেক্ষেত্রে আপনার রাউন্ড রবিন বা র্যান্ডম লোড ব্যালেন্সিং ব্যবহার করা উচিত। তবে, যতক্ষণ না আপনি বহু-জিবি এইচটিটিপি আপলোড করেন আপনার দীর্ঘকালীন এইচটিটিপি কথোপকথন রয়েছে এবং এইচটিটিপি এক্সচেঞ্জ বুঝতে এবং সঠিকভাবে কাজ করার জন্য একটি এইচটিটিপি লোড ব্যালেন্সার কেবল আরও ভাল অবস্থানে রয়েছে। এইচটিটিপি ব্যালান্সার ব্যবহার করে আপনার ব্যাকএন্ড অ্যাপ্লিকেশন কোডটিকে 'চৌকস' করে তোলা যায় না, আপনি এখনও যে কোনও সময় তা করতে মুক্ত।
জেস্পার এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.