มีโจทย์ว่าจะต้องทำ Load balance มาครอบ Middleware ชุดหนึ่ง ก็เลยจะเอา HAProxy
มาใช้ แต่เคยใช้แต่ใน mode http ก็เลยไม่มั่นใจว่าจะทำได้ไหม เลยลองทำ Lab เล่นดู
มาเริ่มกันเลย ผมจะทำ TCP Server กับ Client ขึ้นมาก่อน
Simple TCP Server.go
มาดูฝั่ง Client.go กันบ้าง
ทดลอง run ดูก่อนว่าทำงานได้ไหม
ทุกอย่างเป็นไปได้สวย ต่อไปเราลองมาจับ server.go ยัดลงไปใน Docker เพื่อทำให้เหมือนสถานการณ์จริง ผมเปลี่ยนเป็น worker1 กับ worker2 เพื่อที่จะได้ระบุถูกว่า client เราต่อไปที่เครื่องไหน
Create worker1 (สร้าง directory worker1 แล้วเรา server.go ไปว่างรอไว้)
Create worker2
ต่อมาสร้าง file haproxy.cfg แบบง่ายๆ ก่อนกัน
เราใช้ mode เป็น tcp และ algorithm เป็น roundrobin คือสลับไปเรื่อยๆ
Create haproxy1
link ที่กำหนดลงไปมาจาก Container name ของ TCP Server ที่ทำไว้ก่อนหน้า
จริงๆ แล้วเราไม่ต้อง expose port ของ worker ก็ได้ เพราะ link ใน docker มันจะทำการ map port ให้เราเอง
List process ดูว่าทุกตัว run อยู่
ลองมาเทสกันครับ
Good jobs, well done!
Haproxy configuration