Pertama, mari bicara sentinel.
Sentinel mengelola failover, tidak mengkonfigurasi Redis untuk HA. Ini adalah perbedaan penting. Kedua, diagram yang Anda posting sebenarnya adalah pengaturan yang buruk - Anda tidak ingin menjalankan Sentinel pada node yang sama dengan node Redis yang dikelola. Ketika Anda kehilangan tuan rumah itu, Anda kehilangan keduanya.
Mengenai "Apakah itu pemborosan sumber daya?" itu tergantung pada kasus penggunaan Anda. Anda tidak memerlukan tiga node Redis dalam penyiapan itu, Anda hanya perlu dua. Tiga meningkatkan redundansi Anda, tetapi tidak diperlukan. Jika Anda membutuhkan redundansi tambahan maka itu bukan pemborosan sumber daya. Jika Anda tidak memerlukan redundansi, Anda cukup menjalankan satu instance Redis dan menyebutnya baik - karena menjalankan lebih banyak akan "sia-sia".
Alasan lain untuk menjalankan dua budak adalah untuk membagi bacaan. Sekali lagi, jika Anda membutuhkannya maka itu tidak akan sia-sia.
Mengenai "Apakah ada cara yang lebih baik untuk menggunakan sepenuhnya sumber daya yang tersedia?" kami tidak dapat menjawabnya karena terlalu bergantung pada skenario dan kode spesifik Anda. Artinya, jika jumlah data yang akan disimpan "kecil" dan kecepatan perintah tidak terlalu tinggi, ingatlah bahwa Anda tidak perlu mendedikasikan sebuah host untuk Redis.
Sekarang untuk "Apakah pengelompokan Redis merupakan alternatif untuk Redis sentinel?". Itu benar-benar tergantung sepenuhnya pada kasus penggunaan Anda. Redis Cluster bukanlah solusi HA - ini adalah solusi multiple writer / lebih besar dari ram. Jika tujuan Anda hanya HA maka kemungkinan besar tidak akan cocok untuk Anda. Redis Cluster hadir dengan batasan, terutama di sekitar operasi multi-kunci, jadi ini belum tentu merupakan operasi "cukup gunakan cluster" langsung.
Jika menurut Anda memiliki tiga host yang menjalankan Redis (dan tiga menjalankan sentinel) adalah pemborosan, Anda kemungkinan besar akan menganggap Cluster lebih seperti itu karena memang membutuhkan lebih banyak sumber daya.
Pertanyaan yang Anda ajukan mungkin terlalu luas dan berbasis opini untuk bertahan seperti yang tertulis. Jika Anda memiliki kasus / masalah tertentu yang sedang Anda tangani, harap perbarui agar kami dapat memberikan bantuan dan informasi khusus.
Pembaruan untuk spesifik:
Untuk manajemen failover yang tepat dalam skenario Anda, saya akan menggunakan 3 sentinel, satu yang berjalan di server JBoss Anda. Jika Anda memiliki 3 node JBoss, lanjutkan dengan satu di masing-masing. Saya akan memiliki pod Redis (master + slave) di node terpisah, dan membiarkan sentinel mengelola failover.
Dari sana, tinggal wiring JBoss / Jedis menggunakan Sentinel untuk informasi dan manajemen koneksi. Karena saya tidak menggunakannya, pencarian cepat ternyata Jedis memiliki dukungan untuk itu, Anda hanya perlu mengkonfigurasinya dengan benar. Beberapa contoh yang saya temukan ada di Mencari contoh Jedi dengan Sentinel dan https://github.com/xetorthio/jedis/issues/725 yang berbicara tentang JedisSentinelPool
menjadi rute untuk menggunakan kolam.
Ketika Sentinel menjalankan failover, klien akan diputuskan dan Jedis akan (harus?) Menangani koneksi ulang dengan menanyakan Sentinel siapa master saat ini.