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?
linux
file
amazon-ec2
amazon-web-services
Mikhail
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
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?
sumber
aws ec2 describe-volumes
mengembalikan array lampiran.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
sumber
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.
sumber
EBS baru saja mengumumkan bahwa ini mungkin: https://aws.amazon.com/about-aws/whats-new/2020/02/ebs-multi-attach-available-provisioned-iops-ssd-volumes/
sumber
Ada sesuatu di dunia TI yang dikenal sebagai Clustered Filesystem, Redhat GFS, Oracle OCFS2, Veritas CFS ...
sumber
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:
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.
sumber
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 .
sumber
Mengapa Anda tidak akan membuat satu instance dengan volume dan sshfs ke volume itu dalam kasus lain?
sumber
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.
sumber