এইচটিটিপি লোড ব্যালেন্সিং স্তরটি স্কেল করার কীটি হ'ল প্রথমে নিম্ন-স্তরের (আইপি বা টিসিপি) লোড ব্যালেন্সিংয়ের আরেকটি স্তর যুক্ত করা। এই স্তরটি সম্পূর্ণ ওপেন-সোর্স সফ্টওয়্যার দিয়ে তৈরি করা যেতে পারে, যদিও আপনার কাছে আধুনিক রাউটারগুলি থাকলে আপনি আরও ভাল ফলাফল পাবেন।
প্রবাহগুলি (টিসিপি অধিবেশনগুলি) সোর্স / গন্তব্য আইপি এবং টিসিপি পোর্টগুলির মতো শিরোনাম ব্যবহার করে হ্যাশ করা উচিত , তারা কোন ফ্রন্টএন্ডে যাবে তা সিদ্ধান্ত নিতে। আপনার ফ্রন্টএন্ড্ট মারা যাওয়ার পরে এটি ব্যবহার বন্ধ হয়ে যায় তা নিশ্চিত করার জন্য আপনারও একটি ব্যবস্থা প্রয়োজন।
বিভিন্ন কৌশল রয়েছে, আমি কয়েক মিলিয়ন ব্যবহারকারীদের পরিষেবা দেওয়া সাইটগুলিতে আমি উত্পাদনে ব্যবহার করেছি এমন একটি দম্পতির রূপরেখা প্রকাশ করছি, যাতে আপনি ধারণাটি পেতে পারেন। বিশদে সমস্ত কিছু ব্যাখ্যা করা খুব দীর্ঘ হবে তবে আমি আশা করি এই উত্তরটি আপনাকে শুরু করার জন্য পর্যাপ্ত তথ্য / পয়েন্টার দেবে। এই সমাধানগুলি বাস্তবায়নের জন্য আপনার প্রয়োজন এমন কোনও ব্যক্তির দরকার যাঁরা নেটওয়ার্কিং সম্পর্কে সত্যই জ্ঞানী।
স্বীকারোক্তিযুক্ত যে আমি এখানে যা বর্ণনা করছি তা অন্যান্য উত্তরে বর্ণিত বর্ণনার চেয়ে বাস্তবায়ন করা বেশ কঠিন, তবে আপনার যদি 99,9% এরও বেশি বড় স্কেলেবিলিটি সমস্যা এবং প্রাপ্যতা প্রয়োজনীয়তা সহ একটি উচ্চ ট্র্যাফিকযুক্ত ওয়েবসাইট থাকে তবে এটি সত্যই অত্যাধুনিক is । আপনি যদি ইতিমধ্যে কোনও নেটওয়ার্ক ইঞ্জিনিয়ার কিন্ডা লোককে জাহাজে রেখেছেন তবে লোড ব্যালেন্সার অ্যাপ্লায়েন্সের তুলনায় এটি সেটআপ করতে এবং চালাতে (ক্যাপেক্স এবং অপেক্স উভয় ক্ষেত্রেই কম) ব্যয় হয় এবং এটি প্রায় কোনও অতিরিক্ত ব্যয়ে আরও ছোট করা যায় (বনাম কোনও নতুন কেনা, আরও বেশি) ব্যয়বহুল সরঞ্জাম যখন আপনি আপনার বর্তমান মডেলটি ছাড়িয়ে যান))
প্রথম কৌশল: একটি ফায়ারওয়াল দিয়ে
সম্ভবত আপনার কাছে একটি দম্পতি রাউটার রয়েছে যার উপর আপনার আইএসপি আপলিংকগুলি সংযুক্ত রয়েছে। আপনার আইএসপি 2 টি লিঙ্ক সরবরাহ করে (সক্রিয় / প্যাসিভ, ভিআরআরপি ব্যবহার করে)। আপনার রাউটারগুলিতে, আপনি ভিআরআরপিও ব্যবহার করেন এবং আপনার পাবলিক নেটওয়ার্কগুলিতে যাওয়া ট্র্যাফিকটিকে ফায়ারওয়ালে নিয়ে যান। ফায়ারওয়ালগুলি ( FW 1
এবং FW 2
নীচে) এছাড়াও সক্রিয় / নিষ্ক্রিয় এবং ট্র্যাফিক ফিল্টার করবে এবং প্রতিটি প্রবাহকে একটি স্বাস্থ্যকর ফ্রন্টএন্ড সার্ভারে প্রেরণ করবে (আপনার HTTP লোড ব্যালান্সার FE 1
এবং FE 2
নীচে)।
+ -------------- + + -------------- +
| আইএসপি রাউটার এ | | আইএসপি রাউটার বি |
+ -------------- + + -------------- +
| |
== # ======================= # == (সর্বজনীন নেটওয়ার্ক)
| |
+ --------------- + + --------------- +
| আপনার রাউটার এ | | আপনার রাউটার বি |
+ --------------- + + --------------- +
| |
== # ===== # ========= # ===== # == (আরএফসি 1918 ব্যক্তিগত নেটওয়ার্ক)
| | | |
+ ------ + + ------ + + ------ + + ------ +
| এফডাব্লু 1 | | এফই 1 | | এফই 2 | | এফডাব্লু 2 |
+ ------ + + ------ + + ------ + + ------ +
লক্ষ্যটি হ'ল এটির মতো একটি প্রবাহ চেহারা:
- আইএসপি ট্র্যাফিককে আপনার আইপিগুলিতে আপনার সক্রিয় রাউটারে যাত্রা করে।
- আপনার রাউটারগুলি ট্রাফিকটিকে কোনও ভিআইপি-র দিকে যাত্রা করে যা একটি আরএফসি 1918 ঠিকানা ব্যবহার করে। এই ভিআইপি সক্রিয় ফায়ারওয়ালের মালিকানাধীন, অনেকটা ভিআরআরপি-র মতো। আপনি আপনার ফায়ারওয়াল প্রয়োজনের জন্য OpenBSD ব্যবহার করেন তাহলে, তারপর আপনি ব্যবহার করতে পারেন কার্প , VRRP / HSRP করার জন্য একটি পেটেন্ট-মুক্ত বিকল্প।
- আপনার ফায়ারওয়ালটি ফিল্টার প্রয়োগ করে (যেমন "কেবলমাত্র 80 / টিসিপি এবং 443 / টিসিপি এই নির্দিষ্ট আইপি ঠিকানায় যাওয়ার অনুমতি দিন")।
- আপনার ফায়ারওয়াল রাউটার হিসাবেও কাজ করে এবং প্যাকেটগুলিকে স্বাস্থ্যকর সম্মুখভাগে ফরোয়ার্ড করে।
- আপনার অগ্রভাগ টিসিপি সংযোগটি সমাপ্ত করে।
এখন যাদুটি 4 এবং 5 ধাপে ঘটে, সুতরাং তারা কী কী আরও বিশদে দেখুন see
আপনার ফায়ারওয়ালটি সীমান্তগুলির তালিকা ( FE 1
এবং FE 2
) জানে এবং এটি প্রবাহের একটি নির্দিষ্ট দিকের (যেমন উত্স আইপি এবং পোর্ট, অন্যান্য শিরোলেখগুলির মধ্যে হ্যাশ করে) এর উপর ভিত্তি করে সেগুলির মধ্যে একটি বাছাই করবে। তবে এটিও নিশ্চিত করা দরকার যে এটি ট্র্যাফিককে একটি স্বাস্থ্যকর অগ্রভাগে ফরোয়ার্ড করছে, অন্যথায় আপনি ট্র্যাফিককে ব্ল্যাকহোল করবেন। উদাহরণস্বরূপ, যদি আপনি ওপেনবিএসডি ব্যবহার করেন তবে আপনি এটি ব্যবহার করতে পারেন relayd
। কিrelayd
এটি সহজ: এটি আপনার সমস্ত সম্মুখভাগ স্বাস্থ্য পরীক্ষা করে (উদাহরণস্বরূপ একটি প্রোব এইচটিটিপি অনুরোধ প্রেরণ করে) এবং যখনই কোনও সম্মুখভাগ সুস্থ থাকে এটি কোনও টেবিলে এটি যুক্ত করে যা ফায়ারওয়াল প্রদত্ত প্রবাহের প্যাকেটের পরবর্তী হ্যাপ নির্বাচন করতে ব্যবহার করে । যদি কোনও সম্মুখভাগ স্বাস্থ্য পরীক্ষায় ব্যর্থ হয়, এটি টেবিল থেকে সরানো হবে এবং এটিতে আর কোনও প্যাকেট প্রেরণ করা হবে না। কোনও প্যাকেটকে কোনও ফ্রন্টএন্ডে ফরোয়ার্ড করার সময়, সমস্ত ফায়ারওয়াল প্যাকেটের গন্তব্য ম্যাকের ঠিকানাটি অদলবদল করে যাতে অগ্রভাগটি বেছে নেওয়া হয়।
পদক্ষেপ 5 এ, ব্যবহারকারীর কাছ থেকে প্যাকেটগুলি আপনার লোড ব্যালেন্সারের দ্বারা গৃহীত হয় (তা বার্নিশ, এনগিনেক্স বা যাই হোক না কেন)। এই মুহুর্তে, প্যাকেটটি এখনও আপনার সার্বজনীন আইপি ঠিকানায় নির্ধারিত তাই আপনাকে লুপব্যাক ইন্টারফেসে আপনার ভিআইপি (গুলি) উপন্যাসের প্রয়োজন। এটিকে ডিএসআর (ডাইরেক্ট সার্ভার রিটার্ন) বলা হয়, কারণ আপনার সীমানা টিসিপি সংযোগটি শেষ করে এবং ফায়ারওয়াল কেবলমাত্র সিমপ্লেক্স ট্র্যাফিক দেখায় (কেবলমাত্র আগত প্যাকেট)। আপনার রাউটারটি বহির্গামী প্যাকেটগুলি সরাসরি আইএসপির রাউটারগুলিতে ফিরে যাবে। এটি HTTP ট্র্যাফিকের জন্য বিশেষত ভাল কারণ অনুরোধগুলি প্রতিক্রিয়ার চেয়ে ছোট হতে থাকে, কখনও কখনও তা উল্লেখযোগ্যভাবে হয়। কেবল পরিষ্কার করার জন্য: এটি কোনও ওপেনবিএসডি নির্দিষ্ট জিনিস নয় এবং উচ্চ-পাচারকারী ওয়েবসাইটগুলিতে বহুল ব্যবহৃত হয়।
Gotchas:
- শেষের ব্যবহারকারীরা সরাসরি আপনার ফ্রন্টএন্ড সার্ভারগুলিতে সংযুক্ত হবেন কারণ আপনি ডিএসআর ব্যবহার করেন। হতে পারে এটি ইতিমধ্যে ঘটনা ছিল, তবে এটি যদি না হয় তবে আপনাকে নিশ্চিত করতে হবে যে তারা পর্যাপ্ত সুরক্ষিত।
- যদি আপনি ওপেনবিএসডি ব্যবহার করেন তবে সাবধান থাকুন যে কার্নেলটি একক থ্রেডযুক্ত তাই একক সিপিইউ কোরের পারফরম্যান্স ফায়ারওয়ালের মধ্যস্থতা সীমিত করবে। আপনার এনআইসির ধরণ এবং আপনি যে প্যাকেটের হার দেখছেন তার উপর নির্ভর করে এটি সমস্যা হতে পারে। এই সমস্যাটি সমাধান করার উপায় রয়েছে (নীচে এটিতে আরও)।
দ্বিতীয় কৌশল: ফায়ারওয়াল ছাড়াই
এই কৌশলটি আরও দক্ষ তবে সেটআপ করা শক্ত কারণ এটি আপনার কাছে থাকা রাউটারগুলির নির্দিষ্টকরণের উপর আরও নির্ভর করে। উপরের ফায়ারওয়ালটি বাইপাস করা এবং ফায়ারওয়ালগুলি যে কাজ করছে তার সমস্ত কাজ রাউটারগুলিকে করতে হবে The
আপনার কাছে এমন রাউটারগুলির প্রয়োজন হবে যা প্রতি বন্দর এল 3 / এল 4 এসিএল, বিজিপি এবং ইসিএমপি এবং নীতি ভিত্তিক রাউটিং (পিবিআর) সমর্থন করে। কেবলমাত্র হাই-এন্ড রাউটারগুলি এই বৈশিষ্ট্যগুলিকে সমর্থন করে এবং বিজিপি ব্যবহার করার জন্য তাদের প্রায়শই অতিরিক্ত লাইসেন্স ফি থাকে। এটি সাধারণত হার্ডওয়্যার লোড ব্যালান্সারের তুলনায় সস্তা এবং এটি স্কেল করাও অনেক সহজ। এই হাই-এন্ড রাউটারগুলির সম্পর্কে ভাল কথাটি হ'ল তারা লাইন-রেটের প্রবণতা রয়েছে (যেমন তারা সর্বদা 10 জিবিই ইন্টারফেসে লিংকটি সর্বাধিক করতে পারে, কারণ তারা যে সমস্ত সিদ্ধান্ত নেয় সেগুলি এএসআইসি দ্বারা হার্ডওয়ারে করা হয়)।
যে সমস্ত পোর্টগুলিতে আপনার আইএসপি আপলিংক রয়েছে সেগুলিতে ফায়ারওয়ালে যে এসিএল ব্যবহার করা হত সেগুলি প্রয়োগ করুন (যেমন "কেবলমাত্র 80 / টিসিপি এবং 443 / টিসিপি এই নির্দিষ্ট আইপি ঠিকানায় যাওয়ার অনুমতি দিন")। তারপরে আপনার প্রত্যেকে প্রত্যেকে আপনার রাউটারের সাথে বিজিপি সেশন বজায় রাখুন। আপনি চমৎকার ব্যবহার করতে পারেন OpenBGPD অথবা (যদি আপনার frontends OpenBSD হয়) ক্যোয়াগ্যা । আপনার রাউটারটি স্বাস্থ্যকর প্রান্তের ট্র্যাফিক ইসিএমপি করবে (কারণ তারা তাদের বিজিপি সেশনগুলি বজায় রাখছে)। রাউটারটি পিবিআর ব্যবহার করে যথাযথভাবে ট্র্যাফিকের যাত্রা শুরু করবে।
পরিমার্জনা
- ফায়ারওয়াল জুটির সমাধানের সাহায্যে, আপনি যদি টিসিপি রাজ্যগুলিকে ফায়ারওয়ালগুলি জুড়ে সিঙ্ক্রোনাইজ করতে পারেন তবে এটি দুর্দান্ত, যাতে যখন একটি ফায়ারওয়াল ব্যর্থ হয়, তখন সমস্ত কিছু সহজেই অন্যটির সাথে ব্যর্থ হয়। আপনি এটি দিয়ে এটি অর্জন করতে পারেন
pfsync
।
- মনে রাখবেন যে
pfsync
সাধারণত আপনার ফায়ারওয়ালের প্যাকেটের হার দ্বিগুণ হবে।
- এইচটিটিপি একটি রাষ্ট্রবিহীন প্রোটোকল, সুতরাং আপনি যদি ফায়ারওয়াল ফেইলওভারের সময় সমস্ত সংযোগ পুনরায় সেট না করেন তবে এটি বিশ্বের শেষ নয় কারণ আপনি ব্যবহার করেন না
pfsync
।
- যদি আপনি একটি একক ফায়ারওয়াল ছাড়িয়ে যান তবে আপনি আপনার রাউটারে ইসিএমপি ব্যবহার করতে পারেন আপনার ট্রাফিককে একাধিক জোড় ফায়ারওয়ালে নিয়ে যাওয়ার জন্য।
- আপনি যদি একাধিক ফায়ারওয়াল ব্যবহার করেন তবে আপনি সেগুলিও সক্রিয় / সক্রিয় করতে পারেন। ফায়ারওয়ালগুলি রাউটারগুলির সাথে বিজিপি অধিবেশন বজায় রেখে আপনি এটি অর্জন করতে পারবেন, যেমন সীমান্তগুলিকে ফায়ারওয়াল ছাড়াই ২ য় ডিজাইনের একটি রক্ষণাবেক্ষণের প্রয়োজন।
নমুনা relayd
কনফিগার
Https://calomel.org/relayd.html এও হাওটোও দেখুন
ভিআইপি = "1.2.3.4" # আপনার সার্বজনীন আইপি ঠিকানা
# (আপনার একাধিক থাকতে পারে তবে দরকার নেই)
fe1 = "10.1.2.101"
Fe2 = "10.1.2.102"
Fe3 = "10.1.2.103"
fe4 = "10.1.2.104" # আপনি কোনও সংখ্যক সামনের অংশ রাখতে পারেন।
int_if = "em0"
টেবিল <fe> {$ fe1 আবার চেষ্টা করুন 2, $ fe2 আবার চেষ্টা করুন 2, $ fe3 পুনরায় চেষ্টা 2, $ fe4 পুনরায় চেষ্টা 2}
সারণী <ফ্যাকব্যাক> {127.0.0.1}
পুনঃনির্দেশ ওয়েবট্রাফি {
$ ভিআইপি পোর্ট 80 শুনুন
সেশন সময়সীমা 60
<fe> চেক HTTP "/healthcheck.html" ডাইজেস্ট "(স্বাস্থ্যচেকা html এর sha1sum)" ইন্টারফেস $ int_if
}