কমান্ড লাইনের মাধ্যমে আমি কীভাবে হ্যাপ্রোক্সি থেকে ভারসাম্য নোড অপসারণ করতে পারি?


46

আমার লোড-ব্যালেন্সার হিসাবে হাইপোক্সি চলছে এবং হ্যাপ্রোক্সি সহ যে পরিসংখ্যান ওয়েব ইন্টারফেস রয়েছে তা থেকে, আমি একটি ওয়েব সার্ভারটি রক্ষণাবেক্ষণ মোডে রাখতে পারি (এবং এটি আবার ফিরিয়ে আনি) - যা দুর্দান্ত!

তবে, আমি কমান্ড লাইন থেকে একই ক্রিয়াটি সম্পাদন করতে সক্ষম হতে চাই (কিছু স্বয়ংক্রিয় স্থাপনার কার্যপ্রবাহের জন্য ব্যবহারের জন্য)। এটি কি সম্ভব, আর যদি হয় তবে কীভাবে?

অনেক ধন্যবাদ

উত্তর:


59

আপডেট (২৮ আগস্ট ২০১২): আমি এখনকাল হ্যাপ্রোক্সিক্সিটল ব্যবহার করার ঝোঁক করছি , যা নীচে বর্ণিত পদ্ধতিগুলি ব্যবহার করে।


আমি আরও কিছুটা গবেষণার পরে এটিকে একই সমস্যার অন্য কারও জন্য স্থির করেছি: -

আপনি আপনার কনফিগারেশনে একটি ইউনিক্স সকেট যুক্ত করতে পারেন, তারপরে এটির সাথে ইন্টারঅ্যাক্ট করুন ( সম্ভাব্য কমান্ডগুলি এখানে )।

স্থাপন করতে:

sudo nano /etc/haproxy/haproxy.cfg

আপনার 'গ্লোবাল' বিভাগে যুক্ত করুন:

stats socket /etc/haproxy/haproxysock level admin

আপনার হ্যাপ্রোক্সি ডেমন পুনরায় চালু করুন (উদাঃ sudo service haproxy restart)

এখন আপনার সকেট দরকার (যদি এটি না থাকে তবে কেবল apt-get install socatউবুন্টুতে)।

এখন আপনাকে যা করতে হবে তা হ'ল একটি নোড নেওয়ার জন্য এই আদেশটি বন্ধ করে দেওয়া:

echo "disable server yourbackendname/yourservername" | socat stdio /etc/haproxy/haproxysock

এটিকে ফিরিয়ে আনতে উপরের কমান্ডটি সক্ষম করে প্রতিস্থাপন অক্ষম করুন।


21

দাড়িওয়িজলের প্রতিধ্বনি পদ্ধতি ছাড়াও, আপনি এটি ইন্টারেক্টিভভাবে করতে পারেন:

root@ny-lb01:/etc/haproxy# sudo socat readline /var/run/haproxy.stat 

prompt
> set timeout cli 1d
> disable server foo/web01
> help
Unknown command. Please enter one of the following commands only :
  clear counters : clear max statistics counters (add 'all' for all counters)
  clear table    : remove an entry from a table
  help           : this message
  prompt         : toggle interactive mode with prompt
  quit           : disconnect
  show info      : report information about the running process
  show stat      : report counters for each proxy and server
  show errors    : report last request and response errors for each proxy
  show sess [id] : report the list of current sessions or dump this session
  show table [id]: report table usage stats or dump this table's contents
  get weight     : report a server's current weight
  set weight     : change a server's weight
  set timeout    : change a timeout setting
  disable server : set a server in maintenance mode
  enable server  : re-enable a server that was previously in maintenance mode

6
এখানে একটি বড় সমস্যাটি হ'ল দেবিয়ানদের সোকাটি "রিডলাইন" সমর্থন করে না যদিও এটি ম্যান পৃষ্ঠাতে বলেছে। লাইব্রেডলাইন (জিপিএল) এবং ওপেনএসএসএল-এর মধ্যে লাইসেন্স সংঘর্ষের কারণে তারা এটিকে প্যাচ করেছে। এই ক্ষেত্রে আপনি socat /var/run/haproxy.stat stdioপ্রতিটি একক কমান্ডের জন্য ব্যবহার করেন
বেনটলর

