2009-05-14 5 views
6

Tôi có hai máy chủ IIS đang chạy bằng NLB. Unfortunatelly Tôi không thể sử dụng máy chủ phiên chia sẻ, do đó, mỗi máy chủ đang sử dụng phiên riêng của nó. Làm thế nào tôi có thể đảm bảo, rằng tất cả các yêu cầu từ cùng một người dùng được chuyển tiếp đến cùng một máy chủ IIS?Làm thế nào để giữ các yêu cầu của người dùng trên cùng một máy chủ khi sử dụng IIS NLB?

Trả lời

3

Tôi nghĩ điều bạn đang tìm kiếm là Phiên cố định. Các phiên dính được thực hiện bởi cân bằng tải của bạn mặc dù. Bạn có thể cần phải thiết lập một cân bằng tải bên ngoài (BIG-IP, HAProxy, vv) mà có thể làm các buổi dính.

+0

Tôi nghĩ rằng có thể không có bộ cân bằng tải ngoài bằng cách đơn giản cấu hình lại cụm NLB. Nó thậm chí sẽ làm việc cho người dùng AOL với proxy (nếu những người vẫn còn tồn tại ;-)) – Christian

+2

Tôi đã không nhận được bất kỳ đĩa AOL trong thư gần đây, có bạn? – Min

+0

Với những bình luận khác của Sergejus, tôi nghĩ đây là cách duy nhất để đi. – NotMe

0

Tại sao bạn muốn thực hiện việc này? Nếu đó là vì trạng thái phiên thì bạn nên có một cơ sở dữ liệu hoặc máy chủ quá trình được thiết lập ở một nơi chung và có tất cả các nút tham chiếu đến đó.

+0

Để có máy chủ riêng biệt, như tôi biết, tôi cần đánh dấu các đối tượng, được lưu trữ trong phiên, như có thể tuần tự hóa. Tôi không thể làm điều này ngay bây giờ, bởi vì tôi đang di chuyển hệ thống cũ sang kiến ​​trúc NLB. – Sergejus

0

Tôi sẽ xem xét proxy ngược nằm ở phía trước máy chủ và nhớ người dùng bên ngoài nào đang sử dụng máy chủ nào.

Tôi biết (sử dụng theo cách này) Cherokee hỗ trợ proxy IPHash nhưng tôi chắc chắn có nhiều hơn nữa.

+0

Tôi sẽ thêm: điều này sẽ thay thế cân bằng tải tích hợp của bạn. – Oli

+0

Nhưng IIS có chức năng này không? – Sergejus

+0

Có lẽ ... Đọc phần này: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/77cb4318-75f8-4310-a05f-3605b5768007.mspx?mfr=true – Oli

0

Chỉ cần thêm vào câu trả lời của Lloyd, bạn nên tránh sử dụng phiên trong môi trường cân bằng tải. Toàn bộ mục đích đằng sau việc sử dụng phiên là để tránh các cuộc gọi cơ sở dữ liệu; nếu bạn kết thúc lưu trữ dữ liệu phiên trở lại vào cơ sở dữ liệu, bạn thường không đạt được gì.

Lý do là 1. bây giờ bạn phải thực hiện 2 cuộc gọi cơ sở dữ liệu cho mỗi lần tải trang (truy xuất và lưu trữ) và 2. dữ liệu đó hiện phải trải qua các ranh giới tuần tự hóa/deserialization. Hầu hết thời gian này kết thúc là một hoạt động đắt tiền hơn là chỉ lấy dữ liệu bạn muốn bắt đầu.

Bây giờ, đến câu hỏi thực tế của bạn. Bạn có tùy chọn để lưu trữ dữ liệu phiên trong trạng thái xem. Tùy chọn, bạn có thể từ bỏ phiên và thay vào đó sử dụng cookie. Nếu bạn đi tuyến đường này, hãy chắc chắn mã hóa chúng trên đường ra và giải mã khi nhận chúng.

+0

Tôi đồng ý về vấn đề cơ sở dữ liệu , chúng tôi sử dụng MemCached để lưu trữ thông tin 'session' vì chúng tôi muốn loại bỏ tương tác với cơ sở dữ liệu và MemCached nhanh hơn rất nhiều trong việc cung cấp thông tin. – Lloyd

+0

Tôi thấy những gì bạn đang nói, nhưng trong trường hợp của tôi, tôi có hệ thống kế thừa mà tôi không thể chạm vào. Vì vậy, bây giờ tôi cần phải tìm ra cách thích hợp nhất để giới thiệu NLB. – Sergejus

+0

Tải môi trường cân bằng nên thích ứng với bộ nhớ phiên, chứ không phải ngược lại. – Karlth

1

Bạn có thể làm điều đó một cách dễ dàng miễn là không ai trong số khách hàng của bạn sử dụng một hệ thống proxy phân phối:

Trong protieries của NLB cluster, tab "quy tắc cảng" bạn có thể chọn "chế độ lọc" và các mối quan hệ : Bạn không thể chọn "không" vì bạn không có phiên trung tâm. Nhưng "đơn giản" sẽ chuyển hướng mọi người dùng đến cùng một máy chủ miễn là ip vẫn giữ nguyên. Nếu bạn, ví dụ: anticiapte Máy chủ proxy AOL sau đó "lớp C" có thể là một lựa chọn an toàn (mặc dù có thể giảm cân bằng tải một chút), bởi vì cùng một lớp C net đi đến cùng một máy chủ.

Tôi đoán rằng MS dễ dàng thực hiện theo cách mà cả hai máy chủ biết IP nào là chẵn hoặc lẻ hoặc bộ ba của mạng lớp C là chẵn hoặc lẻ và phân phối tải luôn theo cùng một cách tùy thuộc vào IP -address

15

Tìm thấy điều này và quyết định chia sẻ với người khác:

Sử dụng tính năng sở thích của khách hàng. Khi mối quan hệ của khách hàng được kích hoạt, Cân bằng tải mạng hướng tất cả các kết nối TCP đến cùng một máy chủ lưu trữ cụm. Điều này cho phép trạng thái phiên được duy trì trong bộ nhớ máy chủ. Bạn có thể cho phép mối quan hệ của khách hàng trong hộp thoại Thêm/Chỉnh sửa Quy tắc Cổng trong Trình quản lý Cân bằng tải Mạng. Chọn mối quan hệ Đơn hoặc Loại C để đảm bảo rằng chỉ một máy chủ lưu trữ cụm sẽ xử lý tất cả các kết nối là một phần của cùng một phiên khách hàng. Điều này quan trọng nếu ứng dụng máy chủ chạy trên máy chủ lưu trữ cụm duy trì trạng thái phiên (chẳng hạn như cookie máy chủ) giữa các kết nối. Để biết thêm thông tin về mối quan hệ Cân bằng tải mạng, hãy xem trợ giúp trong phần đính kèm cân bằng tải mạng.

+1

Sau đó, hãy làm cho câu trả lời này được chấp nhận – Christian

+0

Tôi sẽ chỉ có thể thực hiện việc này sau 48 giờ ... – Sergejus

+0

Ngẫu nhiên, đây cũng là khái niệm giống như các phiên dính. – NotMe