Saya mencoba mereplikasi traffic yang diterima oleh satu server nginx spesifik ke dua server. Tujuannya bukan untuk memuat-keseimbangan, tetapi untuk memutar ulang input yang sama pada semua server nginx.
Contoh: Nginx menerima HTTP POST. Saya ingin mengirim POST yang sama ke server lain.
** PEMBARUAN **
Situasinya mudah dan tidak rumit. Saya hanya perlu mengirim ulang data POST (atau MENDAPATKAN atau data permintaan) ke IP server lain (juga menjalankan instance nginx). Hanya itu.
PENGGUNA -> POST DATA -> NGINX INSTANCE ---- REDIRECT ---> SERVER 1 AND SERVER 2
Jawaban:
Saya dapat mereplikasi menggunakan status post_action.
Sekarang mengirim data dua server.
Jika upstream Anda tidak mendukung fastcgi (terjadi dalam kasus saya), ganti dengan proxy_pass.
sumber
Saya tidak percaya Anda bisa melakukan ini dengan nginx dengan sendirinya; membaca cepat bit yang relevan dari dokumentasi nginx (arahan hulu dan proksi) tidak menyarankan Anda bisa. Seperti disebutkan dalam komentar, ini juga memecah HTTP, karena tidak ada kejelasan yang mana dari dua server belakang akan merespons.
Salah satu alternatif adalah menggunakan sesuatu seperti pernis dan melakukan replay ke server belakang kedua menggunakan varnishreplay:
https://www.varnish-cache.org/docs/2.1/reference/varnishreplay.html
Saya belum menggunakannya, jadi saya tidak tahu apakah Anda dapat membuatnya memutar ulang lalu lintas hampir bersamaan dengan server belakang pertama.
sumber
Yang ingin Anda gunakan adalah sesuatu seperti EM-Proxy [1]. Ini dengan mudah menangani pemisahan permintaan http di sejumlah server. Itu juga dengan benar menangani mengembalikan data hanya dari server langsung dan memblokir yang lain sehingga pengguna tidak mendapatkan beberapa respons.
[1] https://github.com/igrigorik/em-proxy/
sumber
Gunakan penyimpanan pusat seperti server NFS dan setiap node web nginx memasang share NFS (tingkat file). Atau gunakan sistem file cluster seperti OCFS2 dan setiap node web memasang LUN / partisi (tingkat blok).
sumber