Bisakah Anda melampirkan Amazon EBS ke beberapa instance?

138

Saat ini kami menggunakan beberapa webserver untuk mengakses satu server mysql dan server file. Melihat pindah ke cloud, dapatkah saya menggunakan pengaturan yang sama dan melampirkan EBS ke beberapa mesin contoh atau apa solusi lain?

Mikhail
sumber
Jawaban yang diberikan adalah tidak. Tapi alasan yang dikutip itu menggangguku. Semua orang seperti "itu akan seperti memasang hard drive yang sama ke beberapa komputer" - dan saya pergi "dan jadi apa?" Dengan SCSI atau FibreChannel SAN kami melakukan itu sepanjang waktu, sangat masuk akal. Misal untuk read only mount beberapa server pada data read only yang sama. Oracle dan RDBM besar lainnya dirancang untuk berjalan dalam mode cluster, di mana beberapa server menggunakan penyimpanan fisik yang sama. Itu bisa jauh lebih cepat. EBS / NFS lambat, bukan pilihan. Tetapi ingatlah, bahkan jika Anda dapat melampirkan ke beberapa EC2, IOPS Anda masih akan ditutup.
Gunther Schadow
Pada Februari 2020, Anda dapat melampirkan jenis EBS tertentu ke beberapa instance EC2 - aws.amazon.com/blogs/aws/…
Koshur

Jawaban:

135

UPDATE (April 2015) : Untuk kasus penggunaan ini, Anda harus mulai mencari di Amazon Elastic File System (EFS) baru , yang dirancang untuk dilipatgandakan persis seperti yang Anda inginkan. Perbedaan utama antara EFS dan EBS adalah mereka memberikan abstraksi yang berbeda: EFS memperlihatkan protokol NFSv4, sedangkan EBS menyediakan akses IO blok mentah.

Di bawah ini Anda akan menemukan penjelasan asli saya mengapa tidak mungkin untuk memasang perangkat blok mentah dengan aman di beberapa mesin.


POST ASLI (2011):

Bahkan jika Anda bisa mendapatkan volume EBS yang dilampirkan ke lebih dari satu contoh, itu akan menjadi _REALLY_BAD_IDEA_. Mengutip Kekoa, "ini seperti menggunakan hard drive di dua komputer sekaligus"

Mengapa ini ide yang buruk? ... Alasan Anda tidak dapat melampirkan volume ke lebih dari satu contoh adalah bahwa EBS menyediakan abstraksi "blok penyimpanan" tempat pelanggan menjalankan sistem file seperti ext2 / ext3 / dll. Sebagian besar sistem file ini (misalnya, ext2 / 3, FAT, NTFS, dll) ditulis dengan asumsi mereka memiliki akses eksklusif ke perangkat blok. Dua contoh mengakses sistem file yang sama hampir pasti berakhir dengan air mata dan korupsi data.

Dengan kata lain, pemasangan ganda volume EBS hanya akan berfungsi jika Anda menjalankan sistem file cluster yang dirancang untuk berbagi perangkat blok antara beberapa mesin. Selain itu, bahkan ini tidak akan cukup. EBS perlu diuji untuk skenario ini dan untuk memastikan bahwa ia memberikan jaminan konsistensi yang sama dengan solusi perangkat blok bersama lainnya ... yaitu, bahwa blok tidak di-cache di tingkat menengah yang tidak dibagi seperti kernel Dom0, kernel Xen, dan kernel DomU. Dan kemudian ada pertimbangan kinerja sinkronisasi blok antara banyak klien - sebagian besar sistem file berkerumun dirancang untuk bekerja pada SAN berdedikasi kecepatan tinggi, bukan ethernet komoditas upaya terbaik. Kedengarannya sangat sederhana, tetapi apa yang Anda minta adalah hal yang sangat tidak penting.

Atau, lihat apakah skenario berbagi data Anda bisa NFS, SMB / CIFS, SimpleDB, atau S3. Semua solusi ini menggunakan protokol lapisan yang lebih tinggi yang dimaksudkan untuk berbagi file tanpa memiliki subsistem perangkat blok bersama. Berkali-kali solusi semacam itu sebenarnya lebih efisien.

