2010-09-19 23 views
5

Trang web hỗ trợ django của tôi nằm phía sau một bộ cân bằng tải dựa trên Apache. Ngoài ra còn có một máy chủ xử lý các yêu cầu tệp tĩnh, nhưng điều đó đơn giản.Chạy trang web django trong môi trường multiserver - cách xử lý các phiên?

Điều gì làm phiền tôi là cách xử lý người dùng có thể bị trình tải cân bằng bất kỳ máy chủ ứng dụng nào ném vào máy chủ ứng dụng? Tất cả họ đều chia sẻ cùng một cụm DB (thông minh hay không? Hay tôi nên tách nó ở đây?), Vì vậy chỉ có điều tôi cần quan tâm là phiên.

Ngay bây giờ các phiên được lưu trữ trong bộ nhớ, để thực hiện. Tôi thà giữ chúng ở đó, vì vậy những gì tôi cần làm là đảm bảo rằng cùng một người dùng sẽ luôn luôn nhấn cùng một máy chủ ứng dụng.

Một vài giải pháp đơn giản xuất hiện trong đầu tôi.

1) biến nó thành dựa trên IP. Cho phép nói, số IP lẻ đánh máy chủ A và thậm chí là số trúng số B. Nhưng điều gì sẽ xảy ra nếu người dùng ở đằng sau proxy hoặc có IP thay đổi thường xuyên?

2) Khi một yêu cầu truy cập vào máy chủ cân bằng tải, tôi có thể thử kiểm tra nó cho cookie và xem máy chủ nào sẽ xử lý điều đó. Có thể/không có ý nghĩa?

3) Tôi biết các giải pháp J2EE, sử dụng mod_proxy_ajp, xử lý các loại tình huống đó, mặc dù tôi không biết điều gì xảy ra đằng sau hậu trường đó. Một cái gì đó từ đó có thể được sử dụng cho Django?

Hoặc có thể có một số cách khác để phân cụm Django cho điều đó?

+2

Nếu bạn có thể dễ dàng trở lại trên yêu cầu để phiên Cache trực tiếp trong RAM, một giải pháp mà sẽ không cần một cân bằng tải phiên cân bằng sẽ sử dụng các phiên được cơ sở dữ liệu hỗ trợ (các phiên cached_db có thể có) và cung cấp cho máy chủ DB/pool một bộ nhớ RAM để duy trì hiệu năng. Không nhanh như các phiên làm việc trong bộ nhớ, nhưng ít phiền toái hơn với các bộ cân bằng tải ... –

Trả lời

Các vấn đề liên quan