จะเปลี่ยนเส้นทางการรับส่งข้อมูลตามชื่อโฮสต์โดยใช้ HAProxy อย่างไร


17

ฉันประสบความสำเร็จในเบื้องต้นด้วยการตั้งค่า HAProxy เซิร์ฟเวอร์แอพจำนวนมากที่ฟังพอร์ตอื่น ๆ

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

ต่อไปนี้เป็นการตั้งค่าปัจจุบันสมมติว่า:

  • เว็บเซิร์ฟเวอร์ apache ของฉันทำงานที่ examplecom: 8001
  • เซิร์ฟเวอร์แอปของฉันเป็นกลุ่ม 0.0.0.0:8081, 0.0.0.0:8082, 0.0.0.0:8083
global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  maxconn 4096
  debug
  #quiet
  #user haproxy
  #group haproxy

defaults
  log global
  mode  http
  option  httplog
  option  dontlognull
  retries 3
  redispatch
  maxconn 2000
  contimeout  5000
  clitimeout  50000
  srvtimeout  50000

listen appservers 0.0.0.0:80
  mode http
  balance roundrobin
  option httpclose
  option forwardfor
  #option httpchk HEAD /check.txt HTTP/1.0
  server  inst1 0.0.0.0:8081 cookie server01 check inter 2000 fall  3
  server  inst2 0.0.0.0:8082 cookie server02 check inter 2000 fall  3
  server  inst3 0.0.0.0:8083 cookie server01 check inter 2000 fall  3
  server  inst4 0.0.0.0:8084 cookie server02 check inter 2000 fall  3
  capture cookie vgnvisitor= len 32

(ความคิดเห็นอื่น ๆ เกี่ยวกับ ^ เซ็ตยินดีต้อนรับ)

ตอนนี้ฉันต้องการดำเนินการต่อไปข้างต้น แต่ในกรณี - ถ้าชื่อโฮสต์คือ myspecialtopleveldomain <dot> com แล้วต้องการไหลปริมาณข้อมูลไปยังตัวอย่าง <dot> com: 8001

~ B


2
เป็นไปได้ที่จะส่งคำขอไปยังเซิร์ฟเวอร์ที่แตกต่างกันตามชื่อโฮสต์โดยใช้การกำหนดค่าส่วนหน้าและส่วนหลัง คำถามของคุณค่อนข้างสับสน แต่คุณพูดถึง example.com:8001 แต่มันไม่ได้อยู่ในการกำหนดค่าทุกที่ นั่นคือปลายทางสำหรับการร้องขอไปยัง myspecialtopleveldomain.com บนพอร์ต 80 หรือไม่ บางทีคุณอาจให้ URL ตัวอย่างสองสามตัวอย่างที่ผู้ใช้ป้อนและที่คุณต้องการให้ URL เหล่านั้นส่งโดย haproxy
ThatGraemeGuy

คำตอบ:


24

นี่คือตัวอย่าง:

frontend http
        bind 0.0.0.0:80
        default_backend www
        # NAT static host names and static paths in other hostnames to a different backend
        acl host_static hdr_beg(host) -i static.
        acl url_static  path_beg         /static
        use_backend static if host_static or url_static

backend www
        balance roundrobin
        server  qa1 10.177.1.81:80
        server  qa2 10.177.1.45:80

backend static
        balance roundrobin
        server  media1 10.177.0.86:80

ขอบคุณสำหรับการกำหนดค่าตัวอย่างคุณเพิ่งช่วยฉันสรุปการกำหนดค่าโหลดบาลานเซอร์ของเรา :)
isNaN1247
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.