কম্পিউটার টিউটোরিয়াল

LXD কন্টেইনার কত রিসোর্স ব্যবহার করবে সেটি সীমাবদ্ধ করুন

একটি পূর্ববর্তী আর্টিকেলে, আপনি LXD কী এবং এর সাথে কীভাবে শুরু করবেন সেটি এক্সপ্লোর করতে পারেন, যদি আপনি প্ল্যাটফর্মটি সাথে অনভিজ্ঞ হন।

বেশিরভাগ কেসে, আপনি একই সিস্টেমে একাধিক কন্টেইনার ব্যবহার করবেন একটি বড় পুরো কে ছোট কম্পোনেন্টে ভাগ করার জন্য। প্রতিটি কম্পোনেন্ট কত রিসোর্স ব্যবহার করতে পারে সেটি সীমাবদ্ধ করা অর্থপূর্ণ। কিন্তু কেন? কারণ কারণগুলো অনলিমিটেড, যেন কন্টেইনার ব্যবহার করার সিনেরিওগুলো।

LXD কন্টেইনার ওপর লিমিট কখন উপকারী হতে পারে

  • একটি সার্ভিস প্রদান করা এবং প্রতিটি কাস্টমারের জন্য একটি LXD ইনস্ট্যান্স দেয়া। উদাহরণস্বরূপ, এটি একটি বড় সার্ভার হতে পারে, এবং আপনি প্রতিটি কাস্টমার ওয়েবসাইটকে একটি পৃথক কন্টেইনারে হোস্ট করেন। একটি ওয়েবসাইটে হঠাৎ ট্রাফিক বর্শ হলে, এটি অন্য ইনস্ট্যান্সগুলো স্লো ডাউন করতে পারে। লিমিট থাকলে, শুধু একটি কন্টেইনার স্লো হবে, বাকিগুলো স্বাভাবিকভাবে অপারেট হবে।
  • একই ধরনের সিনেরিওতে, আপনি সহজে ভিন্ন সার্ভিস প্ল্যান বেচতে পারেন। একটি কাস্টমার X পরিমাণ রিসোর্সের জন্য পে করতে পারে, আরেকটি Y পরিমাণের জন্য। এবং আপনি কয়েকটি সিম্পল কমান্ড দিয়ে এটি সহজে অ্যাডজাস্ট করতে পারেন।
  • আপনি ডিনায়াল অফ সার্ভিস (DoS) আটকের সিম্পল ফর্মের বিরুদ্ধে নিজেকে প্রোটেক্ট করতে পারেন। যখন একটি কন্টেইনার বমবার্ড করা হয়, এটি এর রিসোর্স ইউজ লিমিটে পৌঁছাবে। অন্য কন্টেইনারগুলো প্রভাবিত হবে না।
  • আপনার দুটি কন্টেইনার রয়েছে যারা প্রত্যেক ১০০% CPU টাইম ব্যবহার করবে। কিন্তু, আপনি চান একটিকে অন্যটির চেয়ে দ্রুত ফিনিশ করানো। উদাহরণস্বরূপ, একটি কাল একটি প্রজেক্টের জন্য ভিডিও রেন্ডার করতে হতে পারে যা আপনাকে আগামীকাল দরকার। আপনি প্রথমটিকে ৯০% CPU টাইম এবং দ্বিতীয়টিকে ১০% দিতে পারেন।

অবশ্য, আপনার নিজস্ব কারণও থাকতে পারে। এবং আপনি যদি পুরো সিস্টেমে শুধু একটি কন্টেইনার ব্যবহার করেন, তবে আপনাকে এই প্রয়োজন নাও হতে পারে। কিন্তু আপনি যদি একাধিক কন্টেইনার ব্যবহার করেন, তবে আপনি почти সবসময় কিছু লিমিট সেট করার প্রয়োজন পড়বেন। কারণ, একটি LXD ইনস্ট্যান্সে আক্রমণ, একটি বাগ, বা অন্য কোনো মিসবেহেভিয়ার পুরো সিস্টেমকে প্রভাবিত করতে পারে এবং স্লো ডাউন করতে পারে। আপনার কন্টেইনার যত বেশি, derart একটি সিনেরিওর সম্ভাবনা তত বেশি।

LXD কন্টেইনার ওপর রিসোর্স লিমিট সেট করা

ডিস্ক অপারেশন সম্পর্কিত রিসোর্স কন্ট্রোলের জন্য ZFS ইনস্টলড থাকতে হবে। আপনি যদি এখানে টিউটোরিয়াল ফলো করেছেন, তবে এটি ইতিমধ্যে ইনস্টলড। অন্যথায়, টিউটোরিয়াল অনুযায়ী ZFS ইউটিলিটিজ ইনস্টল করুন এবং তারপর নিচের কমান্ডটি রেরান করুন। স্টোরেজ ব্যাকএন্ড chiesto হলে 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

