haproxy ไม่เริ่ม


20

ติดตั้งเซิร์ฟเวอร์ Ubuntu 10.04 ใหม่และเข้าสู่ระบบในฐานะ root ฉันติดตั้ง haproxy โดยใช้ apt-get

ฉันสามารถเรียกใช้ haproxy โดยตรงเป็น daemon แต่เมื่อฉันไม่ทำ/etc/init.d/haproxy startอะไรเลย .. ไม่แม้แต่จะเกิดข้อความแสดงข้อผิดพลาด

netstat -a แสดงว่าไม่ได้ใช้พอร์ต http ฉันพยายามสร้างสมดุลให้กับ haproxy ...

ไอเดีย?

แก้ไข

  1. ฉันสังเกตเห็นว่าapt-get install haproxyบอกสิ่งนี้ในที่สุด:

    update-rc.d: คำเตือน: /etc/init.d/haproxy ไม่มีข้อมูล LSB update-rc.d: ดูที่http://wiki.debian.org/LSBInitScripts

  2. /etc/default/haproxy กล่าวว่า ENABLED=1

การดีบักเอาต์พุตสำหรับ sh -xv /etc/init.d/haproxy start

#!/bin/sh
#
# chkconfig: - 85 15
# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \
#              for high availability environments.
# processname: haproxy
# config: /etc/haproxy.cfg
# pidfile: /var/run/haproxy.pid

# Source function library.
if [ -f /etc/init.d/functions ]; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi
+ [ -f /etc/init.d/functions ]
+ [ -f /etc/rc.d/init.d/functions ]
+ exit 0
root@li267-63:~#

คุณสามารถลองดีบักสคริปต์เริ่มต้นด้วย: sh -xv /etc/init.d/haproxy start
João Pinto

คำตอบ:


39

แก้ไข/etc/default/haproxyและตรวจสอบให้แน่ใจว่ามีบรรทัดที่ระบุไว้ENABLED=1ในนั้น

ค่าเริ่มต้นคือ ENABLED = 0 สิ่งนี้เสร็จสิ้นเนื่องจาก haproxy ไม่มีการกำหนดค่าเริ่มต้นที่มีสติดังนั้นคุณต้องกำหนดค่าก่อนแล้วจึงเปิดใช้งาน


ฉันตั้งค่า ENABLED = 1 ยังไม่มีอะไร ..
Assaf Lavie

Assaf คุณยังต้องกำหนดค่า haproxy หากไฟล์กำหนดค่าไม่ถูกต้องไฟล์จะไม่เริ่มทำงานและอาจมีข้อผิดพลาดในการพิมพ์ลงในบันทึกของระบบ (ตรวจสอบ /var/log/daemon.log และ / var / log / syslog)
SpamapS

2
ทำไมมันไม่เริ่มโดยไม่มีข้อความ verbose? มันสับสนจริงๆ!
Nikolay Fominyh

1
@NikolayFominyh ฉันเห็นด้วยนี่มันสับสน! ในที่สุดฉันก็พบกระทู้นี้ซ้ำแล้วซ้ำอีกเพราะทุกๆ 8 เดือนหรือมากกว่านั้นฉันต้องตั้งค่า haproxy ใหม่และฉันก็ลืมเกี่ยวกับข้อกำหนดในการเปิดใช้งานบริการใน / etc / default / * ฉันหวังว่าจะมีบางอย่างปรากฏขึ้นใน syslog เมื่อคุณพยายามเริ่มบริการที่ปิดการใช้งาน
Jay Taylor

3

ฉันมีปัญหาเดียวกันที่การตั้งค่า ENABLED ไม่มีผลกระทบเนื่องจากบรรทัด "ทดสอบ" ล้มเหลวเสมอ พบสาเหตุ: คุณต้องแก้ไข/etc/default/haproxyแทนสคริปต์เริ่มต้น


3

ฉันรู้สิ่งนี้ด้ายอายุหนึ่งปี .. แต่เพียงแค่พยายามแบ่งปันสิ่งที่ฉันได้เรียนรู้ ..

