বিভিন্ন পাত্রে ডিনক্রাইজিং এনগিনেক্স এবং পিএইচপি করার সুবিধা কী কী?


18

আমি সবেমাত্র ডকার এবং কুবারনেটসের সাথে কাজ শুরু করেছি এবং আমি প্রচুর স্ট্যাক দেখছি, যাতে কিছু লোক একটি ছবিতে এনগিনেক্স + পিএইচপি তৈরি করে এবং কেউ এনজিঞ্জ এবং একটি পিএইচপি দিয়ে একটি চিত্র তৈরি করে (একই পথটি মাউন্ট করে এবং বন্ধ করে দেয়) উভয় পাত্রে কুবারনেটসে একই স্থাপনার)।

উভয় nginx + php একই একটিতে ইনস্টল না করে দুটি ডকার চিত্র তৈরির সুবিধা কী হবে?

উত্তর:


19

এনজিনেক্স সহ পিএইচপি সাধারণত পিএইচপি-এফপিএম ব্যবহার করে করা হয় যা একটি পৃথক প্রক্রিয়া।

কনটেইনার প্রতি এক প্রক্রিয়ার ডকারের মূল ধারণাটি (এই বিষয়ে আরও তথ্যের জন্য উত্তরের শেষ দেখুন) রেখে আলাদা আলাদা পাত্রে এনজিনেক্স প্রক্রিয়া এবং পিএইচপি-এফপিএম প্রক্রিয়াটি বোঝা যায়।

যেমন ফারজির মাধ্যমে এনজিনেক্স এবং পিএইচপি-এফপিএমের মধ্যে যোগাযোগ উত্থাপিত হয় পিএইচপি-এফপিএম কনটেইনারটি পৃথক হোস্টেও থাকতে পারে এবং এটি এনজিঞ্জের পিছনে পিএইচপি-এফপিএম কনটেইনার ব্যবহার করতে দেয়।

এখানে মন্তব্যের প্রাচীরটি আরও কিছুটা পটভূমি হওয়ার পরে, ডকার ডকুমেন্টেশনে ধারকটির ধারণা রয়েছে যে ধারকটির কেবলমাত্র একটি উদ্বেগ থাকা উচিত

একটি লিনাক্স ধারক ( এলএক্সসি ) এর মূল ধারণাটি হল সিপিইউ এবং মেমরি স্তরে বিচ্ছিন্ন নেমস্পেসে একটি প্রক্রিয়া চালানো, ফাইল সিস্টেমের স্তরে এই বিচ্ছিন্নতার উপরে ডকার অ্যাড।
সুবিধাটি হ'ল এই নেমস্পেসের মধ্যে কোনও প্রক্রিয়ার আপসটি অন্য প্রক্রিয়াগুলির মেমোরি পড়তে দেয় না এবং যেমন হোস্টের সাথে অন্য আপসকে আটকাতে হবে।

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

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

সুতরাং শেষ পর্যন্ত আমি কিছু জোর দিয়ে ডকার পৃষ্ঠাটি উদ্ধৃত করব:

যদিও "ধারক প্রতি এক প্রক্রিয়া" প্রায়শই থাম্বের একটি ভাল নিয়ম, এটি কোনও কঠোর এবং দ্রুত নিয়ম নয়। পাত্রে যতটা সম্ভব পরিষ্কার এবং মডুলার রাখতে আপনার সেরা রায় ব্যবহার করুন

এমন কোনও "সিলভার বুলেট রুল" নেই যা সমস্ত কিছুর জন্য প্রযোজ্য, এটি সবসময় ধারকটির মধ্যে জটিলতা এবং পাত্রে নিজেরাই অর্কেস্টারেটিং জটিলতার মধ্যে ভারসাম্য বজায় রাখে।


3
মূল ধারণাটি আসলে "প্রতিটি পাত্রে কেবল একটি উদ্বেগ থাকা উচিত", এবং "এটি অবশ্যই সত্য নয় যে ধারক প্রতি একটি অপারেটিং সিস্টেম প্রক্রিয়া থাকা উচিত"। docs.docker.com/engine/userguide/eng-image/…
ব্যবহারকারী 2640621

আমি স্বীকার করি এটি ধারণাকে আঘাত করার একটি শর্টকাট, এনগিনেক্স কোনও একক একক প্রক্রিয়া নয় এবং পিএইচপি-এফপিএম নয়, তবে আমার উত্তরে উদ্বেগের দ্বারা প্রক্রিয়াটি প্রতিস্থাপন করুন এবং এটি এখনও ঠিক আছে
এনগিনেক্স

3
উত্তরটি সাধারণত কনটেইনার অনুযায়ী একটি পরিষেবা একটি পোর্ট, সত্যিকার অর্থে একটি প্রক্রিয়া নয়। অন্যদিকে, আপনার যদি কোনও ধারকটিতে একাধিক চলমান প্রক্রিয়া থাকে, আপনার কিছু প্রাথমিক প্রক্রিয়া, পরিষেবা পরিচালনা, পুনরায় চালু, স্বতন্ত্র লগিং, স্বতন্ত্র প্যাকেজ নির্ভরতা বিবেচনা করা দরকার, এটি কিছুটা জটিল হয়ে যায়। এবং কখনও কখনও স্কেলিংয়ের সময় 1: 1 ম্যাপিং 1: n ম্যাপিংয়ে রূপান্তরিত হয়।
জিরি ক্লাউদা

