Lưu trữ liên tục với Docker trong sản xuất - Giải pháp nào và tại sao?


8

Gần đây tôi đã bắt đầu làm việc cho một công ty muốn phá vỡ ứng dụng SaaS nguyên khối của họ thành các dịch vụ siêu nhỏ được đóng gói. Mặc dù vậy, tôi đang gặp khó khăn trong việc nắm bắt một phần cơ bản của lưu trữ liên tục. Tại sao có nhiều nền tảng cạnh tranh khác nhau? Portworx, Rexray, StorageOS, Flocker, Inifint, v.v.

Những câu hỏi của tôi

  1. Tại sao ai đó chỉ đơn giản là quay vòng một máy chủ NFS và sử dụng cấu trúc thư mục phân cấp ở đó làm phụ trợ lưu trữ của họ? Bạn đạt được lợi ích gì khi sử dụng một trong những công cụ này?

  2. Làm thế nào nguy hiểm là sử dụng một cái gì đó như thế này với Docker? Các nguyên nhân phổ biến cho việc mất dữ liệu thảm khốc trong môi trường dựa trên docker là gì?

  3. Giải pháp lưu trữ liên tục nào bạn muốn giới thiệu và tại sao? Công ty của tôi vận hành một nền tảng SaaS. Tải trọng dữ liệu có kích thước nhỏ (5kb-100kb). Xử lý dữ liệu là nhỏ vừa trong tiêu thụ tài nguyên. Tổng khối lượng là trung bình, nhưng tiếp tục tăng. Chúng tôi hy vọng sẽ hoàn toàn chuyển ứng dụng nguyên khối của mình sang đám mây dưới dạng các dịch vụ siêu nhỏ được đóng gói riêng biệt. Bao gồm kho dữ liệu của chúng tôi.

  4. Hơi không liên quan, nhưng nó có liên quan. Những điểm mạnh của việc sử dụng Kubernetes như một nhà soạn nhạc trái ngược với Rancher / Gia súc là gì? Không phải Kubernetes được thiết kế quá mức cho một nền tảng cỡ vừa phải sao? Có bất kỳ điểm mạnh nào khi sử dụng Kubernetes trong Rancher ngoài cài đặt bằng một lần nhấp không?

Cảm ơn sự sáng suốt của bạn. Xin lỗi vì sự ngây thơ. Tôi hoan nghênh tất cả các tài liệu và tài liệu đọc bổ sung.

EDIT: Đối với bối cảnh, chúng tôi đang sử dụng Azure làm nền tảng Đám mây cơ bản.


1
Đối với 4: Kubernetes chơi tốt với azure để tạo các Tập liên tục dưới dạng đĩa Azure . NFS có một lịch sử về cơ chế khóa xấu, trong trường hợp có lỗi trong bộ điều phối, bạn có thể dễ dàng làm hỏng các tệp của mình.
Tensibai

1
các nhóm tôi đã làm việc trong bối cảnh này có kinh nghiệm tốt với Cassandra khi lưu trữ phụ trợ cho một bộ dịch vụ niêm mạc nhưng trọng tâm là đọc hơn là viết dữ liệu
Peter Muryshkin

1
Những loại dữ liệu? Dữ liệu cơ sở dữ liệu? Những bức ảnh? Tập tin văn bản?
James Shewey

Câu trả lời:


4

Tôi có thể trả lời điểm thứ 2:

Docker phù hợp nhất trong kiến ​​trúc dựa trên dịch vụ vi mô khi ứng dụng chạy bên trong các thùng chứa nhưng bộ lưu trữ hoặc bất kỳ phiên trực tiếp nào khác được duy trì trong RAM dùng chung hoặc cơ sở dữ liệu.

Về cơ bản, bạn không nên lưu trữ bất cứ thứ gì bên trong container docker. Có nhiều lý do cho nó:

  1. Xem xét nâng cấp: Một người nào đó trong nhóm của bạn đã tạo ra một hình ảnh mới hơn của ứng dụng và bạn cần container chạy với hình ảnh mới nhất. Docker hiện tại và cách phổ biến để làm điều này là đưa container hiện có xuống và quay một container mới có cùng tham số thời gian chạy như container cũ nhưng với hình ảnh mới hơn. Đây là một trong những lý do lớn nhất khiến các container phải luôn luôn không trạng thái và không chứa bất kỳ dữ liệu nào. Bạn có thể để tất cả dữ liệu của mình được gắn vào một số vị trí và các phiên được lưu trong db hoặc một cái gì đó như memchached, v.v.

  2. Một trong những trường hợp sử dụng lớn của docker là xây dựng các cụm. Nếu bạn bắt đầu giữ dữ liệu bên trong các thùng chứa của mình thì đó là chi phí chung để duy trì dữ liệu đó đồng bộ giữa các thùng chứa ứng dụng.

  3. Cộng đồng docker nói chung không khuyến nghị giữ bất kỳ dữ liệu nào trong container và do đó không ai cố chấp nhận rủi ro này trong sản xuất và không ai muốn trở thành người kể chuyện đầu tiên về cách họ làm rối tung sản xuất :)

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.