2012-11-27 40 views
5

Làm cách nào để tải hình ảnh Paperclip lên để hoạt động trên ứng dụng Rails chạy trên 8 máy (cân bằng tải)?Kẹp giấy + Rails với máy cân bằng tải

Người dùng có thể tải lên hình ảnh trên ứng dụng. Hình ảnh được lưu trữ trên một trong các máy. Sau đó, người dùng yêu cầu hình ảnh nhưng không tìm thấy hình ảnh vì nó được yêu cầu từ một máy khác.

Giải pháp cho loại sự cố này là gì? Tôi không thể sử dụng AWS hoặc bất kỳ dịch vụ đám mây nào; hình ảnh phải được lưu trữ trong nhà.

Cảm ơn.

+0

Nếu bạn không thể sử dụng AWS, bạn sẽ phải hoặc là đưa những hình ảnh trong một cơ sở dữ liệu hoặc giải pháp lưu trữ tập tin của riêng bạn. Lưu trữ chúng trên các máy chủ ứng dụng của bạn là không cần thiết. Nếu bạn mất một trong những máy bạn đã mất hình ảnh. –

Trả lời

8

Một giải pháp là sử dụng NFS để gắn kết thư mục dùng chung sẽ là thư mục gốc của public/system hoặc bất kỳ thứ gì bạn gọi là thư mục chứa hình ảnh kẹp giấy.

Có một vài điều cần lưu ý để làm cho mọi thứ công việc mặc dù:

  • Sử dụng một máy chủ chuyên dụng sẽ chỉ chứa tài sản, theo cách này ổ cứng của bạn (s) được dành riêng để phục vụ hình ảnh kẹp giấy của bạn
  • NFS có thể tốn kém. Sử dụng nó để ghi tệp từ máy chủ ứng dụng của bạn chỉ vào máy chủ nội dung của bạn. Bạn sẽ phải cấu hình trình cân bằng tải hoặc proxy ngược hoặc máy chủ web để truy xuất trực tiếp tất cả hình ảnh từ máy chủ nội dung mà không yêu cầu máy chủ ứng dụng thực hiện trên NFS.
  • nên sử dụng hệ thống RAID trên máy chủ nội dung của bạn, dĩ nhiên là
  • máy chủ nội dung thứ hai được khuyến nghị với cùng thông số kỹ thuật. Bạn có thể làm cho nó hoạt động như một máy chủ sao lưu và thường xuyên rsync hình ảnh kẹp giấy của bạn với nó. Nếu máy chủ tài sản chính bị hỏng, bạn sẽ có thể chuyển sang máy chủ này.
  • Khi gắn thư mục NFS dùng chung, hãy sử dụng tùy chọn soft và gắn kết qua kết nối mạng nội bộ tốc độ cao, ví dụ: mount -o soft 10.0.0.1:/export/shared_image_folder. Nếu bạn không chỉ định tùy chọn soft và máy chủ nội dung bị hỏng, các phiên bản Ruby của bạn sẽ tiếp tục chờ máy chủ đi lên. Mọi thứ sẽ bị kẹt và trang web sẽ xem xét. Đã học cách này một cách khó khăn ...

Đây là những nguyên tắc chung để sử dụng NFS. Tôi đang sử dụng nó trên một trang web sản xuất khá lớn với hàng trăm ngàn hình ảnh và nó hoạt động tốt cho tôi.

+0

Làm thế nào tôi có thể hướng dẫn Paperclip để ghi tệp vào thư mục được chia sẻ được gắn kết, từ máy1 chẳng hạn? – alste

+0

Bạn sẽ phải 'gắn kết 'thư mục NFS được chia sẻ. Trong linux, 'mount' sẽ cố gắng sử dụng NFS để gắn kết một thư mục mạng, sẽ chỉnh sửa câu trả lời của tôi. Tất nhiên bạn sẽ phải thiết lập máy chủ nfs của bạn trước, và cài đặt các gói cần thiết theo distro của bạn (s) –

1

Nếu bạn không muốn sử dụng chia sẻ tệp như NFS, bạn có thể lưu trữ hình ảnh trong cơ sở dữ liệu của mình. Dưới đây là một viên ngọc mà cung cấp một loại :database lưu trữ cho Kẹp giấy:

https://github.com/softace/paperclip_database

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