ฟัง mqtt-ssl
ผูก *:8883 ssl no-sslv3 crt /my.pem ตรวจสอบไฟล์ ca ที่จำเป็น /my/pem/all_cas.pem crl-file /my/pem/all_crls.pem
โหมด tcp
ตัวเลือก tcplog
เข้าสู่ระบบทั่วโลก
แม็กซ์คอน 50000
tcp-request ตรวจสอบ-ล่าช้า 30 วินาที
use_backend pki ยกเว้นว่า { req.payload(0,0),mqtt_is_valid }
default_backend emqx_k8s_svc
pki แบ็กเอนด์
โหมด http
เซิร์ฟเวอร์ pki.my.domain someIP:443 ssl ยืนยันว่าไม่มี
แบ็กเอนด์ emqx_k8s_svc
โหมด tcp
เข้าสู่ระบบทั่วโลก
เซิร์ฟเวอร์ emqx1 emqx-ee.emqx:1883 ตรวจสอบระหว่าง 30s downinter 30s ตก 1 เพิ่มขึ้น 1
จากข้อมูลโค้ด haproxy.cfg ข้างต้น ฉันยืนยันปัญหาต่อไปนี้:
เมื่อฉันทำการ curl/wget ในที่อยู่ที่ฟัง คำขอจะถูกส่งต่อไปยัง pki แบ็กเอนด์
เท่าที่ควร แต่ในขณะเดียวกัน เมื่อพยายามเชื่อมต่อกับ แบ็กเอนด์ emqx_k8s_svc
ไคลเอนต์ Mosquitto ยังคงถูกบล็อกที่ "กำลังส่ง CONNECT" และไม่มีการสร้างการเชื่อมต่อ
ฉันจะมีเงื่อนไขได้อย่างไรว่าหากเพย์โหลดคำขอเป็นประเภท MQTT ให้ส่งต่อไปยัง default_backend
และถ้าการเชื่อมต่อไม่ใช่ MQTT (เช่น ไคลเอนต์ http) ให้ส่งต่อไปยัง pki แบ็กเอนด์
.
ฉันได้ลองสิ่งต่อไปนี้แล้ว โดยไม่มีการแก้ไข:
tcp-request ตรวจสอบ-ล่าช้า 30 วินาที
use_backend pki ถ้า !{ req.payload(0,0),mqtt_is_valid }
use_backend emqx_k8s_svc ถ้า { req.payload(0,0),mqtt_is_valid }
default_backend emqx_k8s_svc
------------------------------
tcp-request ตรวจสอบ-delay 10 วินาที
use_backend pki ถ้า { ssl_fc }
use_backend emqx_k8s_svc ถ้า { req.payload(0,0),mqtt_is_valid }
default_backend emqx_k8s_svc
หมายเหตุ: ทั้งหมดทำงานในสภาพแวดล้อม Kubernetes ยกเว้น pki แบ็กเอนด์
ซึ่งอยู่ที่อื่น (แต่สามารถเข้าถึงได้) - รุ่น HAProxy: 2.5