Thiết lập Haproxy với thiết lập tên miền phụ


8

Hy vọng ai đó có thể giúp xác nhận nếu điều này giả sử để làm việc? Tôi đang cố định tuyến 3 lưu lượng truy cập tên miền đến cùng một máy chủ haproxy;

Đây là thiết lập của tôi

haproxy với một giao diện ip 10.10.10.100 và tên dns haproxy01.mydomain.com

3 hồ sơ CNAME liên quan đến nó; sub1.mydomain.com, sub2.mydomain.com và sub3.mydomain.com

tất cả lưu lượng đến là cho cổng 443.

Có hai máy chủ ứng dụng phía sau chấp nhận lưu lượng trên ba cổng 8081, 8082, 8083, giả sử;

sub1.mydomain.com cho 8081 sub2.mydomain.com cho 8082 và sub3.mydomain.com cho 8083

Ứng dụng yêu cầu SSL chuyển qua chỉ với lưu lượng cổng 8081 nên tôi tin rằng tôi đã sử dụng chế độ tcp cho nó, lưu lượng khác cho 8082 và 8083 cũng là SSL nhưng nó có thể bị chấm dứt tại Haproxy nhưng đối với thử nghiệm tôi đã sử dụng với tất cả TCP chế độ.

Phần cấu hình của tôi để đạt được điều này là dưới đây;

    #Application Setup 
frontend mytraffic
    bind *:443
    mode  tcp
    acl host_sub1 hdr(host) -i sub1.mydomain.com
    acl host_sub2 hdr(host) -i sub2.mydomain.com
    acl host_sub3 hdr(host) -i sub3.mydomain.com

    use_backend sub1_nodes if host_sub1
    use_backend sub2_nodes if host_sub2
    use_backend sub3_nodes if host_sub3

    option tcplog backend sub1_nodes
    mode tcp
    balance roundrobin
    stick-table type ip size 200k expire 30m
    stick on src
    server node1 10.10.10.101:8081 check
    server node2 10.10.10.102:8081 check 
backend sub2_nodes
    mode tcp
    balance roundrobin
    stick-table type ip size 200k expire 30m
    stick on src
    server node1 10.10.10.101:8082 check
    server node2 10.10.10.102:8082 check 
backend sub3_nodes
    mode tcp
    balance roundrobin
    stick-table type ip size 200k expire 30m
    stick on src
    server node1 10.10.10.101:8083 check
    server node2 10.10.10.102:8083 check


    # APPLICATION SETUP END

Khi tôi cố gắng truy cập các máy chủ ứng dụng thông qua HAproxy, ví dụ cho lưu lượng 8082, nó sẽ ném đây là nhật ký;

