Bạn có thể đính kèm Amazon EBS cho nhiều trường hợp không?


138

Chúng tôi hiện đang sử dụng nhiều máy chủ web truy cập vào một máy chủ và máy chủ tệp mysql. Nhìn vào việc chuyển sang đám mây, tôi có thể sử dụng cùng một thiết lập này và đính kèm EBS vào nhiều phiên bản máy hay giải pháp nào khác không?


Câu trả lời được đưa ra là không. Nhưng những lý do được trích dẫn đang làm phiền tôi. Mọi người đều nói "nó sẽ giống như gắn cùng một ổ cứng cho nhiều máy tính" - và tôi đi "và vậy thì sao?" Với SCSI hoặc FibreChannel SAN, chúng tôi làm điều đó mọi lúc, hoàn toàn có ý nghĩa. Ví dụ: chỉ gắn kết nhiều máy chủ trên cùng một dữ liệu chỉ đọc. Oracle và các RDBM lớn khác được thiết kế để chạy trong chế độ cụm, trong đó nhiều máy chủ sử dụng cùng một bộ lưu trữ vật lý. Nó có thể nhanh hơn nhiều. EBS / NFS là veeeery chậm, không phải là một tùy chọn. Nhưng hãy nhớ, ngay cả khi bạn có thể gắn vào nhiều EC2, IOPS của bạn vẫn sẽ bị giới hạn.
Gunther Schadow

Kể từ tháng 2 năm 2020, bạn có thể đính kèm một số loại EBS nhất định cho nhiều phiên bản EC2 - aws.amazon.com/bloss/aws/ mẹo
Koshur

Câu trả lời:


135

CẬP NHẬT (Tháng 4 năm 2015) : Đối với trường hợp sử dụng này, bạn nên bắt đầu xem Hệ thống tệp đàn hồi Amazon (EFS) mới , được thiết kế để được nhân lên theo cách chính xác theo cách bạn muốn. Sự khác biệt chính giữa EFS và EBS là chúng cung cấp các tóm tắt khác nhau: EFS hiển thị giao thức NFSv4, trong khi EBS cung cấp truy cập IO khối thô.

Dưới đây bạn sẽ tìm thấy lời giải thích ban đầu của tôi về lý do tại sao không thể gắn thiết bị khối thô trên nhiều máy một cách an toàn.


BÀI VIẾT GỐC (2011):

Ngay cả khi bạn có thể có được một khối EBS được gắn vào nhiều hơn một thể hiện, thì đó sẽ là một _REALLY_BAD_IDEA_. Để trích dẫn Kekoa, "điều này giống như sử dụng ổ cứng trong hai máy tính cùng một lúc"

Tại sao đây là một ý tưởng tồi? ... Lý do bạn không thể đính kèm một ổ đĩa cho nhiều hơn một phiên bản là vì EBS cung cấp một bản tóm tắt "khối lưu trữ" mà khách hàng chạy một hệ thống tệp như ext2 / ext3 / etc. Hầu hết các hệ thống tệp này (ví dụ: ext2 / 3, FAT, NTFS, v.v.) được viết với giả định rằng họ có quyền truy cập độc quyền vào thiết bị khối. Hai trường hợp truy cập vào cùng một hệ thống tập tin gần như chắc chắn sẽ kết thúc trong nước mắt và hỏng dữ liệu.

Nói cách khác, việc gắn đôi một khối EBS sẽ chỉ hoạt động nếu bạn đang chạy một hệ thống tệp cụm được thiết kế để chia sẻ một thiết bị khối giữa nhiều máy. Hơn nữa, thậm chí điều này sẽ không đủ. EBS sẽ cần phải được kiểm tra cho kịch bản này và để đảm bảo rằng nó cung cấp các đảm bảo tính nhất quán giống như các giải pháp thiết bị khối chia sẻ khác ... tức là, các khối đó không được lưu trong bộ nhớ cache ở cấp độ trung gian như hạt nhân Dom0, lớp Xen, và hạt nhân DomU. Và sau đó là các cân nhắc về hiệu suất của việc đồng bộ hóa các khối giữa nhiều máy khách - hầu hết các hệ thống tệp được phân cụm được thiết kế để hoạt động trên SAN chuyên dụng tốc độ cao, không phải là ethernet hàng hóa có nỗ lực tốt nhất. Nghe có vẻ đơn giản, nhưng những gì bạn đang yêu cầu là một điều rất không cần thiết.

Ngoài ra, hãy xem kịch bản chia sẻ dữ liệu của bạn có thể là NFS, SMB / CIFS, SimpleDB hoặc S3. Các giải pháp này đều sử dụng các giao thức lớp cao hơn nhằm chia sẻ tệp mà không cần có hệ thống con thiết bị khối chung. Nhiều lần một giải pháp như vậy thực sự hiệu quả hơn.

