আমরা কয়েক সপ্তাহ আগে CentOS 7.2-তে যা শুরু করেছিলাম, সেটি আরেকটু বিস্তার করব। সে গাইডে আমরা শিখেছিলাম ডকার ১.১২-এ বিল্ট-ইন ক্লাস্টারিং ও অর্কেস্ট্রেশন ফাংশন্যালিটি কীভাবে ইনিশিয়েট ও শুরু করতে হয়। কিন্তু সেখানে শুধু আমাদের ম্যানেজার নোড ছিল, অন্য কোনো ওয়ার্কার নেই। আজ আমরা এটি প্রসারিত করব।
আমি দেখাবো কীভাবে নন-সিমেট্রিক্যাল নোড স্বার্মে যোগ করতে হয়, অর্থাৎ একটি Fedora 24 আমাদের CentOS বক্সের পাশে থাকবে, এবং উভয়ই ক্লাস্টারে অংশ নেবে, সাথে লোড ব্যালেন্সিং এবং অন্যান্য ফিচারসহ। অবশ্যই এটি ত্রিবিৱাল নয়, কিছু সমস্যা হবে, তাই এটি khá আকর্ষণীয় হবে। চলুন।
প্র سيما কু শर्तসমূহ
স্বার্মে অতিরিক্ত নোড যোগ করার আগে কিছু কাজ করতে হবে। প্রথমে, আদর্শভাবে সব নোডে একই ভার্সনের ডকার থাকা উচিত, এবং তা কমপক্ষে ১.১২ হতে হবে নেটিভ অর্কেস্ট্রেশন সাপোর্টের জন্য। CentOS-এর মতো Fedora-র রেপোতে লেটেস্ট ভার্সন নেই, তাই আপনাকে ম্যানুয়ালি সঠিক সফ্টওয়্যার ভার্সন অ্যাড ও ইনস্টল করতে হবে, ম্যানুয়ালি বা ডকার রিপোজিটরি ব্যবহার করে, এবং তারপর ডিপেনডেন্সি কনফ্লিক্ট ফিক্স করতে হবে। আমি CentOS-এ কীভাবে করতে হয় সেটি দেখিয়েছিলাম, এক্সারসাইজটি একই।
বigkeiten, আপনার সব নোড একে অপরের সাথে যোগাযোগ করতে পারতে হবে। রাউটিং এবং ফায়ারওয়াল নিয়ম থাকতে হবে যাতে ম্যানেজার এবং ওয়ার্কাররা একে অপরের সাথে কথা বলতে পারে। অন্যথায়, আপনি নোডها স্বার্মে জয়েন করতে পারবেন না। সমস্যা এড়ানোর সহজ উপায় হলো مؤقتভাবে ফায়ারওয়াল রুল ফ্লাশ করা (`iptables -F`), কিন্তু এটি আপনার নিরাপত্তা হ্রাস করতে পারে। নিশ্চিত হোন আপনি কী করছেন বুঝছেন, এবং আপনার নোড ও পোর্টের জন্য সঠিক নিয়ম তৈরি করুন।
Error response from daemon: Timeout was reached before node was joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.
আপনার হোস্টগুলিতে একই ডকার ইমেজ থাকতে হবে। পূর্বের টিউটোরিয়ালে আমরা একটি Apache ইমেজ তৈরি করেছিলাম, এবং আপনাকে ওয়ার্কার নোডগুলিতে একই কাজ করতে হবে, অথবা তৈরি করা ইমেজগুলো ডিস্ট্রিবিউট করতে হবে। না করলে এরর হবে। ডকার সেটআপে হেল্প দরকার হলে আমার ইন্ট্রো গাইড এবং নেটওয়ার্কিং টিউটোরিয়াল পড়ুন।
7vwdxioopmmfp3amlm0ulimcu \_ websky.11 my-apache2:latest localhost.localdomain Shutdown Rejected 7 minutes ago "No such image: my-apache2:lat&"
শুরু করা যাক
আমাদের CentOS বক্স চলছে এবং সফলভাবে কন্টেইনার স্পন করছে। আপনি হোস্ট পোর্ট ব্যবহার করে সার্ভিসের সাথে সংযোগ করতে পারছেন, এবং সব কিছুর অদ্ভুত দেখাচ্ছে। এই মুহূর্তে আপনার স্বার্মে শুধু ম্যানেজার আছে।
ওয়ার্কার জয়েন করুন
নতুন নোড যোগ করতে `join` কমান্ড ব্যবহার করতে হবে। কিন্তু আগে জানতে হবে কোন টোকেন, IP ঠিকানা এবং পোর্ট ওয়ার্কার নোডে দিতে হবে যাতে সেগুলো স্বার্ম ম্যানেজারের সাথে সঠিকভাবে অথেন্টিকেট করতে পারে। তারপর এক্সিকিউট করুন (Fedora-এ):
[root@localhost ~]# docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \ 192.168.2.100:2377
ফায়ারওয়াল এবং রাউটিং রুল ফিক্স না করলে টাইমআউট এরর হবে। যদি ইতিমধ্যে স্বার্মে জয়েন করা থাকে, জয়েন কমান্ড রিপিট করলে আলাদা শোরগোল হবে:
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
সন্দেহ হলে স্বার্ম ছেড়ে আবার চেষ্টা করুন:
[root@localhost ~]# docker swarm leave Node left the swarm. docker swarm join --token SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377 This node joined a swarm as a worker.
ওয়ার্কার নোডে `docker info` দিয়ে স্ট্যাটাস চেক করুন:
Swarm: active NodeID: 2i27v3ce9qs2aq33nofaon20k Is Manager: false Node Address: 192.168.2.103
ম্যানেজারে একইভাবে:
Swarm: active NodeID: cneayene32jsb0t2inwfg5t5q Is Manager: true ClusterID: 8degfhtsi7xxucvi6dxvlx1n4 Managers: 1 Nodes: 3 Orchestration: Task History Retention Limit: 5 Raft: Snapshot Interval: 10000 Heartbeat Tick: 1 Election Tick: 3 Dispatcher: Heartbeat Period: 5 seconds CA Configuration: Expiry Duration: 3 months Node Address: 192.168.2.100
সার্ভিস তৈরি বা স্কেল করুন
এখন দেখতে হবে ডকার কীভাবে কন্টেইনারها নোডগুলোর মধ্যে বিতরণ করে। আমার টেস্টে খুব হালকা লোডের আন্ডারে একটি না খুব জটিল ব্যালেন্সিং অ্যালগরিদম দেখলাম। একদুইবার ডকার রানিং সার্ভিস নতুন ওয়ার্কারদের কাছে রি-ডিস্ট্রিবিউট করল না, এমনকি স্কেল ও আপডেট করার পরেও। একবার_this একটি নতুন সার্ভিস সম্পূর্ণ নতুন ওয়ার্কার নোডে তৈরি করল। হয়তো সেটিই সেরা চয়েস ছিল।
কিছুক্ষণ পর, বিদ্যমান সার্ভিসের কন্টেইনারها দুটি নোডের মধ্যে কিছু রি-ডিস্ট্রিবিউশন হলো, কিন্তু সময় লাগলো। নতুন সার্ভিসগুলো ভালো কাজ করলো। এটি প্রাথমিক পর্যবেক্ষণ মাত্র, তাই এগুনো বেশি বলা যাবে না। ফিলহাল, এটি এক্সপ্লোর ও টিউনিং শুরু করার ভালো স্টার্টিং পয়েন্ট।
উপসংহার
ডকার একটি সুন্দর প্রাণী, এবং এটি শুধু বড়, জটিল, শক্তিশালী, এবং অবশ্যই আরও সুন্দর হবে। এন্টারপ্রাইজ দ্বারা নিগল लिये যাওয়া কেবল وقتের কথা। নেটিভ অর্কেস্ট্রেশনের কথা বললে, স্বার্ম মোড khá ভালো কাজ করে, কিন্তু এর অ্যালগরিদম ও স্কেলেবিলিটির পুরো শক্তি ব্যবহার করতে শুধু কয়েকটি কন্টেইনার काफी নয়।
আমার টিউটোরিয়ালে দেখানো হয়েছে কীভাবে একটি CentOS বক্স দ্বারা চালিত ক্লাস্টারে একটি Fedora নোড যোগ করতে হয়, এবং দুটি পাশাপাশি ভালো কাজ করলো। লোড ব্যালেন্সিং নিয়ে কিছু প্রশ্ন আছে, কিন্তু এটি ভবিষ্যতে এক্সপ্লোর করব। সার্বিকভাবে, আশা করি এটি একটি উপযোগী পাঠ ছিল। আমরা কিছু প্রেরিকুইজিট এবং সাধারণ সমস্যা নিপटেছি যা স্বার্ম সেটআপ করার সময় সেটি ঘটতে পারে, কন্টেইনারগুলো চালিয়েছি, এবং সংক্ষেপে সার্ভিস স্কেল ও ডিস্ট্রিবিউশন নিয়ে আলোচনা করলাম। এবং মনে রাখুন, 'এটি শুধু শুরু।
চিয়ার্স।