วิธีกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket

Withi Kahnd Kha Haproxy Sahrab Kar Cheuxm Tx Websocket



แอปพลิเคชัน WebSocket มีการสื่อสารแบบเรียลไทม์และสองทิศทางระหว่างไคลเอนต์และเซิร์ฟเวอร์ แม้ว่าจะมีการเชื่อมต่อ WebSocket คุณยังคงต้องมีวิธีในการกระจายการรับส่งข้อมูลเพื่อหลีกเลี่ยงการโอเวอร์โหลดเซิร์ฟเวอร์ ซึ่งจะทำให้เซิร์ฟเวอร์หยุดทำงานและไม่พร้อมใช้งาน

HAProxy เป็นตัวอย่างของโหลดบาลานเซอร์ฟรีและเชื่อถือได้ ซึ่งทำงานเป็นพร็อกซีย้อนกลับด้วย คุณสามารถกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket เพื่อใช้คุณสมบัติของ WebSockets ได้ดียิ่งขึ้น โดยเฉพาะอย่างยิ่งในการถ่ายโอนข้อมูลแบบเรียลไทม์ ในขณะที่ลดภาระของเซิร์ฟเวอร์โดยใช้ HAProxy โพสต์นี้นำเสนอขั้นตอนที่จำเป็นทั้งหมดในการกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket

คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket

ด้วยการเชื่อมต่อ WebSocket การสื่อสารระหว่างเซิร์ฟเวอร์และไคลเอนต์จะมีอายุการใช้งานยาวนาน จะคงอยู่จนกว่าเซิร์ฟเวอร์หรือไคลเอนต์จะตัดสินใจปิด ด้วยเหตุนี้ การมีวิธีทำงานร่วมกับโหลดบาลานเซอร์จึงทำให้มั่นใจได้ว่าการรับส่งข้อมูลสามารถกระจายไปยังเซิร์ฟเวอร์อื่นได้ หากเซิร์ฟเวอร์โอเวอร์โหลด ด้วยวิธีนี้ ไคลเอนต์และเซิร์ฟเวอร์สามารถเพลิดเพลินกับการเชื่อมต่อที่ไม่ขาดตอนและยาวนานโดยมีความหน่วงต่ำ







1. ติดตั้ง HAProxy

ขั้นตอนแรกในการกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket คือต้องแน่ใจว่าคุณได้ติดตั้ง HAProxy แล้ว หากคุณติดตั้งไว้แล้ว ให้ข้ามขั้นตอนนี้ มิฉะนั้น ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง:



$ ซูโดะ apt-get ติดตั้ง haproxy



2. แก้ไขการกำหนดค่า HAProxy

ในการกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket เราต้องแก้ไขการกำหนดค่า HAProxy เพื่อรองรับการเชื่อมต่อ WebSocket เราต้องแก้ไขส่วน 'ค่าเริ่มต้น' และสร้างส่วน 'ส่วนหน้า' และ 'แบ็กเอนด์'





เปิดการกำหนดค่า HAProxy โดยใช้โปรแกรมแก้ไขข้อความดังต่อไปนี้:

$ ซูโดะ นาโน / ฯลฯ / haproxy / haproxy.cfg

ในส่วน 'ค่าเริ่มต้น' ให้แก้ไขตามที่แสดงในรูปภาพต่อไปนี้ ขั้นแรก เราระบุว่าเรากำลังทำงานกับการเชื่อมต่อ HTTP และกำหนดตำแหน่งที่จะส่งไฟล์บันทึก ต่อไป เราจะตั้งค่าการหมดเวลาสำหรับกิจกรรมต่างๆ ตัวอย่างเช่น การเชื่อมต่อระยะหมดเวลาคือเวลาสูงสุดที่ความพยายามเชื่อมต่อกับเซิร์ฟเวอร์ควรใช้ หากถึงเวลาสูงสุด การเชื่อมต่อจะถือว่าล้มเหลวและสามารถลองใหม่ได้



ในกรณีนี้ เราตั้งค่าการหมดเวลาเชื่อมต่อเป็น 5,000 มิลลิวินาที คุณสามารถปรับการหมดเวลาเพื่อให้เห็นว่าเหมาะกับกรณีของคุณมากที่สุดอย่างไร ปรับตามแอปพลิเคชันของคุณ และจดจำระยะเวลาของเซสชัน WebSocket และระยะเวลาที่คุณคาดหวังไว้

