পূর্ববর্তী একটি নিবন্ধে, আপনি LXD কী এবং কীভাবে এটি দিয়ে শুরু করবেন তা জানতে পারেন, যদি আপনি প্ল্যাটফর্মের সাথে অপরিচিত হন।
বেশিরভাগ ক্ষেত্রে, আপনি একটি বৃহত্তর সমগ্রকে ছোট উপাদানে বিভক্ত করতে একই সিস্টেমে একাধিক পাত্র ব্যবহার করবেন। প্রতিটি উপাদান ব্যবহার করতে পারে এমন সংস্থানগুলির পরিমাণ সীমিত করা বোধগম্য। কিন্তু কেন? স্পষ্টতই, আপনি কন্টেইনার ব্যবহার করতে পারেন এমন পরিস্থিতির মতো কারণের সংখ্যা সীমাহীন৷
যখন LXD পাত্রে সীমাগুলি কার্যকর হতে পারে
- একটি পরিষেবা প্রদান করা এবং প্রতিটি গ্রাহককে একটি LXD উদাহরণ প্রদান করা। উদাহরণস্বরূপ, এটি একটি বড় সার্ভার হতে পারে এবং আপনি প্রতিটি গ্রাহকের ওয়েবসাইটকে একটি পৃথক কন্টেইনারে হোস্ট করেন৷ যদি একটি ওয়েবসাইট হঠাৎ ট্র্যাফিকের বিস্ফোরণ পায়, তাহলে এটি অন্যান্য ঘটনাগুলিকে ধীর করে দিতে পারে। সীমা সহ, শুধুমাত্র একটি ধারক ধীর হয়ে যাবে, এবং বাকিগুলি স্বাভাবিকভাবে কাজ করবে৷
- একই পরিস্থিতিতে, আপনি সহজেই বিভিন্ন পরিষেবা প্ল্যান বিক্রি করতে পারেন। একজন গ্রাহক X পরিমাণ সম্পদের জন্য অর্থ প্রদান করতে পারেন, এবং অন্যটি Y পরিমাণের জন্য অর্থ প্রদান করতে পারেন। এবং আপনি সহজে কয়েকটি সাধারণ কমান্ড দিয়ে এটি সামঞ্জস্য করতে পারেন।
- আপনি সেবা অস্বীকারের সহজ ধরনের আক্রমণ থেকে নিজেকে রক্ষা করতে পারেন। যখন একটি পাত্রে বোমা হামলা হয়, তখন এটি তার সম্পদ ব্যবহারের সীমায় পৌঁছে যাবে। অন্যান্য পাত্রে প্রভাবিত হবে না।
- আপনার কাছে দুটি কন্টেইনার আছে যেগুলো প্রত্যেকে উপলব্ধ CPU সময়ের 100% ব্যবহার করবে। যাইহোক, আপনি চান যে একটি অন্যটির চেয়ে দ্রুত কাজ শেষ করুক। উদাহরণস্বরূপ, আপনার আগামীকাল প্রয়োজন এমন একটি প্রকল্পের জন্য কেউ একটি ভিডিও রেন্ডার করতে পারে। আপনি CPU সময়ের 90% প্রথমটিকে এবং 10% দ্বিতীয়টিকে দিতে পারেন৷
অবশ্যই, আপনার নিজের কারণ থাকতে পারে। এবং যদি আপনি পুরো সিস্টেমে শুধুমাত্র একটি ধারক ব্যবহার করেন তবে আপনার এটির প্রয়োজনও নাও হতে পারে। কিন্তু আপনি যদি একাধিক পাত্র ব্যবহার করেন, তাহলে আপনাকে প্রায় সবসময়ই কিছু ধরনের সীমা সেট করতে হবে। কারণ, একটি LXD দৃষ্টান্তে একটি আক্রমণ, একটি বাগ, বা অন্য কোনো ধরনের দুর্ব্যবহার পুরো সিস্টেমকে প্রভাবিত করতে পারে এবং এটিকে ধীর করে দিতে পারে। আপনার কাছে যত বেশি কন্টেইনার থাকবে, এই ধরনের পরিস্থিতির সম্ভাবনা তত বাড়বে।
LXD পাত্রে সম্পদের সীমা কিভাবে সেট করবেন
ডিস্ক অপারেশন সম্পর্কিত সম্পদ নিয়ন্ত্রণ ZFS ইনস্টল করা প্রয়োজন হবে. আপনি যদি এখানে টিউটোরিয়ালটি অনুসরণ করেন তবে এটি ইতিমধ্যেই ইনস্টল করা আছে। অন্যথায়, টিউটোরিয়ালে নির্দেশিত হিসাবে ZFS ইউটিলিটিগুলি ইনস্টল করুন এবং তারপরে নীচের কমান্ডটি পুনরায় চালু করুন। কোন স্টোরেজ ব্যাকএন্ড ব্যবহার করতে চাওয়া হলে ZFS বেছে নিন।
sudo lxd init
মেমরির ব্যবহার সীমিত করুন
নীচের কমান্ডগুলিতে, আপনার ধারকটির আসল নাম দিয়ে "container_name" প্রতিস্থাপন করুন। একটি মেমরি সীমা সেট করা প্রবেশ করার মতোই সহজ:
lxc config set container_name limits.memory 100MB
আপনি যদি মেগাবাইটের পরিবর্তে গিগাবাইট ব্যবহার করতে চান তবে "MB" এর পরিবর্তে "GB" টাইপ করুন৷
CPU ব্যবহার সীমিত করুন
যখন আপনি একটি কন্টেইনার ব্যবহার করতে পারেন কতগুলি CPU কোর সীমাবদ্ধ করতে চান, টাইপ করুন:
lxc config set container_name limits.cpu 2
নির্দিষ্ট CPU কোরে "পিন" করতে, ব্যবহার করুন:
lxc config set container_name limits.cpu 0-0
এটি কন্টেইনারটিকে শুধুমাত্র প্রথম CPU ব্যবহার করবে। দ্বিতীয়টি ব্যবহার করতে, আপনি 1-1 টাইপ করবেন। প্রথম থেকে তৃতীয় পর্যন্ত সমস্ত CPU কোর ব্যবহার করতে, আপনি টাইপ করবেন 0-3৷
৷অন্য ধরনের সীমা হল একটি কন্টেইনার কতটা CPU সময় ব্যবহার করতে পারে।
lxc config set container_name limits.cpu.allowance 10ms/100ms
এটি প্রতি 100 মিলিসেকেন্ডের মধ্যে কন্টেইনারকে শুধুমাত্র দশ মিলিসেকেন্ডের CPU সময় ব্যবহার করতে দেবে, তাই একটি CPU কোরের প্রায় 10%।
ডিস্কের ব্যবহার সীমিত করুন
ডিস্ক-সম্পর্কিত সংস্থানগুলিকে সীমিত করতে, আপনাকে প্রথমে আপনার পাত্রে একটি রুট ডিস্ক ডিভাইস যোগ করতে হবে। এটি ইতিমধ্যেই ডিফল্টরূপে বিদ্যমান, ডিফল্ট LXD প্রোফাইল থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। কিন্তু আপনি এটি না করা পর্যন্ত প্রতি কন্টেইনার ভিত্তিতে এর সেটিংস পরিবর্তন করতে পারবেন না।
lxc config device add container_name root disk pool=default path=/
আপনি যদি আপনার পুলের নাম অন্যভাবে রাখেন, তাহলে আপনার স্টোরেজ পুলের নাম দিয়ে "ডিফল্ট" প্রতিস্থাপন করুন। আপনি যদি এটির নাম ভুলে গিয়ে থাকেন, তাহলে আপনি এটির সাথে প্রদর্শন করতে পারেন:
lxc storage list
ডিস্কের স্থান সীমিত করতে একটি LXD উদাহরণ ব্যবহার করতে পারে:
lxc config device set container_name root size 7GB
দুর্ভাগ্যবশত, I/O সীমা ("গতি" এবং IOPS পড়া/লেখা) এই মুহূর্তে কাজ করে না৷
নেটওয়ার্ক ব্যবহার সীমিত করুন
ডিস্কের মতো, আপনাকে প্রথমে একটি ভার্চুয়াল ইথারনেট ডিভাইস যোগ করতে হবে যা আপনি কনফিগার করতে পারেন। আপনার নেটওয়ার্ক সেতুর নাম খুঁজুন যা আপনার LXD দৃষ্টান্তগুলিকে বাইরের বিশ্বের সাথে সংযুক্ত করে৷
৷lxc network list
প্রয়োজনে "lxdbr0" প্রতিস্থাপন করুন (যদি আপনার ক্ষেত্রে সেতুটির নাম অন্যভাবে করা হয়)। আপনি যদি ব্রিজড (ডিফল্ট উত্তর) হিসাবে নেটওয়ার্কের ধরণটি বেছে না নেন তবে "lxd init" কনফিগারেশন ধাপে আপনাকে আপনার পছন্দ প্রতিফলিত করতে নীচের কমান্ডটি মানিয়ে নিতে হতে পারে। উদাহরণস্বরূপ, আপনি আপনার LXD নেটওয়ার্কের জন্য যা ব্যবহার করেন তার সাথে আপনাকে "nictype" প্রতিস্থাপন করতে হতে পারে।
lxc config device add container_name eth0 nic name=eth0 nictype=bridged parent=lxdbr0
অবশেষে, নেটওয়ার্ক প্রবেশ (ডাউনলোড) এবং/অথবা বহির্গমন (আপলোড) এর সীমা সেট করুন।
lxc config device set container_name eth0 limits.ingress 1Mbit
1Mbit হল এক মেগাবিট (মেগাবাইট নয়)। একটি বাইটে 8 বিট থাকে, যার মানে এটি ডাউনলোডগুলি প্রতি সেকেন্ডে প্রায় 1/8=0.125Mbits, মোটামুটি 120 কিলোবাইটে সীমাবদ্ধ করবে। সুতরাং, আপনি যদি এটি 1MB/s (মেগাবাইট) দিয়ে ডাউনলোড করতে চান, তাহলে 8 দ্বারা গুণ করুন এবং প্রবেশের সীমা 8Mbit এ সেট করুন৷
বের হওয়ার জন্য, ব্যবহার করুন:
lxc config device set container_name eth0 limits.egress 1Mbit
উপসংহার
এটি সম্পদের সীমা সম্পর্কিত সর্বাধিক ব্যবহৃত বৈশিষ্ট্যগুলিকে কভার করে। কিন্তু আরো অনেক ভেরিয়েবল আছে যা আপনি lxc config device set
দিয়ে সেট করতে পারেন এবং lxc config set
. আপনি LXD-এর GitHub পৃষ্ঠায় এই সামঞ্জস্যযোগ্য কন্টেইনার বৈশিষ্ট্যগুলি সম্পর্কে আরও পড়তে পারেন৷