উষ্ণ হচ্ছে. টাইম স্লাইডারের নিচে কয়েকদিনের মধ্যে, আমি Vagrant প্রদর্শন করেছি, একটি ভার্চুয়ালাইজেশন সমাধান যা অন্যদের কাছে একটি সুন্দর, পরিপাটি মোড়ক হয়ে বড় লক্ষ্য করে, ভার্চুয়ালবক্স, কেভিএম এবং বন্ধুদের মতো আরও জটিল সফ্টওয়্যার। তদুপরি, এটি ডকার কন্টেইনার সমর্থন এবং ক্লাউড সার্ভার পরিবেশ সরবরাহ করে সিনিয়র লীগে খেলে।
এই মডেলটি সম্প্রসারণ করে, আমরা একটি সামান্য ভিন্ন ব্যবহারকেস নিয়ে আলোচনা করব, খুব মেঘলা। CoreOS, যা আমরা পূর্ববর্তী অনুশীলনে ব্যবহার করেছি, এটি আরেকটি প্লেয়ার যেটি ক্লাউড ম্যানিয়াকে ক্যাশ ইন করার চেষ্টা করে এবং এটি কিছু খুব ঝরঝরে ক্লাস্টার বৈশিষ্ট্য এবং অটোমেশন অফার করে। আজ, আমরা শিখব কিভাবে একটি ক্লাস্টার নিয়ে আসা যায় এবং নেটওয়ার্কিং অংশ নিয়ে আলোচনা করা যায়, যা কিছুটা অবহেলিত, এমনকি মূল ডকুমেন্টেশনেও খুব ভালোভাবে ব্যাখ্যা করা হয়নি। তাই আমাকে অনুসরণ করুন.
আবিষ্কার টোকেন সেটআপ
গতবারের বিপরীতে, যখন আমি উদ্দেশ্যপ্রণোদিতভাবে Powershell-এর মাধ্যমে Windows-এ Vagrant চেষ্টা করেছিলাম, শুধুমাত্র একটি নমুনা দেওয়ার জন্য যে এটি বিভিন্ন উপায়ে করা যেতে পারে, আমাদের বর্তমান অনুশীলন লিনাক্সে সংঘটিত হবে, Xubuntu Vivid আরও সুনির্দিষ্ট হতে।
অফিসিয়াল গাইড অনুসরণ করে, ভ্যাগ্রান্টের জন্য CoreOS সেট আপ করা খুব কঠিন নয়, তবে এটি এমন তুচ্ছও নয় যে অনলাইন রেফারেন্সটি আপনার কাছে থাকবে। শুরু করার জন্য সুস্পষ্ট অধৈর্যতা আছে, এবং এটি আসে।
আপনি সংগ্রহস্থলটি ক্লোন করার পরে, আপনার হাতে বেশ কয়েকটি ফাইল থাকবে, যা আপনাকে শুরু করতে এবং ভ্যাগ্রান্ট শুরু করতে সক্ষম হতে কিছুটা সম্পাদনা করতে হবে। প্রথমে আপনাকে যা করতে হবে তা হল user-data.sample ফাইলটি সম্পাদনা করুন এবং এটির নাম পরিবর্তন করে user-data করুন। সবচেয়ে উল্লেখযোগ্যভাবে, টোকেন অংশ:
#ক্লাউড-কনফিগ
কোরিওস:
ইত্যাদি
# থেকে প্রতিটি অনন্য ক্লাস্টারের জন্য একটি নতুন টোকেন তৈরি করুন
https://discovery.etcd.io/new?size=3
#?size=X দিয়ে আপনার ক্লাস্টারের প্রাথমিক আকার নির্দিষ্ট করুন
# সতর্কতা:প্রতিবার আপনি 'ভ্রমণ ধ্বংস' প্রতিস্থাপন করুন
আবিষ্কার:https://discovery.etcd.io/
মূলত, CoreOS অনন্য শনাক্তকারী ব্যবহার করে - যাকে টোকেন বলা হয় - চলমান দৃষ্টান্তগুলি একে অপরকে সনাক্ত করতে সহায়তা করে। একই টোকেন সহ সমস্ত হোস্ট একই ঝাঁকের অন্তর্গত, তাই তারা etcd শেয়ার্ড কনফিগারেশন এবং আবিষ্কার পরিষেবা ব্যবহার করে কেন্দ্রীভূত পদ্ধতিতে নিয়ন্ত্রণ করা যেতে পারে।
https://discovery.etcd.io/new?size=
উপরের URL-এ গিয়ে এবং পছন্দসই ক্লাস্টার আকার নির্দিষ্ট করে আপনি নিজের ব্যবহার করতে পারেন, বা একটি নতুন তৈরি করতে পারেন৷ ডিফল্ট কনফিগারেশন হল তিনটি হোস্ট। জেনারেট করা টোকেনটি লিখে কনফিগারেশন ফাইলে যোগ করুন, যেমন:
https://discovery.etcd.io/21e4099c23b52a8403640c2d48cdca6f
আমরা পরে দেখব কেন এটি গুরুত্বপূর্ণ।
ক্লাস্টার সেটআপ
দ্বিতীয় অংশটি হ'ল ভ্যাগ্রান্ট শুরু হলে CoreOS-এর কতগুলি উদাহরণ আমরা চালাতে চাই তা নির্ধারণ করা। এটি সামগ্রিকভাবে একটি সাধারণ কনফিগারেশন। পরিবর্তনটি config.rb.sample ফাইলে যোগ করতে হবে, ক্লোন করা গিট ডিরেক্টরির ভিতরে, এবং config.rb নামকরণ করতে হবে। আমরা চারটি উদাহরণ দিয়ে চেষ্টা করব, শুধুমাত্র অনন্য এবং বিশেষ হতে।
# Vagrant দ্বারা তৈরি CoreOS ক্লাস্টারের আকার
$num_instances=X
ক্লাস্টার শুরু করুন
এখন, আপনি Vagrant চালাতে পারেন। আপনি যদি অনলাইন রিপোজিটরি ক্লোন করে থাকেন, তাহলে বর্তমান ডিরেক্টরিতে আপনার কাছে ইতিমধ্যেই একটি ডিফল্ট ভ্যাগ্রান্ট কনফিগারেশন ফাইল থাকবে, তাই আপনি যদি vagrant init চেষ্টা করেন, তাহলে আপনার ব্যর্থ হওয়া উচিত:
vagrant init
এই ডিরেক্টরিতে `Vagrantfile` ইতিমধ্যেই বিদ্যমান। আগে এটা সরান
চলমান `vagrant init`।
আপনার যদি ভার্চুয়ালবক্স বা অন্য প্রাসঙ্গিক ভার্চুয়ালাইজেশন সফ্টওয়্যার ইনস্টল না থাকে, আপনি যখন প্রোগ্রামটি শুরু করার চেষ্টা করবেন তখন আপনি আরেকটি ত্রুটি পাবেন। নিশ্চিত করুন যে আপনি আগে থেকেই এই ক্ষুদ্র নিগলগুলি সমাধান করেছেন।
vagrant আপ
প্রদানকারী 'ভার্চুয়ালবক্স' যেটিকে মেশিনটি ব্যাক করার জন্য অনুরোধ করা হয়েছিল৷
'core-01' রিপোর্ট করছে যে এটি এই সিস্টেমে ব্যবহারযোগ্য নয়। দ্য
কারণ নীচে দেখানো হয়েছে:
Vagrant ভার্চুয়ালবক্স সনাক্ত করতে পারেনি! ভার্চুয়ালবক্স সঠিকভাবে ইনস্টল করা আছে তা নিশ্চিত করুন। Vagrant 'VBoxManage' বাইনারি ব্যবহার করে যা VirtualBox-এর সাথে পাঠানো হয় এবং এটিকে PATH-এ উপলব্ধ করা প্রয়োজন৷ ভার্চুয়ালবক্স ইনস্টল করা থাকলে, অনুগ্রহ করে `VBoxManage` বাইনারি খুঁজুন এবং এটি PATH পরিবেশগত ভেরিয়েবলে যোগ করুন।
আপনি যদি এই অংশটি সফলভাবে সম্পন্ন করে থাকেন, তবে Vagrant কে একে একে CoreOS দৃষ্টান্ত তৈরি করা উচিত। এতে কিছু সময় লাগতে পারে, এবং বৃহত্তর ক্লাস্টারগুলিকে মিটমাট করার জন্য আপনার ভাল নেটওয়ার্ক ব্যান্ডউইথ এবং প্রচুর মেমরির প্রয়োজন হবে।
vagrant আপ
'ভার্চুয়ালবক্স' প্রদানকারীর সাথে মেশিন 'কোর-01' নিয়ে আসা হচ্ছে...
'ভার্চুয়ালবক্স' প্রদানকারীর সাথে মেশিন 'core-02' নিয়ে আসা হচ্ছে...
'ভার্চুয়ালবক্স' প্রদানকারীর সাথে মেশিন 'core-03' নিয়ে আসা হচ্ছে...
'ভার্চুয়ালবক্স' প্রদানকারীর সাথে মেশিন 'core-04' নিয়ে আসা হচ্ছে...
==> core-01:বক্স 'coreos-alpha' পাওয়া যায়নি। খোঁজার এবং ইনস্টল করার চেষ্টা করা হচ্ছে...
core-01:বক্স প্রদানকারী:ভার্চুয়ালবক্স
core-01:বক্স সংস্করণ:>=308.0.1
==> core-04:বেস বক্স 'coreos-alpha' আমদানি করা হচ্ছে...
==> core-04:NAT নেটওয়ার্কিং-এর জন্য MAC ঠিকানার মিল...
==> core-04:'coreos-alpha' বক্স আপ টু ডেট কিনা তা পরীক্ষা করা হচ্ছে...
==> core-04:VM-এর নাম সেট করা হচ্ছে:coreos-vagrant_core-04_1431799934824_55775
==> core-04:22 => 2222 এর জন্য স্থির পোর্ট সংঘর্ষ। এখন 2202 পোর্টে।
==> core-04:পূর্বে সেট করা যেকোনো নেটওয়ার্ক ইন্টারফেস সাফ করা হচ্ছে...
==> core-04:কনফিগারেশনের উপর ভিত্তি করে নেটওয়ার্ক ইন্টারফেস প্রস্তুত করা হচ্ছে...
core-04:অ্যাডাপ্টার 1:nat
core-04:অ্যাডাপ্টার 2:হোস্টনলি
==> core-04:ফরোয়ার্ডিং পোর্ট...
core-04:22 => 2202 (অ্যাডাপ্টার 1)
==> কোর-০৪:'প্রি-বুট' ভিএম কাস্টমাইজেশন চালানো হচ্ছে...
==> core-04:বুটিং VM...
==> core-04:মেশিন বুট হওয়ার জন্য অপেক্ষা করা হচ্ছে। এটি কয়েক মিনিট সময় নিতে পারে...
core-04:SSH ঠিকানা:127.0.0.1:2202
core-04:SSH ব্যবহারকারীর নাম:core
core-04:SSH প্রমাণীকরণ পদ্ধতি:ব্যক্তিগত কী
core-04:সতর্কতা:সংযোগের সময়সীমা। আবার চেষ্টা করা হচ্ছে...
==> core-04:মেশিন বুট এবং প্রস্তুত!
==> core-04:হোস্টনেম সেট করা হচ্ছে...
==> core-04:নেটওয়ার্ক ইন্টারফেস কনফিগার এবং সক্রিয় করা হচ্ছে...
==> core-04:রানিং প্রোভিজার:ফাইল...
==> core-04:রানিং প্রোভিজার:শেল...
core-04:রানিং:ইনলাইন স্ক্রিপ্ট
সিস্টেমগুলি সব তৈরি হয়ে গেলে, আপনি বিদ্যমান মেশিন এবং তাদের বর্তমান অবস্থা সম্পর্কে আপনার প্রয়োজনীয় সমস্ত তথ্য পেতে ভ্যাগ্রান্ট স্ট্যাটাস চালাতে পারেন।
নেটওয়ার্কিং
এখন সত্যিই আকর্ষণীয় অংশ আসে. আমাদের চারটি ভার্চুয়াল মেশিন আছে। কিন্তু কিভাবে আমরা তাদের সাথে সংযোগ করব? ডকার পরীক্ষা করার সময় আমাদের একই রকম দ্বিধা ছিল, কিন্তু তারপরে আমরা আমাদের পথ খুঁজে পেয়েছি এবং এখানেও একই যুক্তি প্রযোজ্য।
প্রথমত, vagrant ssh কমান্ড ব্যবহার করে চলমান মেশিনগুলির প্রতিটির সাথে সংযোগ স্থাপন করা সম্ভব, যা সমস্ত কী এবং কী নয় তার যত্ন নেবে। আপনাকে অবশ্যই ক্লোন করা ডিরেক্টরি থেকে এটি কার্যকর করতে হবে, অন্যথায় আপনার একটি ত্রুটি থাকবে:
vagrant ssh core-02 --- -A
এটি চালানোর জন্য একটি ভ্যাগ্রান্ট এনভায়রনমেন্ট বা টার্গেট মেশিন প্রয়োজন
আদেশ একটি নতুন Vagrant পরিবেশ তৈরি করতে `vagrant init` চালান। অথবা, এই কমান্ডটি চালানোর জন্য `vagrant global-status` থেকে একটি টার্গেট মেশিনের একটি আইডি পান। একটি চূড়ান্ত বিকল্প হল একটি Vagrantfile সহ একটি ডিরেক্টরিতে পরিবর্তন করা এবং আবার চেষ্টা করা।
কিন্তু তারপর, সঠিক ডিরেক্টরিতে, এটি সূক্ষ্ম কাজ করা উচিত:
আপনি যদি ifconfig চালান, আপনি লক্ষ্য করবেন যে আপনার সমস্ত মেশিনের অনুমিতভাবে একই IP ঠিকানা রয়েছে এবং আপনি তাদের মধ্যে রুট করতে পারবেন না। তাছাড়া, ভার্চুয়ালবক্স ইন্টারফেস 172.0.0.1 সেগমেন্টে চলে, তাই এটি জিনিসগুলিকে আরও কঠিন করে তোলে। আবার, ডকারের সাথে আমাদের যা ছিল তার অনুরূপ।
আপনি সর্বদা ভার্চুয়ালবক্স অভ্যন্তরীণ নেটওয়ার্কিং পরিসর ব্যবহার করতে পারেন এবং সেই অনুযায়ী ফায়ারওয়াল নিয়ম এবং রাউটিং সামঞ্জস্য করতে পারেন। যাইহোক, এই পদ্ধতিটি সত্যিই আপনাকে বলে না যে আপনার ভার্চুয়াল মেশিনগুলির মধ্যে কোনটি কোন নির্দিষ্ট আইপি ঠিকানা ব্যবহার করে এবং এটি উড়ে এসে সহজে নির্ধারণ করা যায় না। অন্য কথায়, আপনি এই সংখ্যাগুলিকে কোথাও থেকে পার্স করতে পারবেন না এবং সঠিক তথ্য পাওয়ার আরও কিছু মার্জিত উপায় রয়েছে।
লোকালহোস্টের মাধ্যমে সংযোগ করুন
যদি আপনি মনে করেন, স্টার্টআপের সময়, 2200 (বা অনুরূপ) দিয়ে শুরু করে বিভিন্ন পোর্ট ব্যবহার করে লোকালহোস্টে চালানোর জন্য প্রতিটি ভার্চুয়াল মেশিনের জন্য ভ্যাগ্রান্ট সেটআপ SSH। তাই আপনাকে আপনার ক্লায়েন্টদের মধ্যে SSH করতে হবে, আপনি এই বিকল্পটি ব্যবহার করতে পারেন:
ssh 127.0.0.1 -p 2202
হোস্ট '[127.0.0.1]:2202 ([127.0.0.1]:2202)'-এর সত্যতা প্রতিষ্ঠিত করা যাবে না।
ED25519 কী ফিঙ্গারপ্রিন্ট হল 32:a0:57:58:b3:55:fc:03:c8:89:7d:7c:cc:6f:85:9d।
আপনি কি নিশ্চিত আপনি সংযোগ চালিয়ে যেতে চান (হ্যাঁ/না)?
IP ঠিকানার মাধ্যমে যে কোনো জায়গায় সংযোগ করুন
যাইহোক, উপরের পদ্ধতিটি VM থেকে VM যোগাযোগের জন্য কাজ করে না এবং আমাদের অন্য কিছু প্রয়োজন। এই যেখানে আবিষ্কার টুকরা সত্যিই সহজ আসে. একবার আপনার ক্লাস্টার চালু হলে, আপনি আবার সেই URL-এ নেভিগেট করতে পারেন, এবং এখন এটি কিছু কুৎসিত কিন্তু দরকারী JSON স্টাফ দিয়ে পূর্ণ হবে:
কী এবং মান লক্ষ্য করুন। প্রতিটি এন্ট্রির তার IP ঠিকানা আছে, e,g, 172.17.8.103, এবং আপনি এই আউটপুট থেকে এটি পার্স করতে পারেন। চমৎকার। এখন আমরা অভ্যন্তরীণ ঠিকানাগুলি জানি, এবং আমরা সেগুলিকে আমাদের ক্লায়েন্টদের সাথে সরাসরি সংযোগ করতে ব্যবহার করতে পারি এবং আরও গুরুত্বপূর্ণভাবে, তাদের সহকর্মীদের সাথে যোগাযোগ করার অনুমতি দিতে পারি।
একটি ছোট অনুপস্থিত অংশ হল যে আমরা মূল ব্যবহারকারীর পাসওয়ার্ড জানি না, তাই আমরা প্রদত্ত কী ব্যবহার করব, vagrant.d সাব-ডিরেক্টরির ভিতরে অবস্থিত। কী যোগ করুন, এবং তারপর আপনি নির্বিঘ্নে সংযোগ করতে পারেন. আমরা আমাদের প্রথম গাইডে এটি দেখেছি।
পোর্ট ফরওয়ার্ডিং
আমরা আমাদের বাক্সগুলির জন্য কনফিগারেশন অংশে সত্যিই খুব বেশি ড্যাবল করিনি, কিন্তু এই মুহুর্তে, এখন আমরা আমাদের চলমান উদাহরণগুলির আইপি ঠিকানাগুলি জানি, আমরা সত্যিই সৃজনশীল হতে শুরু করতে পারি। উদাহরণস্বরূপ, পোর্ট ফরওয়ার্ডিং, যা ভার্চুয়াল মেশিনগুলির জন্য অত্যন্ত মূল্যবান যা পরিষেবাগুলি চালায়।
প্রয়োজনীয় পরিবর্তনগুলি Vagrantfile-এর ভিতরে নির্দেশ হিসাবে প্রদান করা প্রয়োজন। আপনার একাধিক সেটআপের জন্য একাধিক কনফিগারেশন থাকতে পারে - অনেকটা ডকারফাইলের মতো। উদাহরণস্বরূপ, HTTPS পোর্ট ফরওয়ার্ড করা হবে:
config.vm.forward_port 443, <হোস্ট পোর্ট>
আপনি যদি আমার ডকার নিবন্ধগুলি অনুসরণ করেন তবে সবকিছু খুব সহজ। হোস্ট পোর্ট, ক্লায়েন্ট পোর্ট এবং বব আপনার চাচা। প্রতিটি বাক্সের জন্য আপনার একাধিক ঘোষণা আছে। তারপর, আপনার সিস্টেমের সম্পূর্ণ এবং সম্পূর্ণ নিয়ন্ত্রণের প্রয়োজন হলে, আপনি নিজে নিজে ফায়ারওয়াল নিয়মগুলি কনফিগার করতে পারেন। আবার, এটি শুধুমাত্র একটি টিজার, এবং আমরা ভবিষ্যতে এটি নিয়ে আরও বেশি সময় ব্যয় করব।
এখন, অবশ্যই, পরবর্তী পদক্ষেপটি হল ডকারকে প্লাগ ইন করা, এবং অনুরূপ ডিফল্ট পরিসরের সাথে, যা সম্ভবত দুর্ঘটনাক্রমে নয়, আপনি ক্লাস্টার, কন্টেইনার, সমান্তরাল সম্পাদন এবং অন্যান্য অভিনব ধারণাগুলির সাথে খেলা শুরু করতে পারেন। এই কারণেই Vagrant প্লাগইনগুলির সাথে আসে, যা আমরা একটি পৃথক নিবন্ধে আলোচনা করব। যাইহোক, একবার আপনি আপনার কাজ শেষ করার পরে, শুধু উদাহরণগুলি ধ্বংস করুন।
আরো পড়া
Dedoimedo's forges থেকে কিছু অতিরিক্ত ভাল জিনিস:
এখানে CoreOS কুইকস্টার্ট গাইড; একটু ভারী হতে পারে
একটি সুপারভাইজর্ড টিউটোরিয়াল, যা etcd
এর সাথে কিছুটা অনুরূপ ক্ষমতা প্রদান করেকেভিএম এবং ভার্চুয়ালবক্স পাশাপাশি কনফিগারেশন টুইক
উপসংহার
Vagrant, সেইসাথে CoreOS, আকর্ষণীয়, বন্য, বিদ্রোহী ধারনার মত মনে হয়। আমি এখনও নিশ্চিত নই যে ব্যবসায়িক পরিবেশে তাদের কতটা মূল্যবোধ রয়েছে, যদিও র্যাপার প্রযুক্তি যা প্রকৃত কাজের লোমহর্ষক বিশদগুলিকে আড়াল করে থাকে সেগুলি সর্বদা বৃদ্ধি পাচ্ছে এবং আরও জনপ্রিয় হয়ে উঠছে বলে মনে হচ্ছে৷ সবাই ফ্রন্টএন্ড এবং অর্কেস্ট্রেশন সরঞ্জাম চায়, একমাত্র সমস্যা হল বাজারটি এত চঞ্চল, অস্থির, কোন মান নেই এবং লোকেরা পাইথন, রুবি এবং JSON এর মতো কুৎসিত জিনিস ব্যবহার করে। কিন্তু কিছু মনে করবেন না।
আমরা সন্ত্রাসের ছদ্মবেশী আরেকটি ছোট অংশ জয় করেছি, এবং আপনি Vagrant এবং CoreOS উভয়ের সাথে কিছুটা বেশি পরিচিত। ভাল যে, কারণ আমাদের পরবর্তী অংশ এই ক্লাস্টার পরিষেবার কিছু সঙ্গে খেলা শুরু করা হবে এবং কি না. আর সেটা তো শুরু মাত্র।
মনে রাখবেন, আমাকে অবশ্যই এটি করতে হবে, তাই আগামী মাসগুলিতে, আমরা Fleet, Kubernets, Mesos, Etch, এবং আরও অনেক দুর্দান্ত প্রকল্প সহ কিন্তু সীমাবদ্ধ নয় এমন সবকিছুই এক্সপ্লোর করব৷ এছাড়াও আমরা CoreOS এবং অন্যদেরকে ক্লাউড প্রোভাইডারের সাথে আবদ্ধ করব, বিতরণ করা এবং সমান্তরাল ফাইল সিস্টেমের সাথে বেহাল, Jenkins, Ansible এর মতো অটোমেশন টুল, আরও বেশি নাম ড্রপিং এবং Buzz যাতে আপনি বমি করতে চান এবং তারপর কিছু। সাথে থাকুন.
চিয়ার্স।