Skip to content

Swarm Service Updates & Rollbacks (সার্ভিস আপডেট এবং রোলব্যাক)

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

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

রোলিং আপডেট মানে হলো সব কন্টেইনার একসাথে আপডেট না করে একে একে বা গ্রুপ করে আপডেট করা।

bash
docker service update --image nginx:latest web

আপডেট কনফিগারেশন (Update Configuration)

আপনি চাইলে আপনার পছন্দমতো আপডেটের নিয়ম ঠিক করে দিতে পারেন:

  • Parallelism: একসাথে সর্বোচ্চ কয়টি কন্টেইনার আপডেট হবে।
  • Delay: এক ব্যাচ আপডেট হওয়ার পর অন্য ব্যাচের জন্য কতক্ষণ অপেক্ষা করবে।
  • Failure Action: আপডেট ফেইল করলে কি হবে (pause বা rollback)।
bash
docker service create \
  --name web \
  --replicas 6 \
  --update-parallelism 2 \
  --update-delay 10s \
  --update-failure-action rollback \
  nginx:1.20

২. ফেলওভার এবং রোলব্যাক (Rollback on Failure)

যদি আপডেটের সময় কোনো কন্টেইনার ঠিকমতো স্টার্ট না হয় বা হেলথ চেক ফেইল করে, তবে সোয়ার্ম স্বয়ংক্রিয়ভাবে আপডেটটি থামিয়ে দিতে পারে বা আগের ভার্সনে ফিরে যেতে পারে।

ম্যানুয়াল রোলব্যাক (Manual Rollback)

যদি আপনি আপডেট করার পর দেখেন কোনো সমস্যা হচ্ছে, তবে ম্যানুয়ালি রোলব্যাক করতে পারেন:

bash
docker service rollback web

৩. হেলথ চেক (Health Checks during updates)

আপডেট সফল হয়েছে কিনা তা বোঝার জন্য সোয়ার্ম হেলথ চেক ব্যবহার করে।

  • যদি নতুন কন্টেইনারটি হেলথ চেকে পাশ না করে, তবে সোয়ার্ম সেটিকে 'Unhealthy' হিসেবে মার্ক করে এবং পরবর্তী গ্রুপ আপডেট করা বন্ধ করে দেয়।
bash
docker service update \
  --health-cmd "curl -f http://localhost/ || exit 1" \
  --health-interval 5s \
  web

৪. গুরুত্বপূর্ণ টার্মস

টার্মব্যাখ্যা
Parallelismএকসাথে কতগুলো টাস্ক (Task) আপডেট হবে।
Delayআপডেটের মধ্যবর্তী বিরতি।
Monitorএকটি টাস্ক আপডেট হওয়ার পর কতক্ষণ অবজার্ভ করবে (default 5s)।
Max Failure Ratioকত শতাংশ টাস্ক ফেইল করলে আপডেটটি ফেইল হিসেবে গণ্য হবে।

৫. বেস্ট প্র্যাকটিস

  • Small Batches: বড় ক্লাস্টারের ক্ষেত্রে parallelism কম রাখা ভালো।
  • Monitor Period: আপডেট হওয়ার পর যথেষ্ট সময় (delay) দিন যাতে অ্যাপ্লিকেশনের স্ট্যাবিলিটি বোঝা যায়।
  • Use Health Checks: সবসময় হেলথ চেক ব্যবহার করুন যাতে খারাপ ইমেজ ডিপ্লয় না হয়।

Released under the MIT License.