2012-11-24 22 views
6

Tôi có một ứng dụng web RoR (w/mysql) được tải cân bằng trên một số máy chủ giống hệt nhau. Ứng dụng yêu cầu cookie và phiên hoạt động.Cookie RoR sử dụng ActiveRecordStore + Các phiên cố định

Hiện tại một khách hàng luôn được định tuyến đến cùng một máy chủ phía sau bộ cân bằng tải và nếu máy chủ bị gỡ xuống, máy khách sẽ được chuyển đến máy chủ khác và phiên của họ sẽ kết thúc.

Trình cân bằng tải của kiến ​​trúc hiện tại sẽ chỉ tải các máy cân bằng trong cùng một trung tâm dữ liệu. Tôi muốn sử dụng nhiều trung tâm dữ liệu để cân bằng tải về mặt địa lý bằng cách sử dụng DNS round robin và để cung cấp thêm dự phòng.

Nếu tôi đã bật ActiveRecordStore cho việc lưu trữ phiên trong ứng dụng RoR tôi, này nên giải quyết vấn đề nêu trên, khách hàng có thể được chuyển đến tất cả các máy chủ duy nhất và phiên của họ sẽ bị ảnh hưởng. Điều này có đúng không?

Có phân nhánh nghiêm trọng nào khi sử dụng ActiveRecordStore cho phiên không?

Trả lời

4

Câu trả lời nhanh: Cho rằng tất cả các máy chủ từ tất cả các trung tâm dữ liệu đều nói chuyện với cùng một cơ sở dữ liệu, vâng, điều này sẽ giải quyết được sự cố của bạn.

Ramifications: Vấn đề rõ ràng ở đây là tất cả các máy chủ từ các trung tâm dữ liệu khác nhau sẽ liên lạc với một trung tâm dữ liệu với cơ sở dữ liệu. Đó là khá kém hiệu quả, bởi vì nó phủ nhận hầu hết lợi ích từ việc phân phối ứng dụng của bạn đến các trung tâm dữ liệu khác nhau. Tất nhiên, bạn có thể cố gắng sao chép mysqls qua internet, nhưng điều đó có thể dẫn đến dữ liệu cuối cùng cũng đồng nhất, có nghĩa là khi chuyển đổi máy chủ, người dùng vẫn có thể gặp phải các phiên không hợp lệ.

Alternative: Một cửa hàng phân phối trên toàn cầu cho các phiên của bạn, loại giống như một chiếc nhẫn cassandra hoặc có thể riak có lẽ sẽ làm việc tốt hơn bởi vì những cơ sở dữ liệu được thiết kế để ở lại đồng bộ hóa và cung cấp truy cập phù hợp với dữ liệu.

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