লিনাক্সে কীভাবে উচ্চ উপলভ্যতা/ক্লাস্টারিং কনফিগার করতে এবং বজায় রাখতে হয়


উচ্চ উপলভ্যতা (এইচএ) কেবল দীর্ঘ সময়ের জন্য ব্যর্থতা ছাড়াই ধারাবাহিকভাবে পরিচালনার জন্য এমন কোনও মানের গুণকে বোঝায়। এইচএ সমাধানগুলি হার্ডওয়্যার এবং/বা সফ্টওয়্যার ব্যবহার করে প্রয়োগ করা যেতে পারে এবং এইচএ বাস্তবায়নের সাধারণ সমাধানগুলির মধ্যে একটি হল ক্লাস্টারিং।

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

ক্লাস্টারগুলি চারটি প্রধান ধরণের মধ্যে পড়ে:

  • স্টোরেজ: একটি ক্লাস্টারে সার্ভারগুলিতে একটি সামঞ্জস্যপূর্ণ ফাইল সিস্টেম চিত্র সরবরাহ করে, সার্ভারগুলি একসাথে একটি একক ভাগ করা ফাইল সিস্টেমে পড়তে এবং লিখতে দেয়
  • উচ্চ উপলভ্যতা: ব্যর্থতার একক পয়েন্টগুলি দূর করুন এবং কোনও নোড অকেজো হয়ে পড়ার ক্ষেত্রে কোনও ক্লাস্টার নোড থেকে অন্যটিতে পরিষেবাগুলি ব্যর্থ করে
  • লোড ব্যালেন্সিং: ক্লাস্টার নোডগুলির মধ্যে অনুরোধের ভার ভারসাম্য রাখতে একাধিক ক্লাস্টার নোডগুলিতে নেটওয়ার্ক পরিষেবা অনুরোধগুলি প্রেরণ করুন
  • উচ্চ কার্যকারিতা: সমান্তরাল বা সমবর্তী প্রক্রিয়াজাতকরণ চালিত করে, ফলে অ্যাপ্লিকেশনগুলির কার্যকারিতা উন্নত করতে সহায়তা করে

এইচএ প্রদানের আরও একটি বহুল ব্যবহৃত সমাধান হ'ল প্রতিলিপি (বিশেষত ডেটা রেপ্লিকেশন)। প্রতিলিপি হ'ল প্রক্রিয়া যার মাধ্যমে এক বা একাধিক (মাধ্যমিক) ডাটাবেসগুলি একক প্রাথমিক (বা মাস্টার) ডাটাবেসের সাথে সিঙ্কে রাখা যায়।

একটি ক্লাস্টার সেটআপ করতে, আমাদের কমপক্ষে দুটি সার্ভারের প্রয়োজন। এই গাইডের উদ্দেশ্যে, আমরা দুটি লিনাক্স সার্ভার ব্যবহার করব:

  • নোড 1: 192.168.10.10
  • নোড 2: 192.168.10.11

এই নিবন্ধে, আমরা উবুন্টু 16.04/18.04 এবং সেন্টোস 7-তে কীভাবে উচ্চ প্রাপ্যতা/ক্লাস্টারিং স্থাপন, কনফিগারেশন এবং বজায় রাখতে হবে তার মূল বিষয়গুলি প্রদর্শন করব We আমরা ক্লাস্টারে কীভাবে এনগিনেক্স এইচটিটিপি পরিষেবা যুক্ত করবেন তা প্রদর্শন করব।

প্রতিটি সার্ভারে স্থানীয় ডিএনএস সেটিংস কনফিগার করা

দুটি সার্ভার একে অপরের সাথে যোগাযোগ করার জন্য, আমাদের উভয় সার্ভারে/ইত্যাদি/হোস্ট ফাইলে উপযুক্ত স্থানীয় ডিএনএস সেটিংস কনফিগার করতে হবে।

আপনার প্রিয় কমান্ড লাইন সম্পাদকটি ব্যবহার করে ফাইলটি খুলুন এবং সম্পাদনা করুন।

$ sudo vim /etc/hosts  

আপনার সার্ভারগুলির আসল আইপি ঠিকানাগুলির সাথে নিম্নলিখিত এন্ট্রিগুলি যুক্ত করুন।

192.168.10.10	node1.example.com
192.168.10.11 	node2.example.com

পরিবর্তনগুলি সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন।

এনগিনেক্স ওয়েব সার্ভার ইনস্টল করা হচ্ছে

এখন নিম্নলিখিত কমান্ড ব্যবহার করে Nginx ওয়েব সার্ভার ইনস্টল করুন।

$ sudo apt install nginx  [On Ubuntu]
$ sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

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

$ sudo systemctl enable nginx
$ sudo systemctl start nginx
$ sudo systemctl status nginx

