ভূমিকা
২০১ in-তে আপডেট Th জিনিসগুলি বিকশিত হচ্ছে, সমস্ত সার্ভারগুলি আরও ভাল হচ্ছে, তারা সকলেই এসএসএলকে সমর্থন করে এবং ওয়েবটি আগের চেয়ে আশ্চর্যজনক।
যতক্ষণ না বলা হয়েছে, নীচেগুলি ব্যবসায় এবং স্টার্ট-আপগুলিতে পেশাদারদের দিকে লক্ষ্য করে লক্ষ লক্ষ লক্ষ ব্যবহারকারীকে সমর্থন করে।
এই সরঞ্জামগুলি এবং আর্কিটেকচারগুলির জন্য প্রচুর ব্যবহারকারী / হার্ডওয়্যার / অর্থের প্রয়োজন। আপনি এটি একটি হোম ল্যাবে বা ব্লগ চালানোর জন্য চেষ্টা করতে পারেন তবে এটি খুব বেশি বোঝা যায় না।
একটি সাধারণ নিয়ম হিসাবে, মনে রাখবেন যে আপনি এটি সহজ রাখতে চান । প্রতিটি মিডলওয়্যার সংযোজন করা মিডলওয়্যারগুলি বজায় রাখার জন্য আরও সমালোচিত একটি অংশ। যুক্ত করার মতো কিছুই না থাকলে সিদ্ধি অর্জন হয় না তবে যখন অপসারণের কিছুই থাকে না।
কিছু সাধারণ এবং আকর্ষণীয় মোতায়েন
HAProxy (ভারসাম্য) + nginx (পিএইচপি অ্যাপ্লিকেশন + ক্যাশে)
ওয়েবসভারটি পিএনএফপি চালিত এনগিনেক্স। যখন এনগিনেক্স ইতিমধ্যে রয়েছে তখন এটি ক্যাচিং এবং পুনঃনির্দেশগুলি হ্যান্ডেল করতে পারে।
HAProxy ---> nginx-php
A ---> nginx-php
P ---> nginx-php
r ---> nginx-php
o ---> nginx-php
x ---> nginx-php
y ---> nginx-php
HAProxy (ভারসাম্য) + বার্নিশ (ক্যাশিং) + টমক্যাট (জাভা অ্যাপ্লিকেশন)
ইউআরআই (* .jpg * .css * .js) এর ভিত্তিতে HAProxy বার্নিশে পুনর্নির্দেশ করতে পারে।
HAProxy ---> tomcat
A ---> tomcat
---> tomcat
P ---> tomcat <----+
r ---> tomcat <---+|
o ||
x ---> varnish <--+|
y ---> varnish <---+
HAProxy (ভারসাম্য) + এনগিনেক্স (হোস্টের কাছে SSL এবং ক্যাশে) + ওয়েবসার্ভ (অ্যাপ্লিকেশন)
প্রত্যেকটি এসএসএল স্পিক করা উচিত এসএসএল ( বিশেষত ইসি 2 এর মাধ্যমে প্রাইভেট ব্যবহারকারীর তথ্যের সাথে এই হ্যাপ্রোক্সি- ওয়েব সার্ভারের লিঙ্ক) থাকা সত্ত্বেও ওয়েবসভারগুলি এসএসএল বলতে পারে না । স্থানীয় এনগিনেক্স যুক্ত করা হোস্টে এসএসএল আনতে দেয়। এনজিএনএক্স একবার এলে এটি কিছু ক্যাচিং এবং ইউআরএল পুনর্লিখন করতে পারে।
দ্রষ্টব্য : বন্দর পুনর্নির্দেশ 443: 8080 ঘটছে তবে বৈশিষ্ট্যের অংশ নয়। বন্দর পুনর্নির্দেশ করার কোনও অর্থ নেই। লোড ব্যালেন্সার সরাসরি ওয়েবসার্ভারের সাথে কথা বলতে পারে: 8080।
(nginx + webserver on same host)
HAProxy ---> nginx:443 -> webserver:8080
A ---> nginx:443 -> webserver:8080
P ---> nginx:443 -> webserver:8080
r ---> nginx:443 -> webserver:8080
o ---> nginx:443 -> webserver:8080
x ---> nginx:443 -> webserver:8080
y ---> nginx:443 -> webserver:8080
মিডলওয়্যার
HAProxy: ভার ভারসাম্যকারী
প্রধান বৈশিষ্ট্য :
- লোড ব্যালেন্সিং (টিসিপি, এইচটিটিপি, এইচটিটিপিএস)
- একাধিক অ্যালগরিদম (রাউন্ড রবিন, উত্স আইপি, শিরোনাম)
- অধিবেশন অধ্যবসায়
- এসএসএল সমাপ্তি
অনুরূপ বিকল্প : এনগিনেক্স (মাল্টি-পারপাস ওয়েব-সার্ভার লোড ব্যালেন্সার হিসাবে কনফিগারযোগ্য)
বিভিন্ন বিকল্প : ক্লাউড (অ্যামাজন ইএলবি, গুগল লোড ব্যালেন্সার), হার্ডওয়্যার (এফ 5, ফোরটিনেট, সিট্রিক্স নেটস্কেলার), অন্যান্য ও বিশ্বব্যাপী (ডিএনএস, যেকোনকাস্ট, ক্লাউডফ্লেয়ার)
HAProxy কী করে এবং কখন আপনি এটি ব্যবহার করতে চান?
যখনই আপনার প্রয়োজন ভারসাম্য ভারসাম্য। HAProxy সমাধানে যেতে হয়।
আপনি যখন খুব সস্তা বা দ্রুত এবং নোংরা করতে চান বা আপনার কাছে দক্ষতা উপলব্ধ নেই তা বাদে আপনি ELB ব্যবহার করতে পারেন: ডি
ছাড়া যখন আপনি ব্যাংকিং / সরকারি / অনুরূপ কঠিন প্রয়োজনীয়তা সঙ্গে আপনার নিজের datacenter ব্যবহার করতে প্রয়োজন মধ্যে আছেন (ডেডিকেটেড পরিকাঠামো, নির্ভরযোগ্য ফেলওভার, ফায়ারওয়াল এর 2 স্তর নিরীক্ষণ স্টাফ, SLA প্রস্তাব প্রতি ডাউনটাইম মিনিট এক্স% পরিশোধ করতে, এক সব) তাহলে আপনি আপনার 30 টি অ্যাপ্লিকেশন সার্ভার যুক্ত র্যাকের উপরে 2 টি 5 রাখতে পারেন।
ছাড়া যখন আপনি পূর্বে 100 কিলোবাইট http (s) [এবং মাল্টি-সাইট] যেতে চান, তাহলে আপনি নিশ্চয়ই গুণিতক [বিশ্বব্যাপী] লোড তাদের (cloudflare, ডিএনএস, anycast) সামনে মিট একটি স্তর সঙ্গে HAProxy। তাত্ত্বিকভাবে, বিশ্বব্যাপী ভারসাম্যকারী HAProxy খনন করার অনুমতি দিয়ে সরাসরি ওয়েবসার্সের সাথে কথা বলতে পারে। সাধারণত তবে, আপনি HAProxy (গুলি) কে আপনার ডেটাসেন্টারে পাবলিক এন্ট্রি পয়েন্ট হিসাবে রাখতে হবে এবং হোস্টগুলিতে পুরোপুরি ভারসাম্য বজায় রাখতে এবং বৈকল্পিকতা হ্রাস করার জন্য উন্নত বিকল্পগুলি টিউন করতে হবে।
ব্যক্তিগত মতামত : একটি ছোট, অন্তর্ভুক্ত, মুক্ত উত্স প্রকল্প, সম্পূর্ণরূপে এক সত্য উদ্দেশ্যকে উত্সর্গীকৃত। সবচেয়ে সহজ কনফিগারেশন (ওয়ান ফাইল) এর মধ্যে, আমি আমার জীবনে এসেছি সবচেয়ে দরকারী এবং সবচেয়ে নির্ভরযোগ্য ওপেন সোর্স সফ্টওয়্যার।
এনজিনেক্স: আপাচি যা চুষে না
প্রধান বৈশিষ্ট্য :
- ওয়েব সার্ভার এইচটিটিপি বা এইচটিটিপিএস
- সিজিআই / পিএইচপি / কিছু অন্যান্যতে অ্যাপ্লিকেশন চালান
- ইউআরএল পুনর্নির্দেশ / পুনর্লিখন
- প্রবেশাধিকার নিয়ন্ত্রণ
- এইচটিটিপি শিরোনামগুলি ম্যানিপুলেশন
- ক্যাশিং
- বিপরীত প্রক্সি
অনুরূপ বিকল্প : অ্যাপাচি, লাইটটিপিডি, টমক্যাট, গ্যানিকর্ন ...
অ্যাপাচি হ'ল ডি-ফ্যাক্টো ওয়েব সার্ভার, httpd.conf
একটি ভাঙ্গা অনুরোধ প্রক্রিয়াকরণ আর্কিটেকচারের শীর্ষে কয়েক ডজন মডিউল এবং হাজার হাজার লাইনের দৈত্যাকার ক্লাস্টারফাক হিসাবেও পরিচিত । কম মডিউল, (সামান্য) সহজ কনফিগারেশন এবং একটি ভাল মূল আর্কিটেকচার সহ এনজিঙ্কস এগুলি আবারও করুন।
এনজিনেক্স কী করে এবং কখন আপনি এটি ব্যবহার করতে চান?
একটি ওয়েবসভারটি অ্যাপ্লিকেশনগুলি চালানোর উদ্দেশ্যে তৈরি। আপনার অ্যাপ্লিকেশনটি যখন এনজিনেক্সে চালানোর জন্য বিকাশ করা হবে, আপনার ইতিমধ্যে এনগিনেক্স রয়েছে এবং আপনি এর সমস্ত বৈশিষ্ট্যও ব্যবহার করতে পারেন।
ছাড়া যখন আপনার আবেদন nginx এবং nginx চালানোর উদ্দেশ্যে না হয় কোথাও না তারপর nginx কম বিন্দু আপনার স্ট্যাক (জাভা দোকান কেউ?) পাওয়া যাবে। ওয়েবসার্ভার বৈশিষ্ট্যগুলি আপনার বর্তমান ওয়েবসার্ভারে উপস্থিত থাকতে পারে এবং অন্যান্য কাজগুলি উপযুক্ত উত্সর্গীকৃত সরঞ্জাম (HAProxy / বার্নিশ / সিডিএন) দ্বারা আরও ভালভাবে পরিচালনা করা হয়।
ছাড়া যখন আপনার ওয়েবসার্ভার / অ্যাপ্লিকেশান বৈশিষ্ট্য উদাসীন, হার্ড কনফিগার এবং / অথবা আপনি বরং কাজ চেয়ে (যে কেউ Gunicorn?) এটি তাকান মরা সেই ভাষাতে, তাহলে আপনি সামনে একটি nginx করা হতে পারে (যেমন প্রতিটি নোডের স্থানীয়ভাবে) URL টি সম্পাদন করতে পুনরায় লেখা, 301 পুনর্নির্দেশগুলি প্রেরণ করুন, অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগ করুন, এসএসএল এনক্রিপশন সরবরাহ করুন, এবং ফ্লাইটে এইচটিটিপি শিরোনাম সম্পাদনা করুন। [ওয়েব সার্ভারের কাছ থেকে প্রত্যাশিত বৈশিষ্ট্যগুলি]
বার্নিশ: ক্যাশিং সার্ভার
প্রধান বৈশিষ্ট্য :
- ক্যাশিং
- অ্যাডভান্সড ক্যাচিং
- ফাইন দানযুক্ত ক্যাচিং
- ক্যাশিং
অনুরূপ বিকল্প : এনগিনেক্স (বহু-উদ্দেশ্যমূলক ওয়েব-সার্ভার ক্যাশে সার্ভার হিসাবে কনফিগারযোগ্য)
বিভিন্ন বিকল্প : সিডিএন (আকামাই, আমাজন ক্লাউডফ্রন্ট, ক্লাউডফ্লেয়ার), হার্ডওয়্যার (এফ 5, ফোর্টিনেট, সিট্রিক্স নেটস্কেলার)
বার্নিশ কী করে এবং কখন আপনি এটি ব্যবহার করতে চান?
এটি ক্যাচিং করে, কেবল ক্যাচিং করে। এটি সাধারণত পরিশ্রমের পক্ষে মূল্যহীন না এবং এটি সময় নষ্ট করে। পরিবর্তে সিডিএন চেষ্টা করুন। সচেতন হন যে ওয়েবসাইট চালানোর সময় ক্যাশিং আপনার শেষের দিকে যত্ন নেওয়া উচিত।
আপনি যখন ছবি বা ভিডিওগুলি সম্পর্কে একচেটিয়াভাবে কোনও ওয়েবসাইট চালাচ্ছেন তখন ব্যতীত আপনার সিডিএন ভালভাবে সন্ধান করা উচিত এবং গুরুত্ব সহকারে ক্যাশিংয়ের কথা ভাবা উচিত।
ছাড়া যখন আপনি (যা CDN একটি বিকল্প হয় না) আপনার নিজের datacenter আপনার নিজের হার্ডওয়্যার ব্যবহার করতে বাধ্য করছি এবং আপনার সার্ভারগুলির স্ট্যাটিক ফাইল (আরো সার্ভারগুলির যোগ সাহায্য নয়) প্রদান এ ভয়ানক তারপর বার্নিশ শেষ অবলম্বন করা হয়।
ছাড়া যখন আপনি বেশিরভাগই স্ট্যাটিক এখনো-জটিল-পরিবর্তনশীল-জেনারেট-সামগ্রী সহ একটি সাইট আছে (দেখুন নিম্নলিখিত অনুচ্ছেদের) তাহলে বার্নিশ আপনার সার্ভারগুলির উপর প্রক্রিয়াকরণের ক্ষমতা অনেক সঞ্চয় করতে পারেন।
স্ট্যাটিক ক্যাচিং 2016 সালে ওভাররেটেড
ক্যাচিং প্রায় কনফিগারেশন মুক্ত, অর্থ মুক্ত এবং সময়মুক্ত। কেবল ক্লাউডফ্লেয়ার, বা ক্লাউডফ্রন্ট বা আকামাই বা ম্যাকসিডিএন-তে সাবস্ক্রাইব করুন। এই লাইনটি লিখতে আমার যে সময় লাগে তার থেকে বেশি সময় লেগে যায় এবং সেট আপটি ক্যাশিং সেটআপ করতে সময় নেয় এবং আমার হাতে যে বিয়ারটি ধরে থাকে তা মাঝারি ক্লাউডফ্লেয়ার সাবস্ক্রিপশনের চেয়ে ব্যয়বহুল।
এই সমস্ত পরিষেবাগুলি স্ট্যাটিক * .সিএসএস * .জেএসএস * .পিএনজি এবং আরও অনেক কিছু জন্য বক্সের বাইরে কাজ করে। আসলে, তারা বেশিরভাগ Cache-Control
এইচটিটিপি শিরোনামের নির্দেশকে সম্মান করে । ক্যাশিংয়ের প্রথম পদক্ষেপটি হ'ল যথাযথ ক্যাশে নির্দেশনা প্রেরণের জন্য আপনার ওয়েবসার্সগুলি কনফিগার করা। কোন সিডিএন, কোন বার্নিশ, কোন ব্রাউজার মাঝখানে রয়েছে তা বিবেচ্য নয়।
পারফরম্যান্স বিবেচনা
বার্নিশ এমন সময়ে তৈরি করা হয়েছিল যখন গড় ওয়েব সার্ভারগুলি একটি ব্লগে বিড়ালের ছবি পরিবেশন করতে দম বন্ধ করছিল। আজকাল গড় আধুনিক মাল্টি-থ্রেডড অ্যাসিনক্রোনাস বুজওয়ার্ড-চালিত ওয়েবসার্ভারের একক উদাহরণটি নির্ভরযোগ্যভাবে একটি বিড়ালছানা একটি পুরো দেশে সরবরাহ করতে পারে। সৌজন্যে sendfile()
।
আমি যে শেষ প্রকল্পটিতে কাজ করেছি তার জন্য কিছু দ্রুত পারফরম্যান্স পরীক্ষা করেছি। একটি একক টমক্যাট উদাহরণটি এইচটিটিপিতে প্রতি সেকেন্ডে 21 000 থেকে 33 000 স্ট্যাটিক ফাইল পরিবেশন করতে পারে (20 বি থেকে 12 কেবি পর্যন্ত ফাইলগুলি পৃথক এইচটিটিপি / ক্লায়েন্ট সংযোগ গণনা সহ পরীক্ষা করে)। স্থায়ী আউটবাউন্ড ট্র্যাফিক ২.৪ জিবি / সেকেন্ডের বাইরে। উত্পাদনে কেবল 1 জিবি / গুলি ইন্টারফেস থাকবে। হার্ডওয়ারের চেয়ে ভাল আর করা যায় না, এমনকি বার্নিশ চেষ্টা করেও লাভ নেই।
গতিশীল কন্টেন্ট পরিবর্তন করে ক্যাচিং
যা CDN এবং ক্যাশে সার্ভার সাধারণত পরামিতি সঙ্গে URL টি এড়ান ?article=1843
, তারা সেশন কুকিজ বা প্রমাণীকৃত ব্যবহারকারীদের সাথে কোন অনুরোধ উপেক্ষা করা, এবং তারা সহ সবচেয়ে MIME প্রকারসমূহ উপেক্ষা application/json
থেকে /api/article/1843/info
। কনফিগারেশন বিকল্পগুলি উপলব্ধ রয়েছে তবে সাধারণত "সমস্ত বা কিছুই নয়" জরিমানা দানাযুক্ত নয় ined
বার্নিশের কাস্টম কী এবং কী নয় তা নির্ধারণের জন্য কাস্টম জটিল বিধি (ভিসিএল দেখুন) থাকতে পারে। এই নিয়মগুলি ইউআরআই, শিরোলেখ এবং বর্তমান ব্যবহারকারীর সেশন কুকি এবং মাইমির ধরণ এবং সমস্ত সংযুক্ত সামগ্রীর দ্বারা নির্দিষ্ট সামগ্রীকে ক্যাশে করতে পারে। এটি কিছু অতি নির্দিষ্ট লোড প্যাটার্নের জন্য ওয়েবসভারগুলিতে প্রচুর প্রক্রিয়াকরণ শক্তি সঞ্চয় করতে পারে। বার্নিশ যখন সুবিধাজনক এবং দুর্দান্ত is
উপসংহার
এই সমস্ত টুকরোটি বুঝতে, কখন সেগুলি ব্যবহার করতে হবে এবং কীভাবে তারা একসাথে ফিট হয় তা বুঝতে আমার কিছুটা সময় লেগেছে। আশা করি এটি আপনাকে সহায়তা করতে পারে।
এটি বেশ দীর্ঘ হতে পারে (6 ঘন্টা লিখতে O ওএমজি!: ও)। সম্ভবত আমার এটি সম্পর্কে একটি ব্লগ বা একটি বই শুরু করা উচিত। মজাদার ঘটনা: উত্তরের দৈর্ঘ্যের কোনও সীমা আছে বলে মনে হয় না।