sự khác biệt cân bằng tải giữa DNS và IP - chuyển tiếp so với chuyển hướng


9

Tôi đã gặp một tình huống mà tôi không thể hiểu. Chúng tôi có một tường lửa Fortigate mà chúng tôi đã kích hoạt để thực hiện cân bằng tải trên hai máy chủ web Apache back-end. Tên DNS sau đó được ánh xạ tới IP ảo trên Load Balancer.

Như mong đợi, khi bạn duyệt đến tên / URL DNS (ví dụ: www.s Something.com), Trình cân bằng tải sẽ cung cấp một trang từ một trong các máy chủ web Apache phụ trợ. URL trong trình duyệt vẫn ở www.s Something.com . Theo những gì tôi hiểu, Load Balancer trong trường hợp này chỉ đơn giản là chuyển tiếp các gói giữa trình duyệt và Apache trong khi luôn ở trong đường dẫn.

Tuy nhiên, nếu tôi duyệt đến địa chỉ IP mà DNS được ánh xạ tới, thì Trình cân bằng tải sẽ trả về HTTP 302 Found, với tiêu đề Vị trí được đặt thành URL DNS của một trong các Apaches. URL trong trình duyệt thay đổi thành DNS máy chủ phụ trợ.

Tại sao Load Balancer chuyển hướng khi được truy vấn qua IP, nhưng chuyển tiếp chính xác trong đường dẫn khi được truy vấn qua tên DNS.

Câu trả lời:


10

Tôi chưa sử dụng Fortigate FW để cân bằng tải, vì vậy tôi sẽ trả lời một số câu hỏi chung hơn.

Đầu tiên, đối với vấn đề của bạn, bộ cân bằng tải đang hoạt động chính xác như được yêu cầu và tôi nghĩ rằng máy chủ của bạn có thể không được cấu hình đúng để đáp ứng yêu cầu về địa chỉ IP của chúng. Nếu bạn đã kiểm tra điều này đằng sau việc cân bằng tải, bạn có thể đặt tên miền trong tệp máy chủ của máy khách cục bộ, phía sau tường lửa với máy chủ và truy cập cả tên miền và IP nội bộ. Bạn có thể sẽ nhận được kết quả tương tự như bạn đang thấy bây giờ.

Tôi đoán là bạn đã bật lưu trữ ảo (để hỗ trợ nhiều tên miền trên một máy chủ) và "mặc định" không phục vụ các trang giống như tên miền của bạn. Bạn đang nhận được một trang web trở lại từ máy chủ trong cả hai trường hợp. Nếu bạn cần trợ giúp trong việc định cấu hình máy chủ web của mình, bạn có thể muốn thử trên ServerFault .

Thứ hai, để có được một chi tiết hơn một chút. Bộ cân bằng tải thường hoạt động ở L7 cho ít nhất các cụm HTTP và HTTPS. Điều này có nghĩa là họ không chỉ nhìn vào địa chỉ IP và chuyển tiếp nó, mà họ cũng không "chuyển hướng" trang.

Khi họ nhận được yêu cầu, họ thực sự phân tích yêu cầu và chuyển tiếp đến máy chủ sau khi xử lý yêu cầu. Có nhiều điều họ có thể làm vào thời điểm này, chẳng hạn như viết lại các tiêu đề theo cả hai hướng, có khả năng thêm cookie (để duy trì) vào dữ liệu quay lại máy khách, chấm dứt các phiên SSL, khớp dựa trên URL, v.v.

Tôi khuyên bạn nên dành một chút thời gian để đọc đầy đủ các tài liệu của nhà cung cấp để hiểu rõ hơn về cách hoạt động của cân bằng tải (với Fortigate bạn có thể đọc cả hai điểm của họ và Coyote Point - một công ty cân bằng tải khác mà Fortigate mua lại). Hiểu những gì nó đang làm sẽ giúp bạn trong những trường hợp như thế này và sẽ cho phép bạn mở khóa các khả năng mà bạn không nhận ra đã tồn tại.


