GlassFish & Payara Auto-Clustering: Menjalankan Aplikasi High-Availabilty Jakarta EE dalam Cloud
Memastikan pengiriman layanan yang bebas masalah 24/7 adalah salah satu area yang paling sering dibahas dalam cloud hosting selama beberapa tahun terakhir. Solusi yang sangat jelas dan sering digunakan di sini adalah membangun infrastruktur berkluster untuk proyek Anda.
Dengan bertujuan untuk membantu pelanggan kami menangani tugas yang tidak sepele dan menghemat waktu untuk aktivitas terkait proyek lainnya, kami menciptakan solusi khusus untuk ketersediaan tinggi, yang dirancang untuk memfasilitasi hosting aplikasi Jakarta EE – integrasi Auto-Clustering untuk server aplikasi GlassFish dan Payara.
Keuntungan utama dari solusi ini adalah adanya interkoneksi otomatis dari beberapa instans server aplikasi ketika ada perubahan topologi aplikasi, yang menerapkan konfigurasi clustering yang umum digunakan.
Jadi, artikel di bawah ini menjelaskan bagaimana auto-clustering Glassfish dan Payara bekerja, serta spesifikasi topologi infrastruktur dan cara Anda dapat mendapatkan lingkungan pengembangan dan produksi yang sesuai dalam Jelastic PaaS.
Cara Kerja Auto-Clustering untuk GlassFish dan Payara
Secara umum, setiap “solusi berkluster” dapat didefinisikan sebagai kumpulan instans yang terhubung yang menjalankan stack yang sama dan mengoperasikan data yang sama. Dengan kata lain, ini berarti server yang bersangkutan harus di-skala horizontal dan berbagi sesi pengguna.
Mulai dari versi Jelastic 5.5.3, fitur Auto-Clustering baru diperkenalkan yang memungkinkan untuk mengaktifkan klasterisasi instans GlassFish dan Payara langsung dalam wizard topologi:

Pilih server aplikasi GlassFish atau Payara pada tab Java di wizard. Kemudian, di bagian tengah, temukan dan aktifkan pengalih Auto-Clustering yang sesuai. Konfigurasikan pengaturan lain sesuai kebutuhan Anda termasuk skala horizontal untuk mendapatkan solusi yang andal sejak awal.

Tip: Fitur Auto-Clustering juga tersedia untuk beberapa template perangkat lunak lainnya (misalnya, MySQL, MariaDB, PostgreSQL, Tomcat/TomEE, WildFly, Shared Storage, MongoDB, dan Couchbase).
Berdasarkan tujuan lingkungan Anda, Anda dapat mempertimbangkan untuk tidak menggunakan Auto-Clustering (misalnya, selama pengembangan). Dengan cara ini, server tunggal reguler akan dibuat tanpa mengkonfigurasi kluster.
Untuk produksi, klasterisasi adalah pilihan yang hampir wajib untuk memastikan ketersediaan tinggi aplikasi Anda dan pengalaman yang mulus/tidak terganggu bagi pelanggan. Penggunaan Auto-Clustering oleh Jelastic adalah cara termudah untuk mengimplementasikan topologi yang handal untuk layanan Anda tanpa perlu mengonfigurasi apa pun secara manual. Berikut adalah beberapa penyesuaian yang berlaku:
- untuk 2+ instans GlassFish (Payara), topologi lingkungan dilengkapi dengan load balancer (LB), yang dimaksudkan untuk menangani permintaan yang masuk dan mendistribusikannya ke seluruh pekerja
- Node tambahan Domain Administration Server (DAS) ditambahkan secara otomatis - instans yang didedikasikan untuk melakukan kontrol terpusat atas node kluster dan untuk mengkonfigurasi interaksi antar mereka melalui SSH. Integrasinya mencakup sejumlah spesifikasi:
- server administrasi ditautkan ke semua pekerja dalam lapisan server aplikasi dengan hostname alias DAS, yang dapat digunakan oleh pekerja untuk interaksi lebih lanjut
- untuk memungkinkan konektivitas dan kontrol node yang tepat, sistem secara otomatis menghasilkan pasangan kunci SSH untuk node DAS dan meletakkannya dalam sebuah volume, yang dipasang di semua instans kluster lainnya

