Sunday, December 15, 2013

Simplified Node Manager Setup


Peran Node Manager terhadap WebLogic domain sangat penting. Beberapa fungsinya telah saya sampaikan juga pada artikel saya sebelumnya mengenai WebLogic Whole Server Migration. Setelah beberapa kali melakukan konfigurasi WebLogic domain secara lengkap dan terinspirasi dari 2 artikel dari Middleware Magic (di sini dan di sini), saya mengompilasi cara yang sederhana dan dinamis untuk mempersiapkan Node Manager. Dengan menjalankan prosedur berikut, kita dapat menjalankan proses AdminServer tanpa menggunakan perintah nohup. ;) Prosedurnya dapat dibagi menjadi 2 prosedur utama, yaitu persiapan Node Manager dan asosiasikan Node Manager dengan WebLogic Domain.


Persiapan Node Manager


Node Manager secara default letaknya menyatu dengan letak instalasi WebLogic. Untuk menyederhanakan administrasi dan operasional, kita akan memisahkan letak Node Manager home. Selain itu kita juga akan mempersiapkan file-file tambahan yang dibutuhkan Node Manager. Berikut adalah langkah-langkahnya:
  1. Buat Node Manager home (NODEMGR_HOME) baru di luar instalasi WebLogic (MW_HOME).
  2. Copy 2 Shell script setWLSEnv.sh dan startNodeManager.sh dari lokasi instalasi WebLogic  Server (MW_HOME/wlserver_10.3/server/bin) ke Node Manager home.
  3. Edit script startNodeManager.sh, sesuaikan variabel NODEMGR_HOME dengan lokasi Node Manager home yang baru pada langkah 1. Saya biasanya menggunakan lokasi /u02/app/oracle/admin/nodemanager sebagai NODEMGR_HOME.
    ...
    NODEMGR_HOME="/u02/app/oracle/admin/nodemanager"
    ...
    
  4. Buat file nodemanager.domains di dalam NODEMGR_HOME yang berisi  pasangan nama WebLogic domain dengan lokasi domain-nya di filesystem, contohnya seperti berikut ini:
    # DOMAIN_NAME=DOMAIN_HOME
    Access_Domain=/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain
    
  5. Buat file nodemanager.properties di dalam NODEMGR_HOME yang berisi property-property yang diperlukan untuk menjalankan Node Manager. File property tersebut bisa juga di-copy dari lokasi default-nya jika sudah tersedia. Bagian terakhir dari file properties diberi tanda comment (#), kecuali jika kita perlu mengkonfigurasi fitur WebLogic Server Migration.
    # Minimal Node Manager properties
    DomainsFile=/u02/app/oracle/admin/nodemanager/nodemanager.domains
    LogLimit=0
    PropertiesVersion=10.3
    DomainsDirRemoteSharingEnabled=false
    javaHome=/u01/app/oracle/product/fmw/jrockit-jdk1.6.0
    AuthenticationEnabled=true
    NodeManagerHome=/u02/app/oracle/admin/nodemanager
    JavaHome=/u01/app/oracle/product/fmw/jrockit-jdk1.6.0/jre
    LogLevel=INFO
    DomainsFileEnabled=true
    StartScriptName=startWebLogic.sh
    ListenAddress=
    NativeVersionEnabled=true
    ListenPort=5556
    LogToStderr=true
    SecureListener=true
    LogCount=1
    DomainRegistrationEnabled=true
    StopScriptEnabled=false
    QuitEnabled=false
    LogAppend=true
    StateCheckInterval=500
    CrashRecoveryEnabled=false
    StartScriptEnabled=true
    LogFile=/u02/app/oracle/admin/nodemanager/nodemanager.log
    LogFormatter=weblogic.nodemanager.server.LogFormatter
    ListenBacklog=50
    
    # WebLogic Server Migration
    #Interface=eth0
    #NetMask=255.255.255.0
    #UseMACBroadcast=true
    
  6. Buat script Python NodeManager.py di dalam NODEMGR_HOME yang isinya adalah script WSLT untuk menjalankan proses Node Manager.
    # Start Node Manager
    startNodeManager()
    
  7. Buat script Python AdminServer.py di dalam NODEMGR_HOME yang isinya adalah script WLST untuk connect dengan proses Node Manager dan menjalankan proses WebLogic AdminServer.
    # Import necessary libraries
    from java.io import FileInputStream
    import java.lang
    import os
    import string
    
    # Load WebLogic Domain properties file
    propInputStream = FileInputStream("AdminServer.properties")
    configProps = Properties()
    configProps.load(propInputStream)
    
    # Connect to Node Manager
    userConfigFile = configProps.get("nm.config")
    userKeyFile = configProps.get("nm.key")
    host = configProps.get("nm.host")
    port = configProps.get("nm.port")
    nmType = configProps.get("nm.type")
    domainName = configProps.get("domain.name")
    domainDir = configProps.get("domain.dir")
    nmConnect(userConfigFile=userConfigFile, userKeyFile=userKeyFile, host=host, port=port, domainName=domainName, domainDir=domainDir, nmType=nmType)
    
    # Start WebLogic Server instance
    serverName = configProps.get("server.name")
    nmStart(serverName)
    
  8. Persiapkan file properties AdminServer.properties yang akan dibaca oleh script AdminServer.py untuk menjalankan AdminServer.
    # Node Manager connection info
    nm.config=/u02/app/oracle/admin/nodemanager/security/NodeManagerConfig.properties
    nm.key=/u02/app/oracle/admin/nodemanager/security/NodeManagerKey.secure
    nm.host=localhost
    nm.port=5556
    nm.type=ssl
    
    # WebLogic Domain info
    domain.name= Access_Domain
    domain.dir=/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain
    
    # WebLogic instance name
    server.name=AdminServer
    
  9. Jalankan proses Node Manager dan pastikan tidak ada error yang terjadi di log output-nya.
    oracle@dev.nostratech.com:~ $ cd /u02/app/oracle/admin/nodemanager
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ . ./setWLSEnvh.sh
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ java weblogic.WLST NodeManager.py


Asosiasi Node Manager dengan WebLogic Domain


Ketika melakukan konfigurasi sebuah WebLogic Domain, Node Manager juga akan terkonfigurasi secara otomatis. Namun karena pada bagian sebelumnya konfigurasi Node Manager dipisahkan dari WebLogic Domain, maka kita harus mengkonfigurasi username dan password Node Manager untuk terhubung ke WebLogic Domain. Lakukan langkah-langkah berikut:
  1. Login ke Oracle WebLogic Administration Console.
  2. Pilih $NAMA_DOMAIN -> Security -> Advanced. Ubah Node Manager username dan password pada halaman tersebut. Simpan perubahan dengan memilih Save.
    Setup Node Manager Credential
  3. Login ke AdminServer melalui WLST, kemudian asosiasikan dengan Node Manager.
    wls:/offline> connect('weblogic', 'secret', 't3://accessadminvhn.nostratech.com:7001')
    wls:/Access_Domain/serverConfig> nmEnroll('/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain')
  4. Buat sebuah Machine yang merupakan representasi dari Node Manager tersebut.
    Konfigurasi Machine OAMHOST1
  5. Test status Node Manager melalui WebLogic Administration Console dengan memilih Environment -> Machines -> $MACHINENAME -> Monitoring -> Node Manager Setup.
    Reachable Node Manager
  6. Generate Node Manager credential dalam bentuk yang terenkripsi melalui WLST, sesuaikan lokasi direktori dengan yang tertera pada file AdminServer.properties.
    wls:/offline> nmConnect('nodemanager', 'secret', 'localhost', '5556', 'Access_Domain', '/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain', 'ssl')
    wls:/nm/Access_Domain> storeUserConfig('/u02/app/oracle/admin/nodemanager/security/NodeManagerConfig.properties', '/u02/app/oracle/admin/nodemanager/security/NodeManagerKey.secure', 'true')

Menjalankan AdminServer melalui Node Manager


Semua konfigurasi yang diperlukan sudah selesai, sekarang saatnya untuk menguji coba konfigurasi kita. Pastikan semua proses Java kita akhiri terlebih dahulu. Untuk menjalankan AdminServer, lakukan langkah berikut:
  1. Setup environment variable yang diperlukan.
    oracle@dev.nostratech.com:~ $ export JAVA_OPTIONS="-DDomainRegistrationEnabled=true"
  2. Jalankan Node Manager sebagai daemon.
    oracle@dev.nostratech.com:~ $ cd /u02/app/oracle/admin/nodemanager
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ java weblogic.WLST NodeManager.py
  3. Jalankan AdminServer via Node Manager.
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ java weblogic.WLST AdminServer.py

Biarkan perintah tersebut berjalan, dan jika tidak ada error seharusnya AdminServer sudah berjalan secara daemon. Sekian pembahasan untuk kali ini, jika ada isu dalam menjalankan langkah-langkah tersebut, silahkan tinggalkan komentar Anda.

Semoga bermanfaat! :)


No comments:

Post a Comment