Saya memiliki situs web yang mendapatkan sekitar 7rb permintaan per detik pada server nginx. Server ini keduanya menangani penulisan ulang ke server Apache serta melayani file statis, gambar, dll secara langsung. File statis adalah bagian terbesar di sana dengan sekitar 5k permintaan.
Dengan upgrade arsitektur, saya berpikir tentang menggunakan server file pusat yang mengekspor direktori yang berisi file-file statis ini melalui NFS. Tidak akan ada akses tulis ke file-file ini, sehingga direktori dapat dimount read-only pada mesin nginx. Perhatian utama saya adalah:
Apakah NFS cukup cepat untuk ini? Apakah ada batasan berapa banyak permintaan yang dapat ditangani NFS? Apakah ada beberapa opsi "must-have" ketika menuju ke sini?
Bonus: apakah ada alternatif lain untuk pengaturan ini selain NFS?
Terima kasih!
Jawaban:
Dengan menyiapkan server NFS pusat Anda memperkenalkan satu titik kegagalan ke dalam desain Anda. Itu saja harus menjadi pemecah kesepakatan. Jika tidak, NFS bisa menjadi cukup cepat untuk memuat seperti ini. Faktor-faktor penting akan memiliki RAM yang cukup untuk menyimpan file-file cache, interkoneksi latensi rendah (Gig-E atau lebih baik), dan penyetelan (kurang dari sebelumnya).
Anda juga harus sangat mempertimbangkan menggunakan rsync atau alat serupa untuk menjaga salinan lokal dari pembaruan file statis pada setiap server web individu. Pilihan lain mungkin SAN atau solusi server NFS berlebihan (keduanya akan jauh lebih rumit dan mahal daripada ide rsync).
sumber
Saya menggunakan cachefilesd (dan kernel linux baru-baru ini, dengan cachef) untuk men-cache file NFS ke HD lokal. Dengan cara ini, setiap pembacaan di nfs akan menyalin file ke direktori / var / cache / fs dan bacaan berikutnya akan dikirim dari sana, dengan kernel memeriksa nfs jika konten masih valid.
Dengan cara ini Anda dapat memiliki NFS pusat, tetapi tanpa kehilangan kinerja file lokal
Cachefilesd akan membereskan pembersihan file-file lama ketika ukuran / inode gratis mencapai tingkat yang dikonfigurasi, sehingga Anda dapat melayani data yang tidak biasa dari NFS dan permintaan umum dari HD
Tentu saja, juga menggunakan pernis untuk menyimpan permintaan yang lebih umum dan menyimpan nginx / NFS dari melayani kemudian.
Berikut adalah cachefilesd howto kecil
sumber
Kecepatannya tergantung pada banyak faktor:
Batas file terbuka melalui NFS adalah batasan sistem operasi host. FreeBSD misalnya memiliki banyak opsi penyetelan yang berbeda untuk mendukung sejumlah besar file terbuka, tetapi itu tergantung pada jumlah RAM di server Anda.
Alternatif untuk server file pusat adalah dengan menggunakan sinkronisasi / replikasi antara server web Anda (seperti yang disarankan Chris S). rsync atau DRBD mungkin merupakan pilihan yang bagus dan hemat biaya.
sumber
Saya akan menyarankan terhadap NFS kecuali Anda menaruh Caching di sana. Cache nginx lebih baik daripada tidak sama sekali, tetapi Varnish lebih baik.
Dengan demikian, jika beban Anda berubah menjadi konten yang lebih dinamis daripada statis, maka akan lebih penting untuk menyajikan file aplikasi dari disk lokal.
Jika Anda memasukkan NFS, pastikan Anda memiliki redundansi.
sumber