Dalam kasus Anda, Anda masih dapat memiliki instance / fileserver MySql tunggal yang diakses oleh banyak web front-end. Server file itu kemudian dapat menyimpan data pada volume EBS, memungkinkan Anda untuk mengambil backup snapshot malam. Jika instance menjalankan fileserver hilang, Anda dapat melepaskan volume EBS dan memasangnya kembali ke instance fileserver baru dan akan kembali dan berjalan dalam hitungan menit.

"Apakah ada yang seperti S3 sebagai sistem file?" - iya dan tidak. Ya, ada solusi pihak ke-3 seperti s3fs yang berfungsi "ok", tetapi di bawah kap mereka masih harus membuat panggilan layanan web yang relatif mahal untuk setiap baca / tulis. Untuk dir alat yang dibagikan, berfungsi dengan baik. Untuk jenis penggunaan FS berkerumun yang Anda lihat di dunia HPC, bukan kesempatan. Untuk melakukan yang lebih baik, Anda memerlukan layanan baru yang menyediakan protokol berorientasi koneksi biner, seperti NFS. Menawarkan filesystem multi-mount sedemikian rupa dengan kinerja dan perilaku yang wajar akan menjadi fitur tambahan yang hebat untuk EC2. Saya sudah lama menjadi penasihat Amazon untuk membangun sesuatu seperti itu.

Dave Dopson
sumber
1
Masalah dengan NFS (dan pendekatan serupa SMB) adalah satu mesin akan bertindak sebagai server (di mana sistem file akan dipasang secara fisik). Mesin yang turun akan menyebabkan volume EBS (atau disk juga turun). Apakah ada yang seperti S3 sebagai sistem file ?.
sheki
1
Just to Clarify - Jika volume EBS dilampirkan ke sebuah instance dan instance tersebut mati serempak, volume EBS akan baik-baik saja. Ini hanya akan "turun" dalam arti bahwa untuk mengaksesnya, Anda harus melepaskannya dari instance bawah dan memasangnya kembali ke instance baru.
Dave Dopson
"... hampir pasti berakhir dengan air mata dan korupsi data." Klasik. @DaveDopson
Beachhouse
5
Bagi siapa pun yang melihat jawaban ini, ketahuilah bahwa Amazon baru saja merilis EFS yang memungkinkan untuk berbagi drive yang dikembangkan secara otomatis yang dapat dipasang di NFS pada banyak contoh.
JoshStrange
@JoshStrange - terima kasih atas perhatiannya. Pos yang diperbarui.
Dave Dopson
78

Perbarui (2020) Sekarang mungkin!

Ini sekarang dimungkinkan dengan jenis instance terbaru yang berjalan di AWS Nitro dalam Zona Ketersediaan yang sama. Ada beberapa peringatan tetapi ini bagus untuk kasus penggunaan tertentu yang membutuhkan kecepatan EBS dan di mana EFS tidak layak.

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


Posting Asli (2009)

Tidak, ini seperti menggunakan hard drive di dua komputer.

Jika Anda ingin data bersama, Anda dapat menyiapkan server yang dapat diakses oleh semua mesin virtual Anda. Jika Anda menginginkan area penyimpanan sederhana untuk semua instance Anda, Anda dapat menggunakan layanan penyimpanan S3 Amazon untuk menyimpan data yang didistribusikan dan dapat diskalakan.

Pindah ke cloud, Anda dapat memiliki pengaturan yang sama persis, tetapi Anda dapat mengganti server file dengan S3, atau menyambungkan semua instance Anda ke server file Anda.

Anda memiliki banyak opsi, tetapi berbagi hard drive di antara instance mungkin bukan opsi terbaik.

Kekoa
sumber
14

Tidak, menurut dokumen EBS: "Volume hanya dapat dilampirkan pada satu instance pada satu waktu".

Bagaimana Anda menggunakan penyimpanan bersama saat ini? Jika itu hanya untuk melayani file dari server file, sudahkah Anda mempertimbangkan pengaturan sistem sehingga Anda dapat mem-proxy permintaan tertentu untuk suatu proses pada server file daripada meminta server web untuk melayani file-file itu?

