सवाल मैं कमांड लाइन के माध्यम से हैपरॉक्स से संतुलित नोड को कैसे हटा सकता हूं?


मेरे पास हैर्रॉक्सी मेरे लोड-बैलेंसर के रूप में चल रहा है और आंकड़ों के वेब इंटरफ़ेस से हैप्रोक्सी के साथ आता है, मैं एक वेब सर्वर रखरखाव मोड में डाल सकता हूं (और इसे फिर से वापस ला सकता हूं) - जो बहुत अच्छा है!

हालांकि, मैं भी कमांड लाइन से कुछ क्रिया निष्पादित करने में सक्षम होना चाहता हूं (कुछ स्वचालित तैनाती वर्कफ़्लोज़ में उपयोग के लिए)। क्या यह संभव है और यदि ऐसा हो तो कैसे?

बहुत धन्यवाद


44
2018-03-19 15:44


मूल




जवाब:


अपडेट (28 अगस्त 2012): अब मैं उपयोग करता हूं haproxyctl आजकल, जो नीचे वर्णित विधियों का उपयोग करता है।


मैंने इसे एक और मुद्दे के साथ किसी और के लिए थोड़ा और शोध के बाद तय कर दिया है: -

आप अपनी कॉन्फ़िगरेशन में एक यूनिक्स सॉकेट जोड़ सकते हैं, फिर उसके साथ बातचीत करें (यहां संभावित आदेश दिए गए हैं)।

स्थापित करना:

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

इसे वापस लाने के लिए उपरोक्त आदेश में सक्षम के साथ अक्षम को प्रतिस्थापित करें।


53
2018-03-19 17:26





दाढ़ी के किनारे की गूंज विधि के अलावा, आप इसे अंतःक्रियात्मक रूप से भी कर सकते हैं:

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

20
2018-03-20 14:29



ए बड़े यहां पर गड़बड़ी यह है कि डेबियन का समाज "रीडलाइन" का समर्थन नहीं करता है, हालांकि यह मैन पेज में ऐसा कहता है। उन्होंने लिब्रेडलाइन (जीपीएल) और ओपनएसएसएल के बीच लाइसेंस टकराव के कारण इसे बाहर निकाला। इस मामले में आप उपयोग करते हैं socat /var/run/haproxy.stat stdio प्रत्येक एकल आदेश के लिए - Ben Tebulin


ऑफ मौके पर कि आपके पास केवल नेटकैट तक पहुंच है (nc) आप इसका उपयोग एचएपीआरएक्सी की सॉकेट फ़ाइल के साथ समान रूप से करने के लिए कर सकते हैं 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

$

संदर्भ


6
2018-06-09 21:40





आसान तरीका है:

1 - रखरखाव नामक फ़ाइल (उदाहरण के लिए) मौजूद है, तो 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 1.1.1.1:80 cookie S1 check inter 2000 fall 3
    server myserver2.example.com 1.1.1.2:80 cookie S2 check inter 2000 fall 3

3 - अपने वेबसर्वर को पुनरारंभ करें और बैलेंसर लोड करें।

4 - अपने वेब सर्वर रखरखाव मोड में रखो।

touch /var/www/maintenance.html

5 - रखरखाव मोड से अपने वेब सर्वर को हटा दें।

rm -f /var/www/maintenance.html

5
2017-07-11 05:10





एंडपॉइंट प्राप्त करने के लिए और फिर अपना एप्लिकेशन प्रकाशित करने के लिए, आप एक सर्वर से स्वास्थ्य जांच पृष्ठ को "अस्थायी रूप से" हटा सकते हैं।


2
2018-01-28 17:39