এনগিনেক্স পরিষেবা শুরু করার পরে, উভয় সার্ভারে সনাক্তকরণ এবং পরীক্ষার জন্য আমাদের কাস্টম ওয়েব পৃষ্ঠা তৈরি করতে হবে। আমরা প্রদর্শিত হিসাবে ডিফল্ট Nginx সূচী পৃষ্ঠার বিষয়বস্তু পরিবর্তন করব।

$ echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS1
$ echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS2

Corosync এবং পেসমেকার ইনস্টল এবং কনফিগার করছে

এরপরে, আমাদের প্রতিটি নোডে নীচের মতো করে পেসমেকার, করোজিনক এবং পিসি ইনস্টল করতে হবে।

$ sudo apt install corosync pacemaker pcs	#Ubuntu 
$ sudo yum install corosync pacemaker pcs	#CentOS 

ইনস্টলেশন সম্পূর্ণ হয়ে গেলে, নিশ্চিত হয়ে নিন যে পিসি ডেমন দুটি সার্ভারে চলছে is

$ sudo systemctl enable pcsd
$ sudo systemctl start pcsd
$ sudo systemctl status pcsd

ইনস্টলেশন চলাকালীন, "হ্যাক্লাস্টার" নামে একটি সিস্টেম ব্যবহারকারী তৈরি করা হয়। সুতরাং আমাদের পিসিগুলির জন্য প্রয়োজনীয় প্রমাণীকরণ স্থাপন করতে হবে। আসুন আমরা "হ্যাক্লাস্টার" ব্যবহারকারীর জন্য একটি নতুন পাসওয়ার্ড তৈরি করে শুরু করি, আমাদের সমস্ত সার্ভারে একই পাসওয়ার্ডটি ব্যবহার করতে হবে:

$ sudo passwd hacluster

এর পরে, সার্ভারগুলির একটিতে (নোড 1), পিসিগুলির জন্য প্রয়োজনীয় প্রমাণীকরণ সেট আপ করতে নিম্নলিখিত কমান্ডটি চালান run

$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force

এখন একটি ক্লাস্টার তৈরি করুন এবং এটি নোড 1 সার্ভারে কিছু নোড (ক্লাস্টারের নাম 15 টি অক্ষরের অতিক্রম করতে পারে না) দিয়ে পপুলেট করুন।

$ sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com 

এখন বুটে ক্লাস্টারটি সক্ষম করুন এবং পরিষেবাটি শুরু করুন।

$ sudo pcs cluster enable --all
$ sudo pcs cluster start --all

ক্লাস্টার পরিষেবাটি নিম্নলিখিত কমান্ডটি ব্যবহার করে চালু এবং চলমান আছে কিনা তা এখন পরীক্ষা করে দেখুন।

$ sudo pcs status
OR
$ sudo crm_mon -1

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

প্রথম বিকল্পটি হল স্টোনথ (বা মাথার মধ্যে অন্যান্য নোডটি অঙ্কন করা) নিষ্ক্রিয় করা, পেসমেকারের উপর বেড়া বাস্তবায়ন।

এই উপাদানটি আপনার ডেটা সমবর্তী অ্যাক্সেস দ্বারা দূষিত হওয়া থেকে রক্ষা করতে সহায়তা করে। এই গাইডের উদ্দেশ্যে আমরা কোনও ডিভাইস কনফিগার না করে আমরা এটি অক্ষম করব।

পাথর বন্ধ করতে, নিম্নলিখিত কমান্ডটি চালান:

$ sudo pcs property set stonith-enabled=false

এর পরে, নিম্নলিখিত কমান্ডটি চালিয়ে কোরাম নীতি উপেক্ষা করুন:

$ sudo pcs property set no-quorum-policy=ignore

উপরের বিকল্পগুলি সেট করার পরে, সম্পত্তি তালিকা দেখতে নীচের কমান্ডটি চালান এবং উপরের বিকল্পগুলি, স্টোনথ এবং কোরাম নীতিটি অক্ষম রয়েছে তা নিশ্চিত করুন।

$ sudo pcs property list

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

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

আমরা দুটি ক্লাস্টার রিসোর্স যুক্ত করব: "ভাসমান_পী" নামক ভাসমান আইপি অ্যাড্রেস রিসোর্স এবং এনজিঞ্জেক্স ওয়েব সার্ভারের জন্য একটি সংস্থান যা "http_server" নামে পরিচিত।

প্রথমে নীচে ভাসমান_পিকে যুক্ত করে শুরু করুন। এই উদাহরণে, আমাদের ভাসমান আইপি ঠিকানা 192.168.10.20।

$ sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s

কোথায়:

  • ভাসমান_আইপি: পরিষেবার নাম
  • “ocf: হার্টবিট: আইপ্যাডড্র 2”: পেসমেকারকে এই স্ক্রিপ্টটি কোন স্ক্রিপ্টটি ব্যবহার করতে হবে তা বলতে, এই ক্ষেত্রে আইপ্যাডডিআর 2, এটি কোন পেস মেকার (স্পেস মেকার) এবং কোন মানটি এটি ocf এর সাথে মানায়।
  • "ওপেন মনিটরের ব্যবধান = 60 এর দশক": পেসমেকারকে এজেন্টের মনিটরের পদক্ষেপের কল করে প্রতি এক মিনিটে এই পরিষেবার স্বাস্থ্য পরীক্ষা করার নির্দেশ দেয়

