SNAT vs PBR cho Cân bằng tải máy chủ


8

Trong cấu hình SLB một vũ trang, SNAT được sử dụng để buộc lưu lượng truy cập trở lại đi qua SLB. Điều này có một tiêu cực: đơn giản là nhật ký web không thể thu được IP máy khách thực sự trừ khi được chuyển trong tiêu đề XFF (X-Forwarded-For) và máy chủ web có thể đăng nhập.

Một cách khác là sử dụng PBR (định tuyến dựa trên chính sách) để đưa lưu lượng truy cập trở lại SLB, nhưng tôi cố gắng tránh PBR trừ khi không có giải pháp nào khác / tốt hơn Trên nền tảng 6500E với SUP720 / PFC3B - và tôi biết cụ thể Phiên bản iOS cũng có thể là một yếu tố - PBR có thêm bất kỳ độ trễ nào khi thực hiện SNAT giả sử PBR hoàn toàn được thực hiện trong phần cứng không? Nếu PBR được thực hiện trong phần cứng chỉ sử dụng các lệnh được hỗ trợ bởi ngày hôm nay, thì việc nâng cấp IOS trong tương lai có thể thay đổi PBR để được thực hiện trong phần mềm / chuyển đổi quy trình không?

Ngày nay, các bộ cân bằng tải của chúng tôi có hầu hết các Vlan máy chủ web ngay sau chúng - g / w mặc định trỏ đến SLB - và các máy chủ khác như SQL trong các Vlan không SLB. Tuy nhiên, lưu lượng truy cập web-sql này vượt qua SLB. Mục tiêu của chúng tôi là tránh vượt qua SLB và chỉ tách riêng lưu lượng SQL và vẫn giữ được máy khách thực sự trong nhật ký web. Tôi không muốn giới thiệu sự phức tạp xử lý sự cố với PBR và có thể có sự thay đổi này từ phần cứng sang phần mềm được xử lý trong tương lai. Nói ngắn gọn về XFF và SNAT đã đề cập trước đó, PBR có phải là lựa chọn duy nhất ở đây không và cách tốt nhất để giữ PBR được cấu hình chặt chẽ là gì?


Tôi không chắc chắn 100% tôi hiểu cấu trúc liên kết, máy chủ của bạn có hai giao diện và bạn cần SNAT để máy chủ có thể có tuyến tĩnh duy nhất để trả lại lưu lượng 'sản xuất' cho giao diện SLB không? Nhưng cấu hình SNAT trong 1: N ngụ ý các trạng thái luôn luôn phải tránh, PBR không trạng thái nên nó có tỷ lệ tốt hơn nhiều.
ytti

3
Thông thường, tôi khuyên bạn không nên thiết kế bộ cân bằng tải một vũ trang (hoặc bạn có thể gọi nó là bộ cân bằng tải trên thanh) và đi với mạng con phía trước cho các VIP cân bằng tải và mạng con phía sau cho máy chủ bể bơi. Các máy chủ mặc định thông qua giao diện phía sau trên bộ cân bằng tải. Điều này loại bỏ hoàn toàn sự cần thiết cho SNAT hoặc PBR.
Mike Pennington

Ngoài nhận xét của tôi về cấu trúc liên kết cân bằng tải ... bạn có thể thêm một vài sơ đồ để tham khảo không, vì một số câu hỏi không rõ ràng khi bạn không chắc hình ảnh lớn hơn trông như thế nào.
Mike Pennington

@ytti, cấu trúc liên kết hiện tại có SLB nội tuyến với g / w mặc định của máy chủ trỏ đến SLB - máy chủ / máy chủ đơn. Hiện tại chúng tôi có những gì Mike mô tả với các Vlan phía máy khách và phía máy chủ trên hai giao diện của SLB, nhưng đây là câu hỏi về việc chuyển sang một cấu trúc liên kết khác như một vũ trang để lưu lượng truy cập SQL đến máy chủ không phải đi qua SLB và chúng tôi không muốn thêm bất kỳ sự phức tạp nào vào các máy chủ, chẳng hạn như các NIC kép với các tuyến tĩnh của máy chủ, v.v. Hiểu về độ trễ của SNAT so với PBR là chìa khóa cũng như các thiết kế khác mà tôi đã bỏ lỡ (như Trả lời máy chủ trực tiếp được mô tả trong câu trả lời ).
generalnetworkerror