ต่อไป เราต้องสร้างส่วน 'ส่วนหน้า' ที่เราผูกพอร์ตที่จะใช้สำหรับการเชื่อมต่อ WebSocket และเซิร์ฟเวอร์แบ็กเอนด์ใดที่จะอ้างอิง ในกรณีนี้ เราระบุพอร์ต 80 และให้ URL เพื่อเข้าถึงหน้า 'สถิติ' เพื่อตรวจสอบ HAProxy ของเรา สุดท้ายนี้ เรากำหนดว่าส่วนแบ็กเอนด์ใดที่จะอ้างอิงในการจัดสรรภาระงาน

ในส่วน 'แบ็กเอนด์' เรากระจายโหลดโดยใช้ Round Robin “ตัวเลือกการส่งต่อสำหรับ” ระบุให้ HAProxy รวมส่วนหัว “X-Forward-For” ที่มีที่อยู่ IP ของลูกค้าเมื่อส่งคำขอการเชื่อมต่อ ด้วยวิธีนี้ เซิร์ฟเวอร์แบ็กเอนด์จะได้รับ IP ไคลเอ็นต์ที่ถูกต้อง

“ตัวเลือก http-server-close” จะจำกัดทรัพยากรโดยกำจัดการเชื่อมต่อที่ไม่ได้ใช้งานใดๆ ไม่ให้กินทรัพยากรเซิร์ฟเวอร์ แม้ว่าการเชื่อมต่อ WebSocket จะมีอายุการใช้งานยาวนาน แต่เราต้องตรวจสอบการเชื่อมต่อที่มีอายุการใช้งานยาวนานและปิดการเชื่อมต่อเพื่อหลีกเลี่ยงการสิ้นเปลืองทรัพยากรโดยไม่จำเป็น

สุดท้าย เพิ่มเซิร์ฟเวอร์แบ็กเอนด์ที่คุณจะใช้เพื่อกระจายการรับส่งข้อมูล ตรวจสอบให้แน่ใจว่าคุณได้ให้ที่อยู่ IP ที่ถูกต้องสำหรับเซิร์ฟเวอร์และแทนที่ที่อยู่ในภาพต่อไปนี้:

ขณะนี้ HAProxy ของคุณได้รับการกำหนดค่าสำหรับการเชื่อมต่อ WebSocket แล้ว บันทึกการเปลี่ยนแปลงและปิดไฟล์

3. ทดสอบความถูกต้อง

ก่อนที่เราจะรีสตาร์ท HAProxy เราสามารถรันคำสั่งด่วนเพื่อตรวจสอบว่าไฟล์นั้นถูกต้องและไม่มีข้อผิดพลาดหรือไม่ เพื่อให้รันคำสั่งต่อไปนี้:

$ ซูโดะ haproxy -ค -ฉ / ฯลฯ / haproxy / haproxy.cfg

4. รีสตาร์ทและทดสอบการเชื่อมต่อ WebSocket

เมื่อไฟล์ถูกต้องแล้ว ให้เริ่มบริการ HAProxy ใหม่

แค่นั้นแหละ. คุณได้กำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket คุณสามารถทดสอบการเชื่อมต่อเพื่อให้แน่ใจว่าการรับส่งข้อมูล WebSocket ทั้งหมดได้รับการส่งต่ออย่างถูกต้อง

บทสรุป

การกำหนดค่า HAProxy สำหรับการเชื่อมต่อ WebSocket เป็นโซลูชันที่เป็นที่ต้องการ โดยเฉพาะจากผู้ดูแลระบบเว็บ โพสต์นี้อธิบายกระบวนการโดยละเอียด โดยให้ขั้นตอนและตัวอย่างเพื่อให้แน่ใจว่าคุณปฏิบัติตามและจัดการเพื่อนำไปใช้ในกรณีของคุณได้อย่างสะดวกสบาย ทำตามขั้นตอนแต่ละขั้นตอนและตรวจสอบให้แน่ใจว่าคุณเข้าใจแนวคิดและกระบวนการในการนำไปปฏิบัติ