Sunday, September 15, 2013

WebLogic Pack/Unpack Script

Pertama kali saya mendengar ada sepasang script WebLogic yang bernama pack.sh dan unpack.sh adalah sekitar 2 tahun yang lalu ketika teman saya sedang melakukan konfigurasi high availability untuk Oracle BPM 10g. Saya tidak terlibat pada saat konfigurasinya, sehingga pengertian saya mengenai kedua script tersebut adalah script pack.sh digunakan untuk membuat backup dari sebuah domain dari sebuah mesin, sedangkan script unpack.sh digunakan untuk membuka atau me-restore domain tersebut di mesin yang lain, sehingga kondisi dari kedua domain pada kedua mesin dalam kondisi yang sama. Kemudian muncul pertanyaan ini di benak saya,
"Kenapa tidak menggunakan tarball saja untuk membuat backup dan mengekstrak tarball tersebut di mesin lain?"
Waktu itu teman saya juga tidak secara intensif menggunakan script tersebut, melainkan meng-copy semua konfigurasi domain dari mesin satu ke mesin lainnya. Sehingga pada saat itu pengertian saya adalah pack.sh/unpack.sh adalah serupa dengan fungsi tar. Namun sejak 3-4 bulan yang lalu, saya mulai terlibat di dalam implementasi konfigurasi high availability untuk beberapa aplikasi Oracle Fusion Middleware, seperti Oracle IdM 11g, Oracle WebCenter Suite 11g, Oracle SOA Suite 11g, dan Oracle EM 12c. Dari situlah saya menemui kembali kedua script tersebut, dan kali ini saya lebih memahami maksud dan tujuan dari script tersebut.

Kedua script ini ternyata berperan penting ketika konfigurasi WebLogic, terutama untuk konfigurasi high availability di mana umumnya konfigurasi tersebar di lebih dari satu mesin. Jika mengacu pada salah satu guide dari Oracle, proses pack/unpack pada dokumen tersebut selalu diasosiasikan dengan kegiatan untuk mempropagasi konfigurasi domain WebLogic. Biasanya kegiatan tersebut dilakukan setiap kali perubahan konfigurasi pada domain dilakukan, seperti setiap kali domain selesai di-extend dengan komponen deployment yang baru. Kemudian mungkin pertanyaan yang muncul adalah,
"Oke, lalu perbedaannya dengan membuat tarball adalah...???"
Dari pengamatan yang saya lakukan ketika mengkonfigurasi high availability, kedua script tersebut melakukan hal-hal berikut ini:
  1. Script pack.sh akan membuat sebuah template WebLogic domain berekstensi .jar, berdasarkan lokasi konfigurasi domain yang diberikan. 
  2. Template yang dibuat oleh script pack.sh dapat berupa full-domain template atau managed-domain template. Managed-domain template biasanya digunakan untuk memisahkan antara konfigurasi domain primer untuk AdminServer dengan konfigurasi domain sekunder untuk managed server. Sedangkan full-domain template digunakan untuk membuat template konfigurasi domain secara utuh.*)
  3. Script unpack.sh akan membaca template yang dibuat oleh script pack.sh, kemudian membuat direktori yang berisi konfigurasi domain (full-domain/managed-domain) di lokasi yang telah diberikan.
  4. Script pack.sh akan memasukkan semua isi konfigurasi domain, termasuk jika kita membuat custom scripts seperti custom environment variable script, membuat VIP, dsb. Direktori yang berisi file hasil generate WebLogic server (seperti direktori $ASERVER_HOME/servers) tidak dimasukkan ke dalam template.
  5. Script unpack.sh tidak akan menimpa file yang sudah ada sebelumnya pada lokasi tujuan. Namun script tersebut akan membuat backup-nya terlebih dahulu, biasanya me-rename file original dengan menambahkan ekstensi .ORIG.
  6. Script unpack.sh akan meng-update entry lokasi domain pada file $MW_HOME/domain-registry.xml dan $WL_HOME/common/nodemanager/nodemanager.domains pada mesin tujuan, sehingga ketika selesai propagasi konfigurasi, kita dapat langsung memerintahkan Node Manager di mesin tujuan untuk startup sebuah managed server.
Kejadian yang saya alami ketika melakukan konfigurasi high availability, adalah seringkali konfigurasi yang dilakukan di satu mesin berjalan, tidak berjalan ketika dilakukan di lebih dari satu mesin. Solusinya adalah propagasi konfigurasi kembali dengan menjalankan pack.sh dan unpack.sh. Ada dua kejadian yang saya ingat:
  1. Ketika mengintegrasikan WebCenter Portal: Spaces dengan BPM Workspace, sempat saya tidak dapat login ke dalam BPM Workspace. Seingat saya error-nya adalah credential yang tidak valid ketika saya login menggunakan weblogic. Anehnya kombinasi user dan password pada domain yang sama dapat terotentikasi jika login di Administration Console. Kemudian saya ingat point penting mengenai file cwallet.sso di dalam dokumentasi high availability. Setelah saya copy kembali file cwallet.sso dan kembali propagasikan di masing-masing mesin, isu tersebut hilang.
  2. Ketika mengintegrasikan WebCenter Portal: Spaces dengan WebCenter Portal: Discussions, propagasi kembali harus dilakukan seusai kita meng-generate file default-keystore.jks agar keystore tersebut terpropagasi di masing-masing mesin. Kemudian saya mengalami kesulitan dalam meng-attach OWSM policy di Spaces dan Discussions instance. Solusi yang berhasil dilakukan adalah meng-attach OWSM policy ketika Spaces dan Discussions dijalankan dari $ASERVER_HOME, kemudian shutdown kedua instance dan kembali melakukan propagasi konfigurasi domain menggunakan pack.sh dan unpack.sh.
Sehingga jawaban yang saya pikir lebih tepat untuk pertanyaan saya di awal blog ini adalah,
"Karena pack.sh dan unpack.sh script tidak bertujuan untuk membuat backup dari sebuah konfigurasi domain, melainkan untuk mempropagasi perubahan konfigurasi domain yang tidak terpropagasi secara otomatis dari AdminServer. Gunakan tarball untuk membuat full backup dari konfigurasi domain."
Sekian sharing saya kali ini. Cheers! :)

*) Untuk full-domain template, saya belum terlalu intensif menggunakannya. Sehingga membutuhkan eksperimen dan simulasi kembali untuk dapat menjabarkan fungsinya.

No comments:

Post a Comment