7

আপনি কেবল নেটকাট ( nc) এ অ্যাক্সেস পেয়েছেন এমন অফ সুযোগে আপনি এটি অনুরূপ ফ্যাশনে HAProxy এর সকেট ফাইলের সাথে ইন্টারেক্ট করার জন্য এটি ব্যবহার করতে পারেন socat

$ echo "show info" | nc -U /var/lib/haproxy/stats | head -10
Name: HAProxy
Version: 1.5.2
Release_date: 2014/07/12
Nbproc: 1
Process_num: 1
Pid: 29745
Uptime: 0d 0h14m35s
Uptime_sec: 875
Memmax_MB: 0
Ulimit-n: 8034

একটি সার্ভার অক্ষম করতে:

$ echo "enable server bk_dservers/ds02" | nc -U /var/lib/haproxy/stats

উপরের সঞ্চালনের জন্য সকেট ফাইলে যথাযথ অ্যাক্সেসের ব্যবস্থা রয়েছে কিনা তা নিশ্চিত হয়ে নিন। মূলত এরকম কিছু:

stats       socket /var/lib/haproxy/stats level admin

অন্যথায় আপনি অনুমতি ত্রুটি অস্বীকার পাবেন:

$ echo "disable server bk_dservers/ds02" | nc -U /var/lib/haproxy/stats
Permission denied

$

তথ্যসূত্র


7

সহজ উপায়:

1 - রক্ষণাবেক্ষণ html নামের একটি ফাইল (উদাহরণস্বরূপ) উপস্থিত থাকলে 503 কোড ফেরত দিতে আপনার ওয়েব সার্ভারটি কনফিগার করুন। অ্যাপাচি দিয়ে আপনি নিম্নলিখিত হিসাবে এটি করতে পারেন:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{ENV:REDIRECT_STATUS} !=503
  RewriteCond "/var/www/maintenance.html" -f
  RewriteRule ^(.*)$ /$1 [R=503,L]
</IfModule>

2 - কেবলমাত্র কোনও বন্দর পরীক্ষা করার পরিবর্তে ইউআরএল পরীক্ষা করতে আপনার হ্যাপোক্সি ব্যাকএন্ড কনফিগার করুন:

backend site
    balance roundrobin
    option httpchk GET /index.html
    server myserver1.example.com 192.0.2.1:80 cookie S1 check inter 2000 fall 3
    server myserver2.example.com 192.0.2.2:80 cookie S2 check inter 2000 fall 3

3 - আপনার ওয়েবসারভার পুনরায় আরম্ভ করুন এবং ভারসাম্য লোড করুন।

4 - আপনার ওয়েব সার্ভারটি রক্ষণাবেক্ষণ মোডে রাখুন।

touch /var/www/maintenance.html

5 - রক্ষণাবেক্ষণ মোড থেকে আপনার ওয়েব সার্ভারটি সরান।

rm -f /var/www/maintenance.html

2

শেষ পয়েন্টটি নীচে পেতে এবং তারপরে আপনার অ্যাপ্লিকেশনটি প্রকাশ করতে আপনি এক সার্ভার থেকে স্বাস্থ্য পরীক্ষা পৃষ্ঠাটি সাময়িকভাবে "অপসারণ" করতে পারেন।


0

আপনার যদি ডেবিয়ান থাকে, রিডলাইনটি কাজ করে না, ইন্টারেক্টিভের জন্য নেটক্যাট একটি ভাল বিকল্প:

user@server:/etc/haproxy$ sudo nc -U /etc/haproxy/haproxysock
prompt
> show info
Name: HAProxy
Version: 1.7.11-1ppa1~xenial
Release_date: 2018/04/30
Nbproc: 1
Process_num: 1
Pid: 12307
Uptime: 0d 10h33m22s
...

অ ইন্টারেক্টিভ:

echo "show info;show stat" | sudo nc -U /etc/haproxy/haproxysock
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.