Họ là những máy chủ nào? Trong Linux (hoặc * BSD), thật dễ dàng để thiết lập để gói được trả về giao diện nơi nó đến, rất hữu ích trong cài đặt SLB (chúng tôi sử dụng điều này để kết nối dự phòng các máy chủ với hai hộp SLB bị ngắt kết nối, VIP là ECMPd nên cả hai đều nóng, nhưng thậm chí có thể từ các nhà cung cấp khác nhau vì họ không biết về nhau).
ytti

Câu trả lời:


6

PBR có thêm bất kỳ độ trễ nào khi thực hiện SNAT giả sử PBR hoàn toàn được thực hiện trong phần cứng không?

Sup720 hỗ trợ PBR trong CTNH , độ trễ bổ sung (nếu có) là không đáng kể vì PBR không thêm hàng đợi giao diện. Tôi nghĩ PBR sẽ khiến mọi thứ trở nên khó khăn hơn mức cần thiết (và tôi vẫn không chắc liệu nó có hoạt động hay không ... các chi tiết cụ thể của tùy chọn đó không hoàn toàn rõ ràng)

Nói ngắn gọn về XFF và SNAT đã đề cập trước đó, PBR có phải là lựa chọn duy nhất ở đây không và cách tốt nhất để giữ PBR được cấu hình chặt chẽ là gì?

PBR không phải là lựa chọn duy nhất. Tùy chọn đề xuất của bạn là một chút không rõ ràng, nhưng PBR thường sôi sục không có gì khác hơn là một cách dễ dàng hơn để thực hiện định tuyến tĩnh.

Thông thường, đây là cấu trúc liên kết tốt nhất cho các dịch vụ cân bằng tải yêu cầu truy vấn SQL ...

  • Đặt VIP của bạn trên mạng con phía trước ... 172.16.1.0/24 trong sơ đồ
  • Đặt nhóm máy chủ của bạn trong mạng con phía sau ... 172.16.2.0/24 trong sơ đồ
  • Đặt các truy vấn SQL của bạn trên một giao diện khác ... 172.16.3.0/24 trong sơ đồ. Thêm giao diện thứ hai cho tất cả các máy chủ yêu cầu truy vấn SQL. Thực hiện tất cả các truy vấn SQL của bạn đến địa chỉ trên mạng con này. Cấu trúc liên kết này hoạt động cho cả Unix và Windows, vì bạn chỉ dựa vào ARP hoặc tuyến máy chủ (tùy theo sở thích của bạn) cho kết nối SQL.

Biểu đồ:

Mạng truy vấn LB w SQL

Cấu trúc liên kết này có lợi ích bổ sung:

  • Nó phân tách các giao diện SQL khỏi lưu lượng truy cập web, vì các truy vấn SQL rất phức tạp và có thể làm tắc nghẽn lưu lượng truy cập web.
  • Nó cung cấp các MTU khác nhau cho các dịch vụ cân bằng tải của bạn (thường cần duy trì ở mức 1500 hoặc thấp hơn, nếu chúng truyền qua internet) và các dịch vụ SQL của bạn (ưu tiên các khung jumbo).

Bất kỳ cấu trúc liên kết cân bằng tải một vũ trang là một lựa chọn ít mong muốn hơn vì bạn kết thúc việc cắt giảm thông lượng tối đa của mình xuống một nửa vì cấu trúc liên kết một vũ trang.

EDIT cho câu hỏi về chuyển đổi CTNH vs SW trên Sup720

Đây là một chủ đề sâu sắc, nhưng tôi sẽ đưa ra phiên bản tóm tắt ... Sup720 áp dụng ACL theo từng hướng (xâm nhập / đi ra) và ACL phải phù hợp với TCAM dựa trên bất kỳ thuật toán hợp nhất nào mà nền tảng đã chọn. Trình quản lý tính năng của Sup720 (tức là fm) chịu trách nhiệm trung gian các tính năng vào TCAM và báo cáo xem bạn có phụ thuộc punt (có nghĩa là chuyển đổi SW) hay không, liệu kết hợp giao thức và hướng được chuyển đổi trong CTNH. Để cô lập liệu

  1. Đầu tiên, xác định tất cả các giao diện Lớp 3 đi vào và đi ra mà lưu lượng PBR có thể chuyển
  2. Tiếp theo, kiểm tra đầu ra của show fm fie int <L3_intf_name> | i ^Interf|Result|Flow|Config(bạn phải xem cả hai hướng vào và ra cho tất cả các giao diện trong Bước 1 ). Lưu lượng truy cập của bạn sẽ được chuyển đổi nếu các giá trị trong CAPS khớp với các giá trị bạn thấy bên dưới ... lưu ý rằng đầu ra của lệnh tôi đang sử dụng rất giống với những gì bạn thấy trong show fm fie summary...