এটি কন্টেইনারকে প্রতি ১০০ মিলিসেকেন্ডে শুধু ১০ মিলিসেকেন্ড CPU টাইম ব্যবহার করতে দেবে, মানে প্রায় ১০% একটি CPU কোর।

ডিস্ক ব্যবহার সীমাবদ্ধ করুন

ডিস্ক-সম্পর্কিত রিসোর্স লিমিট করতে, আপনাকে প্রথমে আপনার কন্টেইনারে একটি রুট ডিস্ক ডিভাইস যোগ করতে হবে। এটি ডিফল্টরূপে ইতিমধ্যে রয়েছে, ডিফল্ট LXD প্রোফাইল থেকে ইনহেরিটেড। কিন্তু আপনি এর সেটিংস প্রতি কন্টেইনার বেসিসে পরিবর্তন করতে পারবেন না যতক্ষণ না আপনি এটি করবেন।

lxc config device add container_name root disk pool=default path=/

আপনি আপনার পুলকে ভিন্ন নাম দিয়ে থাকলে, "default"-কে আপনার স্টোরেজ পুলের নাম দিয়ে প্রতিস্থাপন করুন। আপনি যদি এর নাম ভুলে গেছেন, তবে এট이로 দেখতে পারেন:

lxc storage list

একটি LXD ইনস্ট্যান্স কত ডিস্ক স্পেস ব্যবহার করতে পারে সেটি লিমিট করতে:

lxc config device set container_name root size 7GB

দুর্ভাগ্যবশত, I/O লিমিট (রিড/রাইট "স্পীড" এবং IOPS) এই মুহূর্তে কাজ করে না।

নেটওয়ার্ক ব্যবহার সীমাবদ্ধ করুন

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

lxc network list

"lxdbr0"-কে প্রয়োজন হলে প্রতিস্থাপন করুন (যদি আপনার কেসে ব্রিজ ভিন্ন নামে থাকে)। আপনি যদি নেটওয়ার্ক টাইপ ব্রিজড (ডিফল্ট আন্সার) চয়ন না করে থাকেন, "lxd init" কনফিগারেশন স্টেপসে, তবে আপনাকে নিচের কমান্ডটি আপনার চয়েস রিফলেক্ট করতে অ্যাডাপ্ট করতে হতে পারে। উদাহরণস্বরূপ, আপনাকে "nictype"-ও প্রতিস্থাপন করতে হতে পারে, আপনি আপনার LXD নেটওয়ার্কের জন্য যা ব্যবহার করেছেন সেটি দিয়ে।

lxc config device add container_name eth0 nic name=eth0 nictype=bridged parent=lxdbr0

শেষে, নেটওয়ার্ক ইনগ্রেস (ডাউনলোড) এবং/অথবা এগ্রেস (আপলোড)-এ লিমিট সেট করুন।

lxc config device set container_name eth0 limits.ingress 1Mbit

১Mbit হচ্ছে এক মেগাবিট (নয় মেগাবাইট)। এক বাইটে ৮ বিট থাকে, যার মানে এটি ডাউনলোডকে প্রায় ১/৮=০.১২৫ Mbit प्रति সেকেন্ডে লিমিট করবে, মোটামুটি ১২০ কিলোবাইট। সুতরাং, আপনি যদি ১MB/s (মেগাবাইট) দিয়ে ডাউনলোড করতে চান, ৮ দিয়ে গুন করুন, এবং ইনগ্রেস লিমিট ৮Mbit সেট করুন।

এগ্রেসের জন্য, ব্যবহার করুন:

lxc config device set container_name eth0 limits.egress 1Mbit

উপসংহার

এটি রিসোর্স লিমিটের সাথে সম্পর্কিত সবচেয়ে কমনভাবে ব্যবহৃত প্রপার্টিগুলো কভার করে। কিন্তু lxc config device set এবং lxc config set দিয়ে আপনি আরও অনেক ভেরিয়েবল সেট করতে পারেন। আপনি LXD-এর GitHub পেজে এই অ্যাডজাস্টেবল কন্টেইনার প্রপার্টিগুলো সম্পর্কে আরও পড়তে পারেন।

  1. Android SQLite-এ LIMIT ক্লজ ব্যবহার পদ্ধতি

  2. অ্যান্ড্রয়েডে InputFilter ব্যবহার করে EditText-এ ক্যারেক্টার সীমাবদ্ধ করার পদ্ধতি

  3. ফায়ারফক্সে মাল্টি-অ্যাকাউন্ট কন্টেইনার ব্যবহার করার পদ্ধতি

  4. OpenVPN দিয়ে সুরক্ষিতভাবে প্রাইভেট AWS রিসোর্স অ্যাক্সেস করুন