HAProxy
Setup
Installation
การติดตั้ง HAProxy ลงใน linux server สามารถติดตั้งได้โดยการใช้คำสั่ง apt install
Check version
เนื่องจากความต่างกันของ version จะส่งผลถึง parameter หรือ syntax ในตัวไฟล์ configuration อย่างไรก็ตาม แนะนำให้ตรวจสอบอีกครั้งกับ HAProxy Documentation
Configuration
Editing HAProxy configuration file
ไฟล์ configuration จะถูกจัดเก็บอยู่ที่ directory /etc/haproxy/haproxy.cfg
สามาถเข้าถึงไฟล์ได้โดยการใช้คำสั่งแก้ไขไฟล์เช่น nano
หรือ vi
หรือ cat
ไฟล์ haproxy.cfg
ตือไฟล์ที่จะเก็บค่าที่เราตั้งค่าให้กับตัว proxy ไปใช้ ดังนั้นการตั้งค่าทั้งหมดจะถูกแก้ไขที่นี่
Tip
เครื่องมือ nano
สามารถ save โดยกดปุ่ม Ctrl+X และ Enter
ตัวอย่างไฟล์ haproxy.cfg
การตั้งค่าจะมีด้วยกัน 3 ส่วนหลัก ๆ ได้แก่ ตั้งค่า SSL Certificate, ตั้งค่า frontend และ ตั้งค่า backend
Normal deployment
สำหรับการ deployment แบบปกติไม่ต้องทำ reverse-proxy สามารถใช้ไฟล์ดังนี้
เปลี่ยน reqadd
เป็น http-request add-header
ไฟล์ certificate .pem
ไฟล์ certificate .pem
สามารถขอได้จากผู้ดูแลระบบเครือข่าย ไฟล์ certificate จะมี expire date หรือวันหมดอายุ กรุณาตรวจสอบก่อนติดตั้งและเปลี่ยนก่อนจะครบวันหมดอายุ
Meaning of configuration file
บรรทัด | ความหมาย | สิ่งที่จะต้องทำ |
---|---|---|
1-13 | ส่วนของการประกาศตัวแปร global | - |
15-30 | ค่า default ที่จะถูกใช้ในทุกๆ frontend | - |
32-43 | การกำหนด frontend จะเป็นส่วนที่บอกว่าจะมีการใช้ port ไหนบ้าง, ไฟล์ SSL Certificate สำหรับการใช้งาน https, การกำหนดให้บังคับใช้ https เท่านั้น ถ้ามีการเข้าผ่าน http จะถูก redirect ไปยัง https โดยอัตโนมัติ และการประกาศใช้ backend ถ้ามีการผ่านของเงื่อนไข domain name | บรรทัดที่ 34 => แก้ไขที่อยู่ของไฟล์ certificate , บรรทัดที่ 43 => แก้ไขชื่อของ backend และ domain name ภายในการตรวจสอบเงื่อนไข hdr(host) -i {your-domain-name} |
45+ | การกำหนด backend จะเป็นส่วนที่จะกำหนดว่ามี server หรือ container กี่ตัว ที่อยู่ที่ ip address ไหนบ้าง และจะกำหนดว่าจะส่งค่าอะไรไปให้ service ที่ run อยู่ข้างหลังผ่าน request header และหากมีมากกว่า 1 server จะทำการ load balance แบบ roundrobin | บรรทัดที่ 50 => แก้ไข server-name เป็นชื่อ สามารถใช้ชื่ออะไรก็ได้ให้สื่อถึง service นั้นๆ สามารถมีได้มากกว่า 1 server |
Reverse-proxy deployment
สำหรับการ deployment แบบ reverse-proxy ให้แก้ไขส่วนของ backend โดยการเพิ่ม 2 บรรทัดดังนี้
ในบรรทัดที่ 9 ไม่ต้องใส่ check-ssl verify none
แล้วเนื่องจากเป็นการใช้งานผ่าน http
Validate and Applying
Validating configuration file
ตรวจสอบความถูกต้องของการตั้งค่า proxy ก่อนจะสั่ง restart เพื่อ apply ค่าไปใช้จริง
Restart HAProxy to apply configuration
หลังจากแก้ไขเสร็จสิ้น ค่า configuration จะไม่ถูกนำไปใช้ทันทีเนื่องจาก HAProxy ได้มีการ load ไฟล์ไปอ่านตั้งแต่ตอน start service แล้ว ดังนั้นการ apply ค่าชุดใหม่จะต้องใช้คำสั่ง restart service หรือ systemctl restart
ณ ขั้นตอนนี้ ไฟล์ configuration ที่ถูกแก้จะถูก compile ถ้ามีส่วนที่ error จะต้องกลับไปแก้ไข โดยสามารถดู logs การ complie ได้จากคำสั่ง
ข้อควรระวัง
การแก้ไข proxy จะส่งผลต่อการใช้งาน ณ ขณะนั้น ไม่ควรแก้ไขระหว่างมีการใช้งานของผู้ใช้ หาก proxy ไม่สามารถ start ได้ ผู้ใช้ก็จะไม่สามารถเข้าถึง container ภายในได้
Trobleshooting HAProxy
การแก้ไขปัญหาเพิ่มเติมอ่านต่อได้ที่ How To Troubleshoot Common HAProxy Errors