কম্পিউটার

Nginx এর জন্য লোড ব্যালেন্সার হিসাবে HAProxy ব্যবহার করা

এই নিবন্ধে আমরা দেখাব কিভাবে লোড ব্যালেন্সার হিসাবে HAProxy কনফিগার করতে হয় দুই Nginx এর জন্য ওয়েব সার্ভার (আপনি এটি অ্যাপাচি দিয়ে প্রতিস্থাপন করতে পারেন)। CentOS সব ক্ষেত্রেই হোস্ট অপারেটিং সিস্টেম হিসেবে ব্যবহৃত হয়।

HAProxy হল একটি সার্ভার সফ্টওয়্যার যা একাধিক ব্যাকএন্ড সার্ভারের মধ্যে ইনকামিং অনুরোধগুলি বিতরণ করে TCP এবং HTTP অ্যাপগুলির জন্য উচ্চ প্রাপ্যতা এবং লোড ব্যালেন্সিং প্রদান করে। HAProxy অনেক জনপ্রিয় রিসোর্সে যেমন Twitter ব্যবহার করা হয় , ইনস্টাগ্রাম , Github , Amazon, ইত্যাদি

HAProxy একটি পৃথক সার্ভারে ইনস্টল করা আছে যা ক্লায়েন্টের অনুরোধ গ্রহণ করে এবং তাদের Nginx ওয়েব সার্ভারে পুনঃনির্দেশ করে। আপনি নীচে সাধারণ সিস্টেম আর্কিটেকচার দেখতে পারেন:

Nginx এর জন্য লোড ব্যালেন্সার হিসাবে HAProxy ব্যবহার করা

ব্যাকএন্ড সার্ভারে Nginx কনফিগারেশন

আমরা আমাদের ওয়েব সার্ভারে Nginx এর ইনস্টলেশন এবং কনফিগারেশন দিয়ে শুরু করি লোডের মধ্যে ভারসাম্য বজায় থাকবে। yum ব্যবহার করে EPEL সংগ্রহস্থল এবং nginx ইনস্টল করুন (বা RHEL/CentOS 8 এ dnf):

#yum install epel-release -y
#yum install nginx -y

তারপর, nginx-এ .conf ফাইলগুলি নির্দিষ্ট করে যে সার্ভারগুলিকে অবশ্যই HAProxy সার্ভার এবং ব্যাকএন্ড সার্ভার থেকে অনুরোধগুলি প্রক্রিয়া করতে হবে:

ব্যাকএন্ড সার্ভার 1:

