ฉันมีการกำหนดค่า HAProxy ต่อไปนี้:
ฟัง sni-443
ผูก *:443
โหมด tcp
หมดเวลาเชื่อมต่อ 4 วินาที
ลูกค้าหมดเวลา 3m
หมดเวลาเซิร์ฟเวอร์ 3m
tcp-request ตรวจสอบ-delay 5 วินาที
เนื้อหาคำขอ tcp ยอมรับหาก { req.ssl_hello_type 1 }
acl ไม่มี ssl req.ssl_hello_type 0
ใช้เซิร์ฟเวอร์ backend1.default.svc.cluster.local ถ้า !no-ssl { req_ssl_sni -i www.example.com }
เซิร์ฟเวอร์ backend1.default.svc.cluster.local 10.96.245.95:443 น้ำหนัก 0
ใช้เซิร์ฟเวอร์ backend2.default.svc.cluster.local ถ้า !no-ssl { req_ssl_sni -i demo.example.com }
เซิร์ฟเวอร์ backend2.default.svc.cluster.local 10.96.184.199:443 น้ำหนัก 0
ถ้าฉันไปเยี่ยม www.example.com
, ทุกอย่างปกติดี. แต่เมื่อฉันทำเช่นนั้นหลังจากโหลดใหม่ การสาธิต.example.com
ด้วยความถี่สูง (การกด Shift-Ctrl-R ในเบราว์เซอร์) จบลงที่ การสาธิต.example.com
. ใช่แน่นอน: ฉันเปิด www.example.com
ในเบราว์เซอร์ แต่ HAProxy กำหนดเส้นทางนั้นไปยัง backend2 (ซึ่งส่งคืนข้อผิดพลาด)
เห็นได้ชัดว่า HAProxy ไม่เข้าใจอย่างถ่องแท้ว่าบริการทั้งสองไม่ใช่ทางเลือกอื่นสำหรับการทำโหลดบาลานซ์ แต่เป็นผลิตภัณฑ์ที่แตกต่างกันมาก ฉันสามารถ ทำให้มั่นใจ นั่น www.example.com
ลงท้ายด้วย backend1?