Trong trường hợp của bạn, bạn vẫn có thể có một cá thể / máy chủ tệp MySql duy nhất được truy cập bởi nhiều giao diện web. Máy chủ tệp đó sau đó có thể lưu trữ dữ liệu của nó trên một khối EBS, cho phép bạn thực hiện sao lưu ảnh chụp nhanh hàng đêm. Nếu phiên bản đang chạy máy chủ tệp bị mất, bạn có thể tách âm lượng EBS và gắn lại nó vào một phiên bản máy chủ tệp mới và sao lưu và chạy trong vài phút.

"Có bất cứ điều gì như S3 là một hệ thống tập tin không?" - có và không. Có, có các giải pháp của bên thứ 3 như s3fs hoạt động "ok", nhưng trong giới hạn, họ vẫn phải thực hiện các cuộc gọi dịch vụ web tương đối đắt tiền cho mỗi lần đọc / ghi. Đối với một công cụ chia sẻ dir, hoạt động tuyệt vời. Đối với loại sử dụng FS cụm mà bạn thấy trong thế giới HPC, không phải là một cơ hội. Để làm tốt hơn, bạn cần một dịch vụ mới cung cấp giao thức hướng kết nối nhị phân, như NFS. Cung cấp một hệ thống tập tin đa gắn kết như vậy với hiệu suất và hành vi hợp lý sẽ là một tính năng bổ sung TUYỆT VỜI cho EC2. Tôi từ lâu đã là người ủng hộ Amazon xây dựng một thứ như thế.


1
Vấn đề với NFS (và các cách tiếp cận tương tự SMB) là một máy sẽ hoạt động như một máy chủ (mà hệ thống tệp sẽ được gắn kết vật lý). Máy đó sẽ xuống sẽ khiến âm lượng EBS (hoặc đĩa cũng bị giảm). Có bất cứ điều gì như S3 như một hệ thống tập tin?.
sheki

1
Chỉ cần làm rõ - Nếu một khối EBS được gắn vào một cá thể và cá thể đó chết thảm khốc, âm lượng EBS sẽ ổn. Nó sẽ chỉ "đi xuống" theo nghĩa là để truy cập nó, bạn sẽ cần tách nó ra khỏi thể hiện xuống và gắn lại nó vào một thể hiện mới.
Dave Dopson

"... gần như chắc chắn sẽ kết thúc trong nước mắt và tham nhũng dữ liệu." Cổ điển. @DaveDopson
Beach House

5
Đối với bất kỳ ai khác nhìn thấy câu trả lời này đều biết rằng Amazon vừa phát hành EFS cho phép các ổ đĩa mở rộng tự động được chia sẻ có thể được gắn trên NFS trên nhiều trường hợp.
JoshStrange

@JoshStrange - cảm ơn vì đã ngẩng cao đầu. Cập nhật bài viết.
Dave Dopson

78

Cập nhật (2020) Bây giờ có thể!

Hiện tại điều này có thể xảy ra với các loại phiên bản mới nhất đang chạy trong AWS Nitro trong cùng Vùng khả dụng. Có một số cảnh báo nhưng điều này rất tốt cho các trường hợp sử dụng nhất định cần tốc độ của EBS và khi EFS không khả thi.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-multi.html


Bài gốc (2009)

Không, điều này giống như sử dụng ổ cứng trong hai máy tính.

Nếu bạn muốn chia sẻ dữ liệu, bạn có thể thiết lập một máy chủ mà tất cả các phiên bản của bạn có thể truy cập. Nếu bạn muốn có một vùng lưu trữ đơn giản cho tất cả các phiên bản của mình, bạn có thể sử dụng dịch vụ lưu trữ S3 của Amazon để lưu trữ dữ liệu được phân phối và có thể mở rộng.

Di chuyển lên đám mây, bạn có thể có cùng một thiết lập, nhưng bạn có thể thay thế máy chủ tệp bằng S3 hoặc có tất cả các phiên bản của bạn kết nối với máy chủ tệp của bạn.

Bạn có rất nhiều tùy chọn, nhưng chia sẻ ổ cứng giữa các phiên bản có lẽ không phải là lựa chọn tốt nhất.


14

Không, theo tài liệu EBS: "Một khối lượng chỉ có thể được gắn vào một phiên bản tại một thời điểm".

Hiện tại bạn đang sử dụng bộ nhớ chia sẻ như thế nào? Nếu nó chỉ để phục vụ các tệp từ máy chủ tệp, bạn đã xem xét việc thiết lập một hệ thống để bạn có thể ủy quyền một số yêu cầu nhất định cho một quy trình trên máy chủ tệp thay vì để máy chủ web phục vụ các tệp đó chưa?