Implementasi Replikasi Sesi
Untuk memastikan ketersediaan tinggi dari clustering GlassFish/Payara Anda, Jelastic PaaS secara otomatis mengkonfigurasi replikasi sesi di seluruh node pekerja. Dengan cara ini, semua data sesi pengguna, yang disimpan selama pemrosesan, didistribusikan di semua instans server aplikasi dari node yang benar-benar menangani permintaan.
Bersama dengan mekanisme sticky sessions yang secara otomatis dikonfigurasi pada lapisan load balancer, replikasi sesi memastikan hosting dengan keandalan yang ditingkatkan dan meningkatkan kemampuan failover aplikasi Anda dalam kluster GlassFish atau Payara semacam itu. Berikut ini adalah cara pendekatan yang digunakan untuk setiap stack akan sedikit berbeda - mari kita tinjau masing-masing pendekatan secara lebih detail.
Replikasi Sesi GlassFish dengan GMS
Di dalam kluster GlassFish, replikasi sesi didukung oleh Layanan Manajemen Kelompok (GMS) – sebuah komponen bawaan server aplikasi yang memastikan perlindungan failover, replikasi dalam memori, dan layanan transaksi serta timer untuk instans kluster.

GMS menggunakan TCP tanpa multicast untuk mendeteksi instans kluster. Ketika node baru bergabung dengan kluster GlassFish, sistem mendeteksi ulang semua pekerja yang sedang berjalan dan node DAS - mekanisme penemuan otomatis tersebut diterapkan melalui properti GMS_DISCOVERY_URI_LIST yang diatur ke nilai generate.

Replikasi Sesi Payara dengan Hazelcast
Replikasi sesi dalam kluster Payara didasarkan pada Hazelcast, yang memiliki manfaat tambahan yaitu sesuai dengan JCache dan menyediakan persistensi sesi Web dan EJB terpasang. Grid data dalam memori ini secara otomatis diaktifkan di semua instans Payara untuk menemukan anggota kluster lingkungan Anda melalui TCP tanpa multicast.
Untuk memungkinkan replikasi sesi, Anda harus terlebih dahulu mengaktifkan ketersediaan kontainer web. Hal ini memungkinkan properti kontainer web yang dikelola seperti sesi untuk digunakan di beberapa instans dengan konfigurasi yang sama.
Dalam Payara Server 4, Anda harus mengaktifkan Hazelcast dan secara manual mengkonfigurasi keterjangkauan. Ini semua disetel secara default di Payara 5 saat ini. Jika sudah mengubah konfigurasi apa pun, pastikan layanan keterjangkauan diaktifkan dan jenis penyimpanannya adalah "hazelcast" pada halaman aksesibilitas kontainer web.

Untuk mengelola pengaturan Hazelcast, akseslah Konsol Administrasi dan kunjungi halaman konfigurasi Domain Data Grid. Fitur Domain Data Grid Payara didasarkan pada pustaka Hazelcast. Ini menyediakan fungsi yang dibutuhkan untuk deployment group (fungsi clustering), fungsi caching, objek cluster CDI tunggal dan pemantauan penyimpanan data di Payara.

Menerapkan Aplikasi Contoh untuk Uji HA
Sekarang, mari kita periksa ketersediaan tinggi dari kluster yang tersusun otomatis semacam itu dengan contoh server GlassFish yang diskalakan. Untuk memastikan toleransi kesalahannya, kita akan menerapkan aplikasi uji khusus, yang memungkinkan kita menambahkan beberapa data sesi khusus dan melihat informasi rinci tentang server yang menangani sesi ini. Dengan cara ini, penghentian instans kluster tertentu memungkinkan kita memastikan bahwa sesi pengguna yang sudah berjalan akan terus diproses meskipun server yang bersangkutan mengalami kegagalan. Jadi, mari kita lihat ini secara praktis.
1. Klik Open in browser di samping lingkungan Anda untuk mengakses halaman awal server aplikasi.

Di halaman yang terbuka, pilih referensi go to the Administration Console dan masuk dengan kredensial yang diberikan kepada Anda melalui email saat pembuatan lingkungan.
2. Beralih ke bagian Applications dan unggah aplikasi clusterjsp.ear ke lokasi Packaged File to Be Uploaded to the Server.

3. Periksa untuk memastikan Availability diaktifkan dan atur cluster1 sebagai target aplikasi, lalu klik OK untuk melanjutkan.

4. Sekarang, buka lingkungan di browser dan tambahkan /clusterjsp ke URL.