Austin Mills
sumber
2
Berikut tautan untuk kutipan itu: aws.amazon.com/articles/1667 . Lihat FAQ di bagian bawah artikel. Membuat saya bertanya-tanya mengapa aws ec2 describe-volumesmengembalikan array lampiran.
Mark Berry
4

Saya cukup yakin Anda tidak bisa, tetapi Anda dapat mengkloning EBS dan melampirkannya ke contoh lain.

Ini berguna untuk dataset tetap, atau untuk pengujian pada data 'nyata' tetapi tidak mengizinkan lebih dari 1 instance untuk beroperasi pada satu toko blok tunggal

David Snabel-Caunt
sumber
4

Beberapa Web Server yang mengakses MySQL Server & File Server adalah normal di AWS. Beberapa praktik terbaik yang harus diikuti untuk arsitektur yang disebutkan di atas adalah:

Butir 1) MySQL pada EC2 dapat diatur sebagai Master-Slave dalam mode async / semi sync dalam AWS. EBS-OPT + PIOPS dalam RAID 0 direkomendasikan untuk DB berkinerja tinggi

Butir 2) Atau Anda dapat menggunakan mode Amazon RDS + Multi-AZ. Untuk membaca skala Multi RDS Baca Replica dapat dilampirkan ke MySQL RDS.

Poin 3) Volume EBS tidak dapat dilampirkan ke Multiple EC2 secara bersamaan. Anda dapat membuat Server file berdasarkan GlusterFS di Amazon EC2 menggunakan EBS. Beberapa Web Server dapat berbicara dengan GlusterFS tunggal secara bersamaan di AWS infra.

Butir 4) Jika aplikasi Anda dapat diintegrasikan dengan S3 sebagai penyimpanan file, maka itu lebih disukai karena stabilitas yang dibawa ke arsitektur. Anda juga dapat mengakses S3 menggunakan alat seperti S3fuse juga dari aplikasi Anda.

Harish Ganesan
sumber
2

Ada sesuatu di dunia TI yang dikenal sebagai Clustered Filesystem, Redhat GFS, Oracle OCFS2, Veritas CFS ...

DKSG
sumber
periksa komentar untuk jawaban
ddopson
1
@sheki Saya pikir komentar Anda untuk jawaban ddopson sama sekali tidak relevan dengan sistem file yang dikelompokkan. Sistem File Clustered dirancang untuk secara bersamaan dipasang oleh beberapa server. Inti dari clusteredfs adalah untuk menghindari titik kegagalan tunggal.
Ryan
2

Jawaban singkatnya adalah kategori "Tidak". Yang lain mengatakannya di atas.

Mereka yang mengatakan "ya" tidak menjawab pertanyaan, tetapi pertanyaan yang berbeda. Jika EFS hanyalah layanan NFS, maka itu bukan jawaban untuk pertanyaan seperti yang dinyatakan sebelumnya. Dan tidak masalah jika EFS "diluncurkan di semua zona" atau tidak, karena Anda dapat melakukan sendiri contoh NFS Anda sendiri, dan memiliki beberapa server memasang NFS. Itu bukan sesuatu yang baru, kami sudah melakukannya pada tahun 1992. SMB dan sshfs, semua ini hanyalah cara untuk memasang drive sebagai sistem file jarak jauh.

Mereka yang mengatakan "mengapa Anda ingin melakukan itu" atau "semuanya akan berakhir dengan air mata" adalah salah. Kami telah memasang beberapa disk ke beberapa server selama beberapa dekade. Jika Anda pernah bekerja dengan SAN (Storage Area Network) kemampuan untuk melampirkan perangkat yang sama ke beberapa node biasanya melalui FibreChannel SAN benar-benar normal. Jadi siapa pun yang telah menjalankan server satu dekade yang lalu sebelum virtualisasi / server cloud menjadi ada di mana-mana memiliki beberapa eksposur untuk itu.

Segera ada sistem file berkerumun di mana dua sistem dapat membaca dan menulis ke volume yang sama persis. Saya percaya ini dimulai dengan waktu VAX dan Alpha VMS dalam sejarah. Sistem file yang dikelompokkan menggunakan skema pengecualian bersama terdistribusi untuk dapat memanipulasi blok secara langsung.