2
Đây là một liên kết cho trích dẫn đó: aws.amazon.com/articles/1667 . Xem Câu hỏi thường gặp ở cuối bài viết. Làm cho tôi tự hỏi tại sao aws ec2 describe-volumestrả về một loạt các tập tin đính kèm.
Mark Berry

4

Tôi khá chắc chắn rằng bạn không thể, nhưng bạn có thể sao chép EBS và đính kèm nó vào một thể hiện khác.

Điều này hữu ích cho các bộ dữ liệu cố định hoặc để thử nghiệm dữ liệu 'thực' nhưng không cho phép nhiều hơn 1 phiên bản hoạt động trên một cửa hàng khối duy nhất


4

Nhiều máy chủ web truy cập MySQL Server & File Server là bình thường trong AWS. Một số thực tiễn tốt nhất cần tuân thủ đối với kiến ​​trúc được đề cập ở trên là:

Điểm 1) MySQL trên EC2 có thể được thiết lập là Master-Slave ở chế độ không đồng bộ / bán đồng bộ trong AWS. EBS-OPT + PIOPS trong RAID 0 được khuyến nghị cho DB hiệu suất cao

Điểm 2) Hoặc bạn có thể sử dụng chế độ Amazon RDS + Multi-AZ. Để đọc tỷ lệ nhiều RDS Đọc bản sao có thể được đính kèm với RDS của MySQL.

Điểm 3) Khối lượng EBS không thể được gắn vào nhiều EC2. Bạn có thể tạo Máy chủ tệp dựa trên GlusterFS trên Amazon EC2 bằng EBS. Nhiều máy chủ web có thể nói chuyện với một GlusterFS đồng thời trên infra AWS.

Điểm 4) Trong trường hợp ứng dụng của bạn có thể được tích hợp với S3 dưới dạng lưu trữ tệp, thì nó được ưa thích vì tính ổn định mà nó mang lại cho kiến ​​trúc. Bạn cũng có thể truy cập S3 bằng các công cụ như S3fuse cũng từ ứng dụng của mình.



2

Có một cái gì đó trong thế giới CNTT được gọi là Clustered Filesystem, Redhat GFS, Oracle OCFS2, Veritas CFS ...


kiểm tra bình luận cho câu trả lời của
ddopson

1
@sheki Tôi nghĩ rằng nhận xét của bạn về câu trả lời của ddopson hoàn toàn không liên quan đến các hệ thống tập tin được phân cụm. Hệ thống tập tin cụm được thiết kế để được gắn kết đồng thời bởi nhiều máy chủ. Toàn bộ điểm của một cụm là để tránh các điểm thất bại duy nhất.
Ryan

2

Câu trả lời ngắn gọn là "Không". Những người khác đã nói nó ở trên.

Những người nói "có" không trả lời câu hỏi, nhưng một câu hỏi khác. Nếu EFS chỉ là một dịch vụ NFS, thì đó không phải là câu trả lời cho câu hỏi như đã nêu ban đầu. Và không thành vấn đề nếu EFS có "được triển khai trong tất cả các vùng" hay không, bởi vì bạn có thể thực hiện ví dụ NFS của riêng mình và có nhiều máy chủ gắn NFS. Đó không phải là bất cứ điều gì mới, chúng tôi đã làm điều đó vào năm 1992. SMB và sshfs, tất cả những thứ này chỉ là cách để gắn ổ đĩa như một hệ thống tệp từ xa.

Những người nói "tại sao bạn muốn làm điều đó" hay "tất cả sẽ kết thúc trong nước mắt" là sai. Chúng tôi đã gắn nhiều đĩa vào nhiều máy chủ trong nhiều thập kỷ. Nếu bạn từng làm việc với SAN (Mạng khu vực lưu trữ), khả năng gắn cùng một thiết bị vào nhiều nút thường thông qua FibreChannel SAN là hoàn toàn bình thường. Vì vậy, bất cứ ai đã chạy các máy chủ một thập kỷ trước khi các máy chủ ảo / đám mây trở nên phổ biến đều có một số tiếp xúc với điều đó.

Chẳng mấy chốc, đã có các hệ thống tập tin được phân cụm trong đó hai hệ thống có thể đọc và ghi vào cùng một ổ đĩa. Tôi tin rằng điều này đã bắt đầu với thời gian VAX và Alpha VMS trong lịch sử. Các hệ thống tệp được phân cụm sử dụng sơ đồ loại trừ lẫn nhau phân tán để có thể thao tác trực tiếp các khối.