@ জিরি শয়তানের উকিল খেলছেন: সুতরাং পোস্টগ্রিস ডিবি ব্যবহার করে রেল অ্যাপের সামনে একটি অ্যাপাচি একই পাত্রে যেতে হবে? সর্বোপরি বাহ্যিক দৃষ্টিতে এটি কেবল একটি পরিষেবা one
তেনসিবাই

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

4

প্রকৃতপক্ষে, এখানে একটি অনুপস্থিত পয়েন্ট হ'ল অনুভূমিক স্কেলিবিলিটি। অনেক দিন আগে জেমি আলকুইজার একটি নিবন্ধ এই সম্বোধন করেছে:

http://archive.is/pDzz0

সংক্ষেপে, আপনি উচ্চতর পারফরম্যান্সে পৌঁছানোর জন্য আপনার পিএইচপি-এফপিএমকে অনুভূমিকভাবে স্কেল করুন। Nginx + php-fpm একসাথে স্কেলিং করা আপনার কোনও সুবিধা দেয় না। নিবন্ধটি কী বলেছে তা যাচাই করতে আমি আপনাকে কিছু স্ট্রেস টেস্টিং (উদাঃ সুসুং, গ্যাটলিং ইত্যাদি) করতে উত্সাহিত করি; আমার ব্যক্তিগতভাবে বেশ কয়েকটি বাস্তব বিশ্বের অভিজ্ঞতা রয়েছে যা নিবন্ধটি সাধারণভাবে সত্য প্রমাণিত হয়েছে।

তবে খালি ধাতব মেশিন / ভিএম এর জন্য দুটি ঘাটতি রয়েছে (সম্ভবত কুবেরনেটের জন্য নয়):

  1. কীভাবে এনগিনেক্স কনফিগার করবেন পিএইচপি-এফপিএম কনটেইনার পরিবর্তনগুলি? এটা সহজ অংশ।
  2. স্কেলিংয়ের পরে আমরা কীভাবে একই ভলিউম / ফাইল সিস্টেমগুলি ভাগ করব? Nginx এবং পিএইচপি-এফপিএম পাত্রে সামঞ্জস্যতা পৌঁছানোর জন্য একই বিষয়বস্তুটি পড়তে হবে। এটি আপনাকে কাজ করার জন্য সর্বনিম্ন ধাঁধা অংশ (এবং সবচেয়ে মজার অংশ) ছেড়ে দেয়।

সম্পাদনা: এখন এটি বছরের 2019 সালের প্রায় অর্ধেক। একই পোদে পুরানো মডেল, php-fpm + nginx এর বিভিন্ন ব্যবহার রয়েছে x যদি আপনি পরিষেবার জালের সাথে পরিচিত হন, তবে পূর্ব-পশ্চিম সীমান্তের ট্র্যাফিক পরিচালনার জন্য এনজিনেক্স (বা যাকে যা বলা হয় Nginmesh) একটি সিডিকার হিসাবে কাজ করে। পূর্ব-পশ্চিম সীমান্তের ট্র্যাফিক বেশিরভাগ পরিষেবাগুলির মধ্যে বা অন্যান্য অভিনব ক্রিয়াকলাপগুলির মধ্যে প্রমাণীকরণের জন্য ব্যবহৃত হত, যেখানে খাঁটি পিএইচপি-এফপিএম সেই কাজটি করতে পারে না।


3

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


আপনি কি একই পাত্রে বিভিন্ন চিত্র বোঝাতে চাইছেন?
কার্লোসাস

একই পাত্রে আপনি কীভাবে এনগিনেক্স এবং পিএইচপি-এফপিএম শুরু করবেন? একটি উদাহরণ যোগ করুন।
২030

1
@ 030 এখানে একটি উদাহরণ রয়েছে
কার্লোসাস

2
@ কার্লোস দেব উদ্দেশ্যগুলির জন্য অত্যন্ত বৈধ উদাহরণ, আমি উত্পাদন ব্যবহারের জন্য এই ধরণের জিনিসগুলি ব্লক করব (একটি ধারক মধ্যে সুপারভাইজার চালানো বেশ সহজেই একটি পাদদেশে পরিণত হতে পারে)
তেনসাইবাই

আমি এই উত্তরটির সাথে একমত নই, এই যুক্তির সাথে মোড সিকিউরিটি সহ একটি অ্যাপাচি সার্ভার টমক্যাটের সাথে কথা বলে একটি পোস্টগ্র্যাসকিএল সার্ভারের সাথে কথা বলার জন্য কেবল একটি অ্যাপের হোস্টিং কেবল একটি ধারকের মধ্যেই ফিট হওয়া উচিত।
তেনসিবাই

-1

সুবিধাটি হ'ল: আপনি ব্যাক-এন্ডে একাধিক পিএইচপি-এফপিএম পাত্রে চালাতে পারেন, আমরা এটিকে পিএইচপি ক্লাস্টার বলি, পোর্টের সংখ্যার মাধ্যমে। উদাহরণস্বরূপ পোর্ট 9000, 9001, 9002 .. এবং আরও

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