Beri Nama dan Nilai khusus untuk atribut sesi Anda sendiri dan klik Add Session Data.
5. Kembali ke panel admin dan navigasi ke tab Clusters > cluster1 > Instances. Di sini, pilih dan Stop instans yang sesi Anda sedang berjalan (namanya di lingkaran pada gambar di atas).

6. Kembali ke aplikasi kami dan Reload Page dengan tombol yang sesuai.

Seperti yang Anda lihat, meskipun sesi diurus oleh instans lain, atribut khusus kami masih ditampilkan.
Tip: Semua pengaturan replikasi tersedia di bagian admin server Configurations > cluster1-config > Availability Service. Di sini, Anda dapat melihat mode replikasi berikut yang diaktifkan secara default:
- Web Container Availability
- EJB Container Availability

Kloning Kluster untuk Pengujian A/B
Saat merilis versi aplikasi baru atau sekadar menerapkan beberapa penyesuaian penting, merupakan praktik yang baik untuk memeriksa bagaimana perubahan yang baru diterapkan dapat memengaruhi kerja layanan dan ketertarikan pengguna Anda. Jelastic PaaS memungkinkan Anda melakukan pengujian seperti itu ‘secara cepat’ (yaitu tanpa waktu henti layanan dan secara tidak langsung untuk pelanggan Anda) dengan opsi Clone Environment.

Hasilnya, salinan kluster siap pakai akan dibuat, dengan semua modifikasi yang diperlukan sudah diterapkan. Lebih tepatnya, ini berarti bahwa node DAS yang dikloning beroperasi dengan pekerja yang dikloning yang sudah terdaftar dalam panel adminnya, dan semua aplikasi dari lingkungan asli di-deploy juga ke lingkungan yang dikloning tersebut. Oleh karena itu, satu-satunya yang tersisa bagi Anda adalah memeriksa ulang kode aplikasi & konfigurasi server khusus untuk IP/domain yang dikodekan secara keras dan memperbaikinya sesuai, jika ada.

Dengan cara ini, Anda dapat menerapkan perubahan yang dimaksudkan ke salinan lingkungan Anda tanpa mempengaruhi lingkungan produksi yang sebenarnya.
Selanjutnya, Anda juga dapat mengevaluasi produktivitas dan efektivitas versi aplikasi yang dimodifikasi dibandingkan dengan yang saat ini asli, yaitu melakukan apa yang disebut A/B Testing. Di Jelastic PaaS, ini dapat diimplementasikan dengan add-on Traffic Distributor tambahan.

Diletakkan di depan sepasang lingkungan dengan mode Sticky Sessions yang dipilih, ini menyediakan routing cerdas dari permintaan yang masuk sesuai dengan bobot backend yang dinyatakan. Untuk detail lebih lanjut tentang konfigurasi TD yang tepat dalam kasus ini, lihat panduan A/B Testing.
...dan Beberapa Tips Berguna untuk Clustering GlassFish & Payara
Ketika kluster GlassFish atau Payara Anda sudah diatur dan Anda telah memastikan semuanya berfungsi seperti yang diharapkan, Anda juga dapat mempertimbangkan petunjuk di bawah ini untuk mendapatkan efisiensi maksimal dari menjalankannya di dalam Jelastic Cloud dengan fungsionalitas platform yang luas:
- Untuk konsumsi sumber daya yang dioptimalkan, atur pemicu penskalaan otomatis dalam pengaturan lingkungan Anda sehingga node akan secara otomatis ditambahkan/dihapus dalam sebuah kluster tergantung pada beban yang masuk.
- Untuk koneksi dengan stack perangkat lunak database apa pun, kluster memerlukan perpustakaan yang sesuai yang sedang diintegrasikan ke server Administrasi - yang paling populer tersedia secara default di semua node GF/Payara yang baru dibuat. Dan jika beroperasi dengan instans lama, pastikan direktori DAS /opt/glassfish/glassfish/domains/domain1/lib berisi file yang sesuai (jika tidak - cukup unggah ke lokasi yang disebutkan secara manual).
Kami berharap penjelasan detail implementasi kluster GlassFish & Payara yang dijelaskan cukup meyakinkan bagi Anda untuk memutuskan bahwa solusi ini adalah apa yang Anda butuhkan. Cobalah dengan membuat kluster Anda sendiri di salah satu Platform Cloud Jelastic selama periode percobaan gratis.