localhost haproxy [6097]: xxxx: 51241 [20/03/2015: 12: 19: 38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0 0/0

đánh giá cao một số hướng liên quan đến thiết lập này.

PS Tôi không thể nhúng bất kỳ hình ảnh nào cho rõ ràng ở đây vì đây là bài đăng đầu tiên của tôi :-(


thông điệp tường trình không đầy đủ; 20/03/19 12:38: 0/0 0/0
Học toàn cầu

NOSRV có nghĩa là nó không thể tìm thấy một phụ trợ phù hợp. Bạn có thể truy cập trang thống kê hoặc ổ cắm và xem những gì phụ trợ mà HAproxy nghĩ là không?
Jim G.

Đồng thời kiểm tra xem có kết nối giữa haproxy và các máy chủ ứng dụng không. Nếu sử dụng nc: nc -v 10.10.10.101 8081, nc -v 10.10.10.102 8081, v.v.
hdanniel 20/03/2015

Kiểm tra cuối cùng trên bảng điều khiển giám sát haproxy đang báo cáo tất cả các nút lên. Tôi cũng đã xác nhận kết nối từ bảng điều khiển Haproxy đến các máy chủ ứng dụng này trên tất cả các cổng.
Học toàn cầu

@HD có, kết nối tốt trên cả hai nút.
Học toàn cầu

Câu trả lời:


11

Với chế độ TCP, HAProxy sẽ không giải mã được yêu cầu HTTP, do đó, các acldòng của bạn sẽ không làm gì cả và giao diện sẽ không bao giờ có thể khớp với một phụ trợ, như được hiển thị bởi nhật ký bạn đã nhập: mytraffic/<NOSRV>có nghĩa là nó không thể chọn phụ trợ hoặc máy chủ.

Bạn phải chia 3 tên miền phụ thành 2 tên miền khác nhau, mỗi tên miền có IP riêng vì tất cả chúng đều kết nối trên cổng 443. Một tên miền để vượt qua, cái còn lại để chấm dứt SSL và chuyển đổi nội dung bằng cách sử dụng mode http. Thông báo trước ở đây là nếu bạn muốn thêm một tên miền phụ thứ 4 (sub4.mydomain.com) cũng yêu cầu thông qua, thì bạn sẽ cần một giao diện thứ 3 và IP.

Bạn cũng cần tạo các bản ghi CNAME hoặc A khác nhau trong DNS để các tên miền phụ bên phải trỏ đến đúng IP.

Cho cấu hình DNS này:

10.10.10.100        A         haproxy01-cs.mydomain.com
10.10.10.101        A         haproxy01-pt1.mydomain.com
10.10.10.102        A         haproxy01-pt2.mydomain.com
sub1.mydomain.com   CNAME     haproxy01-pt1.mydomain.com
sub2.mydomain.com   CNAME     haproxy01-cs.mydomain.com
sub3.mydomain.com   CNAME     haproxy01-cs.mydomain.com
sub4.mydomain.com   CNAME     haproxy01-pt2.mydomain.com

Cấu hình HAproxy sẽ trông giống như thế này:

#Application Setup 
frontend ContentSwitching

  bind 10.10.10.100:443
  mode  http
  option httplog
  acl host_sub2 hdr(host) -i sub2.mydomain.com
  acl host_sub3 hdr(host) -i sub3.mydomain.com
  use_backend sub2_nodes if host_sub2
  use_backend sub3_nodes if host_sub3

frontend PassThrough1
  bind 10.10.10.101:443
  mode  tcp
  option tcplog
  use_backend sub1_nodes     

frontend PassThrough2
  bind 10.10.10.102:443
  mode  tcp
  option tcplog
  use_backend sub4_nodes

backend sub1_nodes
  mode tcp
  balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server node1 10.10.10.101:8081 check
  server node2 10.10.10.102:8081 check 

backend sub2_nodes
  mode http
  balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server node1 10.10.10.101:8082 check
  server node2 10.10.10.102:8082 check 

backend sub3_nodes
  mode http
  balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server node1 10.10.10.101:8083 check
  server node2 10.10.10.102:8083 check

backend sub4_nodes
  mode tcp
  balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server node1 10.10.10.101:8084 check
  server node2 10.10.10.102:8084 check

Trên thực tế, các IP tôi có ở đây không có ý nghĩa gì (tôi đã sử dụng 10.10.10.101-102 cho các giao diện người dùng nơi bạn đã gán chúng cho các nút), nhưng bạn hiểu ý tưởng của nó.
GregL

@GreL - CẢM ƠN BẠN. Tôi sẽ thử điều này và khoanh tròn với kết quả. Tôi đã lo lắng về chế độ tcp và sử dụng acl trước khi sử dụng nó.
Học toàn cầu

Cảm ơn GregL. nó hoạt động Một câu hỏi cuối cùng nếu tôi có thể? để có SSL từ máy khách -> haproxy và đến haproxy -> máy chủ phụ trợ (giống như nó có thể chấm dứt nhưng bắt đầu một cái mới cho phụ trợ), cách làm nào được đề xuất? ssl đi qua với chế độ tcp? Lý do tôi muốn thông qua lưu lượng truy cập cổng 8081 là vì yêu cầu phải có phiên xác thực lẫn nhau với ứng dụng và máy khách. Phần còn lại của lưu lượng cổng 8082 và 8083 yêu cầu ssl nhưng nó không yêu cầu xác thực lẫn nhau. (ngay bây giờ tôi đã đi với cách tiếp cận thông qua).
Học toàn cầu

Chà, HAProxy có thể thực hiện kiểm tra chứng chỉ ứng dụng khách bằng cách sử dụng ca-fileverify optionalcác tùy chọn cho bindcâu lệnh. Nếu bạn đã làm điều đó, bạn có thể có một giao diện duy nhất được liên kết với một IP và sau đó nội dung chuyển sang các phụ trợ phù hợp theo yêu cầu của tiêu đề máy chủ . Để xác nhận rằng xác thực lẫn nhau hoạt động, bạn có thể tạo một acl like acl ClientSSLValid ssl_c_verify 0, sau đó thêm nó như một điều kiện khác vào use_backendcâu lệnh nhưuse_backend sub1_nodes if host_sub1 ClientSSLValid
GregL

Có nhiều bài viết hay ở đâyở đây về cách thực hiện điều này, với nhiều chi tiết hơn tôi đã cung cấp.
GregL 20/03/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.