ใช้/etc/init.d/haproxy reload หรือservice haproxy reloadและมันจะรีโหลดได้ดี .. หลังจากนั้นเราแค่อยากให้มันเริ่มต้นได้อย่างถูกต้อง;)


2

ฉันมีปัญหาที่คล้ายกัน ฉันได้ตั้งค่า ENABLED แล้ว = 1 แต่การตั้งค่า update-rc.d ที่เป็นค่าเริ่มต้นน่าจะวาง haproxy ใน K20 (rc0 | 1 | 6.d) และใน S20 (rc2 | 3 | 4 | 5.d) ซึ่งหมายความว่ามันจะพยายามเริ่มต้นก่อนการเชื่อมต่อเครือข่ายดังนั้นในกรณีของฉันฉันได้รับใน boot.log: -

 * การเริ่มต้น haproxy haproxy [ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
[ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
[ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
[ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
[ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
[ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
[ALERT] 346/160552 (927): การเริ่มต้นพร็อกซี haproxy: ไม่สามารถผูกซ็อกเก็ตได้
                                                                         [ล้มเหลว]

การเปลี่ยนหมายเลขเริ่มต้นเป็น 35 ดูเหมือนจะแก้ไขได้ แต่ฉันคิดว่า 36 จะปลอดภัยกว่า (หมายเลขเดิมสำหรับระบบเครือข่ายคือ 35 ดังนั้นควรเริ่มให้ดีที่สุดหลังจากนั้น) ดังนั้นลอง: -

update-rc.d -f haproxy ลบ
update-rc.d haproxy เริ่มต้น 35 2 3 4 5 หยุด 20 0 1 6

จากนั้นรีบูทและควรเรียงลำดับ ผู้ดูแลแพคเกจควรคิดอย่างนี้จริงๆ


SiBaz ไม่แน่ใจว่าอูบุนตูรุ่นใดที่คุณกำลังใช้อยู่ แต่ใน Lucid ระบบมีปัญหาระบบเน็ตเวิร์กเริ่มต้นผ่านการพุ่งพรวดก่อน rc-sysinit เปลี่ยนเป็น runlevel เริ่มต้น (2) ซึ่งเป็นสิ่งที่รัน / etc / rc2 .d สคริปต์
SpamapS

ฉันใช้สุวิมลเช่นกันและฉันสามารถมั่นใจได้ว่าระบบเครือข่ายของคุณไม่ได้เริ่มต้นเมื่อ haproxy เริ่มทำงานผ่าน rc2.d /../ init.d / haproxy ฉันยังสังเกตเห็นว่าสิ่งที่ฉันแนะนำไม่ทำงานดังนั้นฉันจึงต้องเพิ่มเครือข่ายในระดับ rc 2 3 4 5 เพื่อเริ่มก่อน haproxy, เครือข่าย update-rc.d เริ่ม 35 2 3 4 5. ฉันรู้ว่านั่นเป็น แฮ็คเป็นวิธีแก้ปัญหาคือการเพิ่มสคริปต์พุ่งพรวด ฉันได้สร้างข้อบกพร่องกับแพคเกจ haproxy ที่ชัดเจนถึงผลกระทบนั้น

2

ฉันพบปัญหาเดียวกันนี้หลังจากติดตั้งแพคเกจ ubuntu ครั้งแรกและหลังจากนั้น (หลังจากทราบว่าเวอร์ชันไม่รองรับฟีเจอร์ที่ฉันต้องการ) การติดตั้ง pap รุ่นใหม่ของ haproxy สคริปต์ init.d ที่ฉันกระทบกับชี้ไปที่ / usr / sbin / haproxy เมื่อในความเป็นจริงปฏิบัติการของฉันอยู่ใน / usr / local / sbin / haproxy เอาต์พุตการดีบัก "sh -xv /etc/init.d/haproxy start" ที่กล่าวถึงก่อนหน้านี้ทำให้ปัญหานี้ค่อนข้างชัดเจน


ฉันต้องการ upvote นี้อย่างน้อยสองครั้ง
BalázsNémeth

2

คุณพยายามที่จะเริ่มต้นมันเป็นรากหรือด้วย sudo? หากคุณเป็นเหมือนฉันบางครั้งคุณลืมเพิ่ม sudo ที่ด้านหน้าของคำสั่ง ฉันลองใช้คำสั่งทั้งหมดโดยไม่ใช้ sudo และพวกเขาก็ล้มเหลวตามที่คุณอธิบาย อย่างไรก็ตามด้วย sudo ต่อหน้าพวกเขาโดยใช้haproxy.cfgไฟล์เริ่มต้นจากการติดตั้งตอนนี้มันทำงานได้โดยไม่มีปัญหา แค่คิดว่าฉันจะชี้ให้เห็นว่าแม้จะมีการกำหนดค่าที่ถูกต้องสำหรับฉันมันจะไม่ไปโดยไม่ต้อง sudo


:) ใช่แล้วเสร็จเหมือนรูต
Assaf Lavie

1

ฉันเพิ่งพบปัญหาเดียวกันกับสคริปต์ haproxy init.d บน lucid ฉันไม่สามารถเริ่ม haproxy ได้ดังนั้นฉันจึงค้นหาและพบว่าคุณต้องเปลี่ยนตัวแปรเปิดใช้งานใน /etc/init.d/haproxy script

อย่างไรก็ตามการเปลี่ยนตัวแปรนี้ไม่ได้ช่วยอะไรเลยและนี่คือสาเหตุ: มีสองบรรทัดที่ต่ำกว่าใน /etc/init.d/haproxy ตัวแปร ENABLED ถูกตรวจสอบโดยสคริปต์ที่มีบรรทัดต่อไปนี้: ทดสอบ "$ ENABLED"! = "0" || ออก 0 ฉันสังเกตเห็นว่าการทดสอบนี้จะล้มเหลวเสมอในระบบของฉันไม่ว่าสิ่งที่มีค่าเปิดใช้งาน ดังนั้นส่วนที่เหลือของสคริปต์จะไม่ทำงาน

ฉันต้องยอมรับว่าฉันไม่รู้จริง ๆ ว่าเพราะเหตุใดบรรทัดทดสอบนี้จึงทำงานไม่ถูกต้อง แต่เนื่องจากเราต้องการให้ haproxy เปิดใช้งานอยู่ทำไมต้องตรวจสอบอีกครั้ง ... การแสดงความคิดเห็นในบรรทัดทดสอบนี้ทำให้ฉันทำงานได้ดี

หวังว่านี่จะช่วยทุกคน


ฉันคิดว่าคุณควรจะตั้งค่าสถานะที่เปิดใช้งานใน / etc / default / haproxy
UpTheCreek

0

ฉันยังคงจ้องมองที่เศษส่วนอีกครั้งไม่เห็นว่าทำไมมันไม่ทำงานแม้ว่าจะมีการENABLED=1กำหนดไว้ในสคริปต์เริ่มต้น

ในที่สุดหลังจากมองลงมาเล็กน้อยคุณจะเห็นว่า/etc/default/haproxy-fileมีการจัดหาก่อนการทดสอบจึงเขียนทับชุดตัวแปรใน init-script เอง ...


0

วิ่งเข้าไปในปัญหาเดียวกันบนฟ้ากับเดเบียน vm กลายเป็นว่าค่อนข้างง่าย สคริปต์ init ของ haproxy ใช้การอ้างอิงแบบรันไทม์ ในระบบที่เก่ากว่า update-rc.d เป็นวิธีที่จะไป แต่จะใช้ระบบที่ใหม่กว่า: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

ดังนั้นหากคุณใช้ update-rc.d เพื่อเพิ่มบริการ haproxy ในระบบที่ใหม่กว่าคุณควรทำ:

$ sudo update-rc.d -f haproxy ลบ

$ sudo insserv haproxy

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.