Vấn đề là một cấu hình trên máy chủ web Apache back-end. Tên DNS mới cần được thêm vào dưới dạng Bí danh.
Yusuf

3

Sau khi đọc cân bằng tải dựa trên máy chủ HTTP trong tài liệu Cân bằng tải Fortigate , tôi có thể thấy cách bạn có thể có cấu hình cân bằng tải không điển hình có thể dẫn đến những gì bạn mô tả. Tuy nhiên, không có một phần cấu hình của bạn, chúng tôi không thể chắc chắn nếu đây là trường hợp dành cho bạn.

Fortigate FortiOS cho phép tạo Máy chủ ảo được gắn với Máy chủ thực mà mỗi Máy chủ có cấu hình tiêu đề máy chủ khác nhau . Nếu bất kỳ yêu cầu nào khớp với VIP của Máy chủ ảo của bạn, các yêu cầu cân bằng tải sẽ chỉ chuyển đến Máy chủ thực phù hợp với điều đó host header. Phần quan trọng nhất giải thích các triệu chứng của bạn, là một trong các Máy chủ thực sự có thể bỏ qua tiêu đề máy chủ để nó khớp với bất kỳ tiêu đề máy chủ nào .

Máy chủ thực sự không có tiêu đề máy chủ có thể đã được định cấu hình như một loại "bắt tất cả" nằm trên một trang web thực hiện chuyển hướng.

Sử dụng ví dụ bên dưới, chỉ các rservers thứ 1 và 2 xử lý lưu lượng phù hợp với tên DNS ưa thích của bạn thông qua tiêu đề máy chủ, nhưng rserver thứ 3 lấy bất cứ thứ gì khớp với tất cả các tiêu đề máy chủ khác bao gồm chính DNS VIP và gửi đến một trang web có thể chuyển hướng .

cấu hình tường lửa vip
 chỉnh sửa "http-host-ldb"
  thiết lập cân bằng tải máy chủ
  đặt extip 192.0.2.1
  đặt extintf "lan"
  đặt http loại máy chủ
  đặt máy chủ http-ldb-method
  đặt extport 80
  cấu hình máy chủ
    chỉnh sửa 1
      đặt máy chủ http "www.example.com"
      đặt ip 192.168.2.1
      đặt cổng 80
      kế tiếp
    chỉnh sửa 2
      đặt máy chủ http "www.example.com"
      đặt ip 192.168.2.2
      đặt cổng 80
      kế tiếp
    chỉnh sửa 3
      đặt ip 192.168.2.3
      đặt cổng 80
      kế tiếp
    kết thúc
 kết thúc

Tôi cho rằng việc cân bằng tải tường lửa có thể tự thực hiện chuyển hướng, nhưng chúng ta không thể biết được thông tin hạn chế được cung cấp.


Trong cấu hình này, nó được đặt thành khớp tên dựa trên. Và đó là vấn đề. Nếu bạn đi đến VIP theo địa chỉ, nó sẽ không biết phải làm gì với nó. (quy tắc NAT bình thường sau đó sẽ được áp dụng)
Ricky Beam

Lý do chính khiến tôi không tin đây là câu trả lời là vì không có bộ cân bằng FW / tải mà tôi biết sẽ trả về 302 với vị trí được đặt thành tên máy chủ / tên miền của tài nguyên nội bộ (ít nhất là không cấu hình cụ thể để làm vì vậy, điều này không có vẻ là trường hợp dựa trên câu hỏi).
YLearn

@RickyBeam, chỉ người đầu tiên sử dụng rservers mới khớp tên máy chủ. Rserver cuối cùng sẽ khớp với địa chỉ VIP là máy chủ lưu trữ.
generalnetworkerror

@YLearn, tôi đồng ý rằng điều này sẽ là kỳ lạ; Tôi đã nói rằng rserver, không phải LB, sẽ thực hiện 302 và sẽ có cấu hình ong để làm như vậy. Tôi biết không có LB nào sẽ làm điều đó.
generalnetworkerror
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.