Tx.Core01#sh fm fie int Vl220 | i ^Interf|Result|Flow|Config
Interface Vl220:
 Flowmask conflict status for protocol IP : FIE_FLOWMASK_STATUS_SUCCESS      <--- in HW
 Flowmask conflict status for protocol OTHER : FIE_FLOWMASK_STATUS_SUCCESS   <--- in HW
 Flowmask conflict status for protocol IPV6 : FIE_FLOWMASK_STATUS_SUCCESS    <--- in HW
Interface Vl220 [Ingress]:
 FIE Result for protocol IP : FIE_SUCCESS_NO_CONFLICT                        <--- in HW
 Features Configured : V4_DEF   - Protocol : IP
 FIE Result for protocol OTHER : FIE_SUCCESS_NO_CONFLICT                     <--- in HW
 Features Configured : OTH_DEF   - Protocol : OTHER
 FIE Result for protocol IPV6 : FIE_SUCCESS_NO_CONFLICT                      <--- in HW
 Features Configured : V6_DEF   - Protocol : IPV6
Interface Vl220 [Egress]:
 No Features Configured
No IP Guardian Feature Configured
No IPv6 Guardian Feature Configured
No QoS Feature Configured
Tx.Core01#

Giao diện ở trên không hiển thị đầu ra đi ra, nhưng điều đó không liên quan ... đầu ra tương tự như hướng Ingress. Ricky Micky đã viết lên một lời giải thích nổi bật về 'giao diện sh fm fie' nếu bạn muốn biết thêm chi tiết về động lực của các ngân hàng TCAM / kết quả hợp nhất.


Tôi đã loại bỏ tùy chọn thiết kế này vì nó yêu cầu sự phụ thuộc L2 giữa tầng trước và tầng sau cũng như không mở rộng tốt cho nhiều Vlan back-end của chúng tôi và vì cần phải đặt tường lửa (không minh bạch ) giữa các tầng. Tuy nhiên, nó vẫn là một lựa chọn tuyệt vời cho những người không có những mối quan tâm này. Điểm hay về MTU.
generalnetworkerror

Thiếu tài liệu tư vấn về PBR cho các phiên bản iOS cụ thể để biết liệu một tính năng PBR cụ thể có kích hoạt nhu cầu thực hiện trong phần mềm hay không, điều này có thể được xác định trong IOS không? Đây là ý của tôi khi "cấu hình chặt chẽ" cho PBR để giữ cho nó hoạt động trong phần cứng.
generalnetworkerror

@generalnetworkerror, bạn muốn làm PBR trên phần cứng nào? Nếu Sup720 / Sup2T, không quá khó để xác định xem bạn có chuyển đổi trong CTNH so với SW không ... chúng tôi cần thêm thông tin cụ thể để trợ giúp. Trên thực tế, nếu bạn không bận tâm một sơ đồ về cách hoạt động của khái niệm PBR này sẽ thực sự hữu ích
Mike Pennington

SUP720 / PFC3B ... đang tìm cách xem bạn có thể xác định từ CLI như thế nào nếu một tính năng PBR nhất định buộc điều này thành chuyển đổi s / w
generalnetworkerror

@generalnetworkerror, sh fm fie summary... hoặc đọc câu trả lời của tôi để biết thêm thông tin ...
Mike Pennington

1

Nếu bộ cân bằng tải của bạn hỗ trợ thì Direct Server Return cũng sẽ làm những gì bạn muốn. Nó cần được hỗ trợ bởi bộ cân bằng tải của bạn và có một số lo ngại về hệ điều hành. Nó liên quan đến việc đặt các giao diện 'loopback' trong mỗi máy chủ đều có địa chỉ IP của VIP, bộ cân bằng tải trong khi có địa chỉ máy chủ thực chỉ sử dụng địa chỉ MAC của máy chủ thực để chuyển tiếp gói, vì máy chủ có giao diện loopback với VIP trong đó, máy chủ chấp nhận gói.

Bạn cần tham khảo tài liệu của nhà cung cấp LB cụ thể và các nhóm máy chủ của bạn phải có khả năng quản lý bộ điều hợp ảo (chúng tôi không sử dụng tính năng này vì chúng tôi không nghĩ rằng việc cung cấp máy chủ tự động của chúng tôi có thể quản lý bộ điều hợp vòng lặp MS.

Nhưng điều này không sử dụng NAT trong LB và bạn không phải làm PBR.

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.