তারপরে দ্বিতীয় সংস্থান যুক্ত করুন, নামটি দেওয়া হয়েছে_পরিবার_ এখানে, পরিষেবাটির রিসোর্স এজেন্টটি ocf: হার্টবিট: এনজিনেক্স।

$ sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

একবার আপনি ক্লাস্টার পরিষেবাদি যুক্ত করার পরে, উত্সগুলির স্থিতি পরীক্ষা করতে নিম্নলিখিত কমান্ডটি জারি করুন।

$ sudo pcs status resources

কমান্ডের আউটপুট দেখে, দুটি যুক্ত সংস্থানসমূহ: "ভাসমান_ইপ" এবং "http_server" তালিকাভুক্ত করা হয়েছে। প্রাথমিক নোডটি চালু রয়েছে বলে ভাসমান_আইপি পরিষেবা বন্ধ রয়েছে।

আপনি যদি আপনার সিস্টেমে ফায়ারওয়াল সক্ষম করে থাকেন তবে আপনাকে নোডগুলির মধ্যে সঠিক যোগাযোগের জন্য ফায়ারওয়ালের মাধ্যমে সমস্ত ট্র্যাফিক এনগিনেক্স এবং সমস্ত উচ্চ প্রাপ্যতা পরিষেবাগুলিকে অনুমতি দেওয়া দরকার:

-------------- CentOS 7 -------------- 
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=high-availability		
$ sudo firewall-cmd --reload

-------------- Ubuntu -------------- 
$ sudo ufw allow http	
$ sudo ufw allow high-availability						
$ sudo ufw reload 

চূড়ান্ত এবং গুরুত্বপূর্ণ পদক্ষেপটি আমাদের উচ্চ প্রাপ্যতা সেটআপ কাজ করে তা পরীক্ষা করা। একটি ওয়েব ব্রাউজার খুলুন এবং 192.168.10.20 ঠিকানায় নেভিগেট করুন আপনার স্ক্রীনশট হিসাবে প্রদর্শিত node2.example.com থেকে ডিফল্ট Nginx পৃষ্ঠাটি দেখা উচিত।

একটি ব্যর্থতা অনুকরণ করতে, node2.example.com এ ক্লাস্টারটি বন্ধ করতে নিম্নলিখিত কমান্ডটি চালান।

$ sudo pcs cluster stop http_server

তারপরে পৃষ্ঠাটি 192.168.10.20 এ পুনরায় লোড করুন, আপনার এখন node1.example.com থেকে ডিফল্ট Nginx ওয়েব পৃষ্ঠা অ্যাক্সেস করা উচিত।

বিকল্পভাবে, কোনও নোডের ক্লাস্টারটি বন্ধ না করে, কোনও নোডের নীচের কমান্ডটি ব্যবহার না করে, পরিষেবাটি সরাসরি থামতে বলার মাধ্যমে আপনি একটি ত্রুটি অনুকরণ করতে পারেন:

 
$ sudo crm_resource --resource http_server --force-stop 

তারপরে আপনাকে ক্রিম_মোনটি ইন্টারেক্টিভ মোডে চালাতে হবে (ডিফল্ট) 2 মিনিটের মনিটরের ব্যবধানের মধ্যে, আপনাকে ক্লাস্টার নোটিশটি দেখতে পারা উচিত যে http_server ব্যর্থ হয়েছে এবং এটি অন্য নোডে সরিয়ে নিয়েছে।

আপনার ক্লাস্টার পরিষেবাদিগুলি দক্ষতার সাথে চালানোর জন্য আপনাকে কিছু সীমাবদ্ধতা নির্ধারণ করতে হবে। সমস্ত ব্যবহার আদেশের তালিকার জন্য আপনি পিসি ম্যান পৃষ্ঠা (ম্যান পিসি) দেখতে পাবেন।

করোজিনক এবং পেসমেকার সম্পর্কিত আরও তথ্যের জন্য, দেখুন: https://clusterlabs.org/

এই গাইডটিতে আমরা উবুন্টু 16.04/18.04 এবং সেন্টোস 7-তে কীভাবে উচ্চ প্রাপ্যতা/ক্লাস্টারিং/প্রতিলিপি স্থাপন, কনফিগার এবং রক্ষণাবেক্ষণের বেসিকগুলি দেখিয়েছি আমরা কীভাবে একটি ক্লাস্টারে এনজিনেক্স এইচটিটিপি পরিষেবা যুক্ত করতে পারি। আপনার যদি ভাগ করে নিতে বা প্রশ্ন করতে কোন চিন্তা থাকে তবে নীচের প্রতিক্রিয়া ফর্মটি ব্যবহার করুন।