Saya telah mengembangkan RAP WebAPI menggunakan modul Layanan. Ini bekerja dengan baik. Saya memiliki klien dari API itu dengan penggunaan yang diproyeksikan yang mengharuskan saya skala secara horizontal contoh Drupal saya. Perhatikan bahwa karena sifat API saya, yang membutuhkan sumber daya CPU dan GPU yang signifikan, saya tidak dapat menggunakan server cloud. Juga, karena sifat API saya, instance Drupal harus dijalankan pada OS Windows. (Aplikasi saya hanya memerlukan perangkat lunak yang tersedia di Win64.) Saya memiliki server yang cukup gemuk di lokasi bersama sekarang, dan untuk klien yang ambisius ini saya berencana untuk secara horizontal mengukur perangkat keras saya dengan cara berikut:
- Satu server CentOS menjalankan HaProxy sebagai penyeimbang beban ujung depan,
- Dua untuk memulai, dengan lebih banyak ditambahkan sesuai kebutuhan, server Windows Server 2008 R2 hosting Drupal,
- Satu server basis data CentOS menyediakan basis data tunggal untuk beberapa instance Drupal,
- Satu server database CentOS berjalan dalam mode replikasi jika server DB 1 mati.
Pertanyaan saya terkait dengan cara kerja penyeimbang beban HaProxy. Saya berasumsi bahwa sessionIds yang dibuat oleh instance Drupal akan menjadi unik satu sama lain. Apakah penyeimbang beban melihat sessionId dan merutekan semua permintaan ke server yang sama yang menghasilkan sessionId itu? Bagaimana cara komunikasi REST WebAPI bekerja jika load balancing menyebabkan setiap permintaan API untuk pergi ke server yang berbeda? Apakah ada dan semua data yang dirujuk oleh WebAPI harus disimpan dalam database karena saya tidak dapat memastikan bahwa beberapa permintaan API untuk sumber daya yang sama akan dialihkan ke instance Drupal yang sama?