সার্ভার { listen current_server_IP_address:80 default_server; দ্বিতীয়_ব্যাকেন্ড_সার্ভার_আইপি_ঠিকানাকে অনুমতি দিন; IP_haproxy অনুমতি দিন; সব অস্বীকার করা; সার্ভার নাম _; root /usr/share/nginx/html; # ডিফল্ট সার্ভার ব্লকের জন্য কনফিগারেশন ফাইল লোড করুন। অন্তর্ভুক্ত /etc/nginx/default.d/*.conf; অবস্থান / { }

ব্যাকএন্ড সার্ভার 2:

সার্ভার { listen current_server_IP_address:80 default_server; প্রথম_ব্যাকেন্ড_সার্ভার_আইপি_ঠিকানাকে অনুমতি দিন; IP_haproxy অনুমতি দিন; সব অস্বীকার করা; সার্ভার নাম _; root /usr/share/nginx/html; # ডিফল্ট সার্ভার ব্লকের জন্য কনফিগারেশন ফাইল লোড করুন। অন্তর্ভুক্ত /etc/nginx/default.d/*.conf; অবস্থান / { }

nginx কনফিগারেশন ফাইলটি ডিফল্ট, আমরা এইমাত্র সার্ভারগুলিকে আইপি শোনাতে যোগ করেছি এবং অনুমতি ব্যবহার করে আমাদের সার্ভার ব্যতীত সকলের অ্যাক্সেস অস্বীকার করেছে৷ এবং অস্বীকার করুন নির্দেশাবলী।

ওয়েব সার্ভার কাজ শুরু করতে, ফায়ারওয়াল বা iptables ব্যবহার করে ফায়ারওয়াল HTTP পোর্ট খুলুন:

#firewall-cmd --permanent –add-service=http
#firewall-cmd –reload

আপনার যেকোনো ব্যাকএন্ড সার্ভারে একটি পরীক্ষা পরীক্ষা করুন:

# curl IP_of_the_second_server

এখানে আপনি একটি html পাবেন ফাইল

সার্ভার একটি স্ট্যান্ডার্ড nginx সূচক ফাইল ফিরিয়ে দিয়েছে। চেকটিকে আরও সুবিধাজনক করতে, আমি আমার ব্রাউজারে দেখতে প্রতিটি ব্যাকএন্ড সার্ভারে সূচী ফাইলের বিষয়বস্তু পরিবর্তন করেছি, কোন সার্ভার বর্তমান অনুরোধ প্রক্রিয়া করেছে৷

nginx সূচক ফাইলটি /usr/share/nginx/html/-এ অবস্থিত .

HAProxy লোড ব্যালেন্সার কনফিগারেশন

আসুন সার্ভারে HAProxy ইনস্টল এবং কনফিগার করি যা লোড ব্যালেন্সার হিসাবে ব্যবহার করা হবে।

HAProxy ইনস্টল করুন:
#yum install epel-release -y
#yum install haproxy -y

চলমান লেনদেন ইনস্টল করা হচ্ছে:haproxy-1.5.18-9.el7.x86_64 1/1যাচাই করা হচ্ছে:haproxy-1.5.18-9.el7.x86_64 1/1ইনস্টল:haproxy.x86_64 0:1.5.18-Compte! /প্রে> 

HAProxy সক্ষম করতে, আপনাকে সক্ষম=1 যোগ করতে হবে /etc/default/haproxy-এ ফাইল:

#nano /etc/default/haproxy

Nginx এর জন্য লোড ব্যালেন্সার হিসাবে HAProxy ব্যবহার করা

এখন HAProxy কনফিগারেশনে যাওয়া যাক। আমাদের সহজ কনফিগারেশনে, লোড ব্যালেন্সার সার্ভার সমস্ত HTTP অনুরোধ প্রক্রিয়া করবে এবং সেগুলিকে ব্যাকএন্ড সার্ভারে পাঠাবে:

#nano /etc/haproxy/haproxy.cfg

log /dev/log local0 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 ব্যবহারকারী হ্যাপ্রক্সি গ্রুপ হ্যাপ্রক্সি ডেমন্ডফল্টস মোড http লগ গ্লোবাল অপশন httpলগ বিকল্প রিডিসপ্যাচ পুনঃপ্রচার 3 টাইমআউট http-অনুরোধ 10s টাইমআউট টাইমআউট সংযোগ 10s টাইমআউট ক্লায়েন্ট 1m টাইমআউট সার্ভার 1m টাইমআউট http-keep-alive 10s টাইমআউট চেক 10s maxconn 3000frontend www bind balancer_IP_address:80 default_backend nginx_poolbackend nginx_pool ব্যালেন্স nginx_poolbackend nginx_pool ব্যালেন্স চেক করুন:

আপনার কনফিগারেশন সংরক্ষণ করার পরে, haproxy.cfg সিনট্যাক্স পরীক্ষা করুন:

#haproxy -f /etc/haproxy/haproxy.cfg -c

এটি ঠিক থাকলে, আপনি এইরকম একটি বার্তা পাবেন:

কনফিগারেশন ফাইল বৈধ

তারপর HAProxy রিস্টার্ট করুন এবং লিনাক্স স্টার্টআপে যোগ করুন। এবং ফায়ারওয়ালে HTTP পোর্ট খুলুন।

#systemctl restart haproxy
#systemctl enable haproxy
#firewall-cmd —permanent –add-service=http
#firewall-cmd –reload

এইভাবে, লোড ব্যালেন্সার কনফিগার করা হয়েছে। একটি ব্রাউজারে HAProxy সার্ভারের IP ঠিকানাটি খোলার মাধ্যমে এটি পরীক্ষা করা যাক:

Nginx এর জন্য লোড ব্যালেন্সার হিসাবে HAProxy ব্যবহার করা

আপনি দেখতে পাচ্ছেন, উভয় সার্ভারই ​​বিষয়বস্তু ফেরত দিয়েছে, তাই ব্যালেন্সার কাজ করছে।

Haproxy.cfg কনফিগারেশন ফাইল প্যারামিটার

আসুন HAProxy অ্যালগরিদমের প্রধান উদাহরণ বিবেচনা করা যাক:

  • roundrobin — হল ডিফল্ট অ্যালগরিদম, সার্ভারে অনুরোধ পাঠায়। আমরা আমাদের উদাহরণে এই পদ্ধতিটি ব্যবহার করেছি৷
  • leastconn - ন্যূনতম সংখ্যক সক্রিয় সংযোগ সহ একটি সার্ভার নির্বাচন করে। এটি এমন প্রকল্পগুলির জন্য আবেদন করার সুপারিশ করা হয়, যেখানে সেশনগুলি দীর্ঘ সময়ের জন্য ব্যবহৃত হয়।
  • source – ব্যবহারকারীর আইপি ঠিকানার হ্যাশের উপর ভিত্তি করে একটি সার্ভার নির্বাচন করে। এই মোডে, ব্যবহারকারীর আইপি ঠিকানা অপরিবর্তিত থাকলে একজন ক্লায়েন্ট একই ওয়েব সার্ভারকে সংযুক্ত করবে।

আসুন কিছু কনফিগারেশন ফাইল প্যারামিটার বর্ণনা করি।

বিশ্বব্যাপী ব্লক:

  • log — /dev/log সেভিং local0 অবজেক্টের মান হিসাবে লগ ইন করে
  • chroot — নিরাপত্তা সেটিংস, নির্দিষ্ট ডিরেক্টরিতে HAProxy লক করে
  • maxconn — প্রতি প্রক্রিয়ায় সর্বাধিক সংখ্যক সমবর্তী সংযোগ
  • daemon — একটি ডেমন হিসাবে একটি প্রক্রিয়া চালান

ডিফল্ট ব্লক এই ব্লকটি এটি অনুসরণ করে অন্যান্য সকল বিভাগের জন্য ডিফল্ট প্যারামিটার সেট করে:

  • log — সেট করে কোন লগে লেখা এন্ট্রি (এই ক্ষেত্রে, গ্লোবাল মানে গ্লোবাল বিভাগে সেট করা প্যারামিটার ব্যবহার করা হয়)
  • mode — যোগাযোগ প্রোটোকল সেট করে এবং নিম্নলিখিত মানগুলির মধ্যে একটি রয়েছে:tcp, http বা স্বাস্থ্য
  • retries — ব্যর্থতার ক্ষেত্রে সার্ভারের সাথে সংযোগ করার প্রচেষ্টার সংখ্যা
  • option httplog — যদি HAProxy HTTP অনুরোধ প্রক্সি করে
  • ব্যবহার করা হয় লগ ফরম্যাট
  • option redispatch — সার্ভার ব্যর্থতার ক্ষেত্রে একটি প্রোগ্রামকে একটি সেশন বন্ধ করতে এবং পুনরায় পাঠানোর অনুমতি দেয়
  • contimeout — সার্ভারের সাথে সংযোগ সফলভাবে প্রতিষ্ঠিত না হওয়া পর্যন্ত অপেক্ষার সর্বোচ্চ সময়

এছাড়াও বিভিন্ন সময়সীমার সাথে সম্পর্কিত অনেক পরামিতি রয়েছে৷

HAProxy পরিসংখ্যান সংগ্রহ করা

কনফিগারেশন ফাইলে পরিসংখ্যান ব্লক যোগ করুন:

 পরিসংখ্যান বাইন্ড শুনুন :10001 পরিসংখ্যান সক্ষম করে stats uri /haproxy_stats পরিসংখ্যান auth admin:admin

বর্ণনা:

  • bind – যে পোর্টে আপনি পরিসংখ্যান দেখতে পারেন
  • stats enable – পরিসংখ্যান প্রতিবেদন সক্ষম করে
  • stats uri – পরিসংখ্যান পৃষ্ঠার ঠিকানা সেট করে
  • stats auth - অ্যাক্সেস করতে লগইন এবং পাসওয়ার্ড
আপনি আপনার পছন্দ মতো যেকোনো TCP পোর্ট উল্লেখ করতে পারেন। উপরে উল্লিখিত একটি ব্যস্ত বা আপনার উপযুক্ত না হলে.

আপনার ফায়ারওয়ালে উপরে উল্লিখিত পোর্টে ইনকামিং সংযোগ গ্রহণ করুন:

firewall-cmd --permanent –add-port=10001/tcp
firewall-cmd –reload

HAProxy রিপোর্ট দেখতে, এই লিঙ্কটি অনুসরণ করুন:

https://hostname_haproxy:10001/haproxy_stats

Nginx এর জন্য লোড ব্যালেন্সার হিসাবে HAProxy ব্যবহার করা আপনার ব্রাউজারে ব্যালেন্সার আইপি ঠিকানা খুলুন এবং F5 টিপতে শুরু করুন . HAproxy পরিসংখ্যান পরিবর্তন হবে।

এই নিবন্ধে আমরা মৌলিক HAProxy কনফিগারেশন বিবেচনা করেছি। HAProxy মডিউল ব্যবহার করার আরও ঘটনা রয়েছে।

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

Nginx এর জন্য লোড ব্যালেন্সার হিসাবে HAProxy ব্যবহার করা


  1. Nginx এর সাথে একটি DDoS আক্রমণ কীভাবে প্রতিরোধ করা যায়

  2. ঠিক করুন:সার্ভারের সাথে সংযোগ করার সময় চ্যাট ত্রুটি

  3. নতুনদের জন্য 10টি ম্যাকবুক প্রো টিপস

  4. Windows 10 এর জন্য ম্যাজিকডিস্কের সেরা বিকল্প