Cara terbaik untuk berbagi direktori unggah file di server web penskalaan horizontal

9

Saat ini saya sedang mencoba untuk membuat kluster yang dapat diskalakan secara horizontal untuk aplikasi web berbasis drupal, yang terlihat seperti diagram berwarna di bawah ini:

Penyeimbang beban menerapkan sesi tempel, sehingga pengguna tetap menyatakan setelah mereka dialokasikan server untuk bekerja dengan.

Setiap server aplikasi memiliki yang berikut ini:

  • pernis di bagian depan
  • drupal 6 di tengah berjalan di atas tumpukan lampu
  • memcached di belakang

Dua server database mysql berada di IP bersama, dan mereka berada di cluster HA dengan DRBD, dan detak jantung, sehingga kehilangan satu tidak akan menjatuhkan seluruh platform.

masukkan deskripsi gambar di sini

Ada beberapa hal yang saya tidak yakin tentang itu. Saya menghargai pendapat Anda tentang:

Bagaimana seharusnya skala penyimpanan file secara horizontal?

Saya sedang berpikir untuk menggunakan NFS untuk memasang direktori file bersama di setiap server aplikasi, jadi file yang diunggah di satu tempat tersedia di semuanya. Saya berpikir tentang NFS karena sudah ada sejak lama, dan saya tidak punya pengalaman dengan MogileFS atau GlusterFS, dan ini adalah sesuatu yang telah kami gunakan sebelumnya, jadi kami lebih akrab dengannya.

Apakah ada pedoman untuk mengikuti untuk mengetahui berapa banyak server itu bijaksana untuk berbagi direktori melalui NFS dengan cara ini?

Bagaimana seharusnya HA disediakan pada penyimpanan file bersama di sini?

Satu masalah di sini adalah bahwa server NFS adalah satu titik kegagalan.

Kami sudah menggunakan Detak Jantung dan DRBD pada server Mysql, dan saya lebih suka untuk menjaga jumlah teknologi yang terlibat dalam tumpukan serendah mungkin - jebakan apa yang akan terjadi jika saya menggunakan strategi HA yang sama untuk file tersebut server juga?

Pendekatan alternatif

Ini untuk situs yang menghadap internal, dengan sejumlah pengguna terbatas yang sesekali menggunakan situs ini secara intensif untuk waktu yang singkat, ketika inisiatif internal aktif. Jadi ini tidak perlu skala jauh seperti startup.

Mengingat bahwa

  • ada batas lalu lintas atas yang bisa kita harapkan
  • menambahkan menambahkan HA ke file server, dan merancang pengaturan untuk skala secara horizontal seperti ini memperkenalkan kompleksitas yang cukup besar

Saya juga mempertimbangkan hanya membuat dua server web lebih besar sehingga mereka yang akan menangani beban puncak di antara mereka, dan mengatur secara bersamaan, atau rsync melintasi keduanya pada pekerjaan cron, sehingga:

  • file-file itu masih dalam sinkronisasi (sesi tempel menjaga pengguna di server yang sama dengan file yang diunggah)
  • kehilangan satu berarti situs tersebut masih operasional.

Apakah ini terdengar seperti cara yang mungkin untuk mengatasi kemungkinan sakit kepala kompleksitas NFS / DRBD HA?

Terima kasih,

C

Chris Adams
sumber

Jawaban:

3

Server NFS setidaknya memiliki ketentuan yang sama dengan server MySQL, karena mereka pada dasarnya memiliki fungsi dan keterbatasan yang sama (keduanya adalah tempat di mana Anda menulis data). Saya tidak suka gagasan beberapa penulis untuk NFS, itu membuatnya sangat kompleks untuk mengelola kunci file dan pengalaman saya tidak berjalan dengan baik pada titik itu.

Saran saya adalah untuk memusatkan semua penulisan pada salah satu server aplikasi (mungkin memiliki satu server aplikasi yang didedikasikan untuk menulis di server NFS) dan beberapa server aplikasi pembaca pemasangan hanya membaca (saya tahu bahwa drupal memiliki beberapa thumbnail dinamis yang perlu ditulis, tetapi Anda dapat memanfaatkannya dengan RO fs). Anda memerlukan setidaknya server NFS kedua (menggunakan DRBD adalah pilihan terbaik di sini jika Anda tidak memiliki penyimpanan bersama seperti SAN) untuk memastikan HA.

Untuk yang terakhir, lihatlah Gluster dan sistem terdistribusi lainnya.

coredump
sumber
0

Anda dapat mencoba mogileFS. Saya telah menggunakan salah satu proyek kami. Mudah digunakan dan dikonfigurasikan dan dapat menskalakan dan tidak ada titik kegagalan tunggal.

http://danga.com/mogilefs/

Sameer
sumber
0

Cara terbaik adalah menemukan solusi penyimpanan yang baik. Bergantung pada skala dan jenis aplikasi Anda dapat menggunakan NAS yang baik, dengan dukungan untuk NFS dan setidaknya dua port gigabit dan power suplies (checkout beberapa solusi perusahaan).

Jika Anda benar-benar serius tentang aplikasi Anda, taruhan terbaik Anda adalah memeriksa beberapa solusi SAN, tetapi ini mungkin sangat mahal karena memerlukan perangkat keras khusus (dapat dilakukan dengan perangkat keras yang ada di rak tetapi mungkin terlalu lambat).

André S.
sumber