Ưu điểm của việc gắn cùng một đĩa vào nhiều nút là tốc độ và giảm các điểm lỗi đơn.

Bây giờ, các hệ thống tệp cụm đã không trở nên cực kỳ phổ biến trong kinh doanh lưu trữ "người tiêu dùng", đó là sự thật. Và chúng phức tạp và có một số cạm bẫy. Nhưng bạn thậm chí không cần một hệ thống tệp được phân cụm để sử dụng đĩa được gắn vào nhiều nút tính toán. Điều gì nếu bạn muốn một ổ đĩa chỉ đọc? Bạn thậm chí không cần một hệ thống tập tin cụm! Bạn chỉ cần đặt vào / etc / fstab cùng một thiết bị vật lý như chỉ đọc (ro). Sau đó, bạn gắn kết với 2 hoặc 10 máy chủ EC2 và tất cả chúng có thể đọc trực tiếp từ thiết bị đó!

Có một trường hợp sử dụng rõ ràng cho điều này trong thế giới của các máy chủ đám mây khi xây dựng các trang trại mở rộng nhanh chóng. Bạn có thể chuẩn bị tất cả đĩa hệ thống chính của mình và chỉ sử dụng một đĩa cấu hình và khởi động rất nhỏ cho mỗi máy chủ. Bạn thậm chí có thể có tất cả chúng khởi động từ cùng một đĩa khởi động, và ngay trước khi kết thúc / ở chế độ đọc-ghi, bạn có thể chèn Union-FS với 3 lớp:

  1. Đĩa hệ thống chỉ đọc chính, với cài đặt boot, kernel và userland
  2. Một hệ thống tệp cấu hình, chỉ có một vài tệp (chủ yếu là trong / etc) dành riêng cho máy chủ riêng lẻ. Đĩa này có thể được ghi bởi một máy chủ khác để chuẩn bị khởi động một thể hiện mới. Các tệp ví dụ ở đây sẽ là / etc / hostname và chỉ có rất ít tệp cấu hình cần duy trì khác nhau trên mỗi nút.
  3. Đĩa có thể ghi, mà bạn có thể không cần, có thể chỉ là / tmp như một hệ thống tệp bộ nhớ.

Vì vậy, vâng, câu hỏi rất có ý nghĩa, và thật không may, câu trả lời là (vẫn) "Không". Và không có NFS không phải là sự thay thế tuyệt vời cho trường hợp sử dụng đó vì nó phạt tất cả các hoạt động đọc từ đĩa hệ thống. Tuy nhiên, khởi động mạng từ đĩa hệ thống NFS là cách thay thế duy nhất để thực hiện trường hợp sử dụng mà tôi đã mô tả ở trên. Thật không may, vì thiết lập tác nhân khởi động mạng và NFS phức tạp hơn nhiều so với việc chỉ truy cập vào cùng một thiết bị khối vật lý.

Tái bút: Tôi muốn gửi một phiên bản ngắn hơn về nhận xét này, nhưng tôi không thể vì ngưỡng 51 điểm tín dụng ngớ ngẩn, vì vậy tôi phải viết một câu trả lời với cùng một chữ "Không" nhưng phải đưa ra quan điểm của mình tại sao một câu hỏi có liên quan mà không nhận được câu trả lời xứng đáng.

PPS: Tôi vừa tìm thấy ai đó tại StackExchange đề cập đến iSCSI. iSCSI có phần giống NFS, nhưng về mặt logic như một FibreChannel SAN. Bạn có thể truy cập (và chia sẻ) các thiết bị khối vật lý. Nó sẽ giúp việc chia sẻ đĩa khởi động dễ dàng hơn, do đó bạn không cần thiết lập khả năng khởi động mạng bootd có thể rất khó khăn. Nhưng sau đó trên AWS, cũng không có khả năng khởi động mạng.


1

Mặc dù trước đây EBS chỉ cho phép một phiên bản EC2 duy nhất được gắn vào một ổ đĩa nhất định, giờ đây có thể gắn nhiều tệp, ít nhất là cho các khối io1. Để biết thêm thông tin, xem bài đăng blog AWS này .


0

Tại sao bạn không tạo một thể hiện với âm lượng và sshfs cho âm lượng đó trong các thể hiện khác?


-3

Bạn hoàn toàn có thể sử dụng một ổ đĩa trên nhiều máy chủ trong AWS. Tôi sử dụng sshfs để gắn ổ đĩa ngoài và chia sẻ nó với nhiều máy chủ trong EC2.

Lý do tôi cần để kết nối một ổ đĩa với nhiều máy chủ là để có một nơi duy nhất để đặt tất cả các bản sao lưu của tôi trước khi kéo chúng xuống cục bộ.

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.