Langkah-langkah untuk membuat layanan JNDI HornetQ yang ada sebagai HA?

177

TL; DR

Apa langkah-langkah untuk mengkonfigurasi layanan HA-JNDI dengan pengaturan HornetQ? Saya percaya dokumentasinya sedikit tersebar. Saya telah membaca dokumen di sini tetapi tampaknya tidak menggambarkan secara rinci.

Versi yang lebih panjang:

Jadi kami memiliki setup HornetQ JMS bersama dengan JNDI. Kami telah mengatakan 5 server, yang menjalankan instance master HornetQ JMS dengan layanan JNDI di masing-masing. Pada masing-masing dari 5 server ini, kami juga memiliki budak yang menjalankan beberapa master HornetQ lainnya.

Menggambarkan:

Server A - HornetQa_master, JNDI, HornetQb_slave
Server B - HornetQb_master, JNDI, HornetQc_slave
Server C - HornetQc_master, JNDI, HornetQd_slave
Server D - HornetQd_master, JNDI, HornetQe_slave
Server E - HornetQe_master, JNDI, HornetQa_slave

Masing-masing server HornetQ ini berfungsi sebagai middleware untuk berbagai kebutuhan backend kami, sehingga itu berarti 5 server, 5 instance master HornetQ, 5 instance slave HornetQ, dan 5 server JNDI. Masalahnya, bagaimanapun, dengan pengaturan ini adalah bahwa jika host server (bukan hanya prosesnya, host itu sendiri), katakanlah A turun, idealnya layanan harus mundur ke HornetQ yang berjalan di server E yang menampung budak HornetQ A. Namun, untuk melanjutkan sebagai master HornetQ, HornetQa_slave perlu berbicara dengan proses JNDI yang berjalan di server A (saya berasumsi untuk mereplikasi pesan). Karena host A itu sendiri turun, HornetQa_slave berjalan pada E tidak memiliki cara untuk berbicara dengan JNDI pada A, dan dengan demikian, tidak dapat dilanjutkan sebagai proses master.

Seandainya layanan JNDI sangat tersedia, proses HornetQ budak dapat dilanjutkan sebagai master seperti yang diharapkan. Adakah yang bisa dengan baik menunjuk ke dokumen atau mengilustrasikan dalam langkah-langkah sederhana bagaimana kita dapat mengubah pengaturan yang ada menjadi HA-JNDI? Untuk apa nilainya, saya telah membaca banyak sumber , tetapi tampaknya tidak menggambarkan secara lebih rinci tentang bagaimana cara melanjutkan konfigurasi HA-JNDI. Harap beri tahu saya jika Anda memerlukan info lebih lanjut tentang pengaturan kami saat ini.

gravetii
sumber
8
Di mana klien Anda berjalan? Apakah mereka berjalan pada instance AS yang sama atau dari instance / JVM lain, atau keduanya?
jjhavokk
3
@jjhavokk mereka akan menggunakan JVM lain
gravetii
4
Bisakah Anda mengaktifkan HornetQ dalam mode Ketersediaan Tinggi (replikasi aktif - pasif)? Pasangan itu dengan penemuan server dinamis dan Anda harus memiliki fallback yang andal. Lihat docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/… dan docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/…
diginoise
4
Versi jboss apa yang Anda jalankan?
eis
5
Saya melihat ini benar-benar tua, tetapi saya bertanya-tanya apakah Anda menemukan jawabannya. Pada saat ini Anda mungkin tahu bahwa HA mengharuskan <forward-when-no-consumers> true </forward-when-no-consumers> untuk menyebarkan pesan, tetapi kegagalan untuk menguasai tidak berhasil. Saya sudah memiliki konfigurasi yang sama di weblogic dan websphere di mana failback bekerja, tetapi tidak dengan jboss. Apakah ada sesuatu yang diatur untuk memungkinkan master untuk menyinkronkan dan memperbarui pesan yang terlewat sehingga kegagalan berfungsi dengan baik?
user1442498

Jawaban:

1

Dengan arsitektur yang dijelaskan, sepertinya sulit bagi saya, karena memang Anda perlu mengkonfigurasi ulang budak sebagai master dan kemudian Anda akan mengalami pemadaman tertentu.

HornetQ HA disediakan melalui pasangan pencadangan langsung dan penyeimbangan beban disediakan melalui sebuah cluster.

Jika Anda ingin keduanya HA dan load-balancing maka Anda akan membutuhkan 2 pasangan live-backup yang dikelompokkan bersama.

Sumber: https://developer.jboss.org/thread/254232

Anda dapat mereferensikan master bukan dengan nama host tetapi menggunakan alamat IP virtual , sehingga jika masternya down, Anda dapat mengkonfigurasi ulang salah satu slave sebagai master, dan memulai ip virtual sehingga Anda tidak perlu mengkonfigurasi ulang sisanya. para budak. (Untuk menjaga HA bahkan ketika master sedang down, Anda ingin memiliki 2 budak, sehingga Anda dapat me-restart salah satu dari mereka sebagai master dan masih satu akan berjalan).

Cara lain untuk mencapai hasil yang sama adalah dengan nama host DNS khusus untuk master yang dapat Anda konfigurasi ulang untuk menunjuk ke IP yang berbeda jika satu host turun. Karena DNS di-cache, entri ini sebaiknya ada di file 'host'.

Jika 3 host per HA-domain terlalu banyak perangkat keras, Anda dapat melakukannya dengan lebih mudah dengan server virtual tanpa perlu membeli lebih banyak perangkat keras.

Jose Manuel Gomez Alvarez
sumber