Keuntungan memasang disk yang sama ke banyak node adalah kecepatan dan mengurangi titik kegagalan tunggal.

Sekarang, sistem file berkerumun tidak menjadi sangat populer di bisnis hosting "konsumen", itu benar. Dan mereka rumit dan memiliki beberapa jebakan. Tetapi Anda bahkan tidak memerlukan sistem file berkerumun untuk menggunakan disk yang terpasang ke beberapa node komputasi. Bagaimana jika Anda ingin drive read-only? Anda bahkan tidak memerlukan sistem file berkerumun! Anda cukup meletakkan / etc / fstab di perangkat fisik yang sama dengan read only (ro). Kemudian Anda memasang ke 2 atau 10 EC2 server dan semuanya dapat membaca langsung dari perangkat itu!

Ada kasus penggunaan yang jelas untuk ini di dunia server cloud ketika membangun peternakan skala cepat. Anda dapat menyiapkan semua disk sistem utama dan hanya menggunakan boot dan konfigurasi disk yang sangat kecil untuk masing-masing server. Anda bahkan dapat mem-boot semuanya dari disk boot yang sama, dan tepat sebelum remount dari / dalam mode baca-tulis, Anda dapat memasukkan Union-FS dengan 3 layer:

  1. Disk sistem hanya-baca utama, dengan boot, kernel, dan instalasi userland
  2. Sistem file konfigurasi, dengan hanya beberapa file (kebanyakan di / etc) yang khusus untuk server individual. Disk ini dapat ditulis oleh server lain untuk mempersiapkan boot contoh baru. Contoh file di sini adalah / etc / hostname dan hanya sedikit file konfigurasi yang perlu tetap berbeda per node.
  3. Disk yang dapat ditulisi, yang mungkin tidak Anda perlukan, bisa berupa / tmp sebagai sistem file memori.

Jadi, ya pertanyaannya masuk akal, dan sayangnya jawabannya adalah (masih) "Tidak". Dan tidak ada NFS bukan pengganti yang bagus untuk use case karena menghukum semua aktivitas membaca dari disk sistem. Namun, boot jaringan dari disk sistem NFS adalah satu-satunya alternatif untuk menerapkan use case yang saya jelaskan di atas. Sayangnya, karena mengatur agen boot jaringan dan NFS jauh lebih sulit daripada hanya mengakses perangkat blok fisik yang sama.

PS: Saya ingin mengirimkan versi yang lebih pendek dari ini sebagai komentar, tetapi saya tidak bisa karena ambang batas poin kredit 51 yang konyol, jadi saya harus menulis jawaban dengan esensi yang sama "Tidak" tetapi untuk memasukkan poin saya mengapa ini pertanyaan yang relevan yang belum menerima jawaban yang layak.

PPS: Saya baru saja menemukan seseorang di StackExchange menyebutkan iSCSI. iSCSI agak seperti NFS, tetapi secara logis seperti FibreChannel SAN. Anda dapat mengakses (dan berbagi) perangkat blok fisik. Itu akan membuat berbagi disk boot lebih mudah sehingga Anda tidak perlu mengatur boot jaringan bootd yang dapat menjadi rumit. Tetapi kemudian pada AWS, tidak ada boot jaringan yang tersedia.

Gunther Schadow
sumber
1

Meskipun EBS sebelumnya hanya mengizinkan instance EC2 tunggal untuk dilampirkan ke volume yang diberikan, multi-attach sekarang mungkin, setidaknya untuk volume io1. Untuk informasi lebih lanjut, lihat posting blog AWS ini .

Avi
sumber
0

Mengapa Anda tidak akan membuat satu instance dengan volume dan sshfs ke volume itu dalam kasus lain?

Krish
sumber
-3

Anda benar-benar dapat menggunakan satu drive di beberapa server di AWS. Saya menggunakan sshfs untuk memasang drive eksternal dan membaginya dengan beberapa server di EC2.

Alasan saya perlu menghubungkan satu drive ke beberapa server adalah memiliki satu tempat untuk meletakkan semua cadangan saya sebelum menariknya ke bawah secara lokal.

Cory Thorson
sumber