Skip to content

Swarm Service Deployment (সোয়ার্ম সার্ভিস ডিপ্লয়মেন্ট)

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

১. এডভান্সড সার্ভিস ডিপ্লয়মেন্ট কমান্ড

নিচের কমান্ডটি একটি প্রফেশনাল সার্ভিস ডিপ্লয়মেন্টের উদাহরণ:

bash
docker service create \
  --name web-app \
  --replicas 3 \
  --publish 8080:80 \
  --network overlay-net \
  --update-delay 10s \
  --update-parallelism 2 \
  --restart-condition on-failure \
  nginx:alpine

কমান্ডের ব্যাখ্যা:

  • --replicas 3: ক্লাস্টারে সবসময় ৩টি কন্টেইনার সচল থাকবে।
  • --publish 8080:80: ইনগ্রেস রাউটিং মেশ ব্যবহার করে পোর্ট ম্যাপিং।
  • --network overlay-net: সার্ভিসটিকে একটি 'Overlay' নেটওয়ার্কের সাথে যুক্ত করা যাতে অন্য সার্ভিসের সাথে যোগাযোগ করতে পারে।
  • --update-delay 10s: আপডেটের সময় একটি কন্টেইনার গ্রুপ আপডেট হওয়ার পর ১০ সেকেন্ড বিরতি নেওয়া।
  • --update-parallelism 2: একসাথে সর্বোচ্চ ২টি কন্টেইনার আপডেট করা।
  • --restart-condition on-failure: যদি কোনো কারণে কন্টেইনার ক্র্যাশ করে, তবে সেটি রিস্টার্ট হবে।

২. রোলিং আপডেট (Rolling Updates)

সোয়ার্ম ডিফল্টভাবে রোলিং আপডেট সাপোর্ট করে। যখন আপনি কোনো সার্ভিসের ইমেজ পরিবর্তন করবেন:

bash
docker service update --image nginx:1.21-alpine web-app

সোয়ার্ম আপনার দেওয়া --update-parallelism এবং --update-delay অনুযায়ী আগের কন্টেইনারগুলো বন্ধ করে নতুনগুলো চালু করবে। এতে জিরো-ডাউনটাইম (Zero-downtime) নিশ্চিত হয়।


৩. ওভারলে নেটওয়ার্ক (Overlay Network)

ডাবল এস সার্ভিসের মধ্যে ইন্টারনাল কমিউনিকেশনের জন্য ওভারলে নেটওয়ার্ক দরকার। ১. প্রথমে নেটওয়ার্ক তৈরি করুন:

bash
docker network create --driver overlay my-overlay

২. সার্ভিস তৈরির সময় এটি ব্যবহার করুন:

bash
docker service create --name db --network my-overlay mariadb

৪. রিসোর্স লিমিট (Resource Limits)

প্রোডাকশনে কোনো একটি সার্ভিস যাতে পুরো ক্লাস্টারের রিসোর্স শেষ না করে ফেলে, তার জন্য লিমিট দেওয়া জরুরি:

bash
docker service create \
  --name heavy-task \
  --limit-cpu 0.5 \
  --limit-memory 512m \
  heavy-image

৫. কেন এই কনফিগারেশনগুলো গুরুত্বপূর্ণ?

  • Zero Downtime: রোলিং আপডেটের মাধ্যমে অ্যাপ্লিকেশন সবসময় সচল থাকে।
  • Security: ওভারলে নেটওয়ার্কের মাধ্যমে ট্রাফিক আইসোলেশন নিশ্চিত হয়।
  • Stability: রিসোর্স লিমিট এবং রিস্টার্ট পলিসি ক্লাস্টারকে স্ট্যাবল রাখে।

Released under the MIT License.