Kategoriat
yleistä- Jokapäiväisiä asioita
koodi- Koodipätkiä ja -esimerkkejä
hupi- Kevyempää ja kepeämpää
arkkitehtuuri- Järjestelmäarkkitehtuuri ja suunnittelu
Kauko-ohjain WebLogic Serverille
2010-06-27 13:45:52juha kirjoitti kategoriassa arkkitehtuuri
Parhaat käytännöt (tai maalaisjärki) WebLogic Server (WLS) ympäristön hallintaan ohjaavat voimakkaasti Java Node Managerin käyttöon kaikkien palvelinten hallinnan osalta ja myös siihen ettei käytetä
komentoskriptejä palvelinten käynnistämiseen.
Miksi Node Managerit? Koska Node Managerin avulla voit käynnistää palvelimet etäältä Admin Serverin kautta. Ota vain yhteys Admin Serveriin WebLogic Scripting Tool (WLST) komennolla tai WLS
hallintakonsolin kautta ja lähetä käynnistyskomento palvelimille ja klustereille.
Miksi ei komentoskriptejä? Koska kun sinä saavut paikalle ja jäljet (käynnistyskomento) ovat jo haalentuneet, sinun täytyy suorittaa nuuskia kuin komissaario Palmu saadaksesi parametrit joilla
palvelimet taas käynnistyvät. Komentoskriptit ovat todennäköisesti muuttuneet tai ainakaan et voi olla täysin varma että ne ovat ajantasalla. Joten älä a) käynnistä palvelimia suoraan
komentoskripteillä taikka b) käytä Node Managerin StartScriptEnabled ominaisuutta, joka pakottaa Node Managerin käyttämään komentoskriptejä.
No mikä on sitten se Oikea Tapa? Konfiguroi Node Managerit. Ja ole hyvä, älä tee niinkuin dokumentaatio sanoo, vaan laita domainit omaan hakemistoon ja Node Managerit omiin kotihakemistoihin joka on domain
hakemiston vieressä. Esimerkiksi /.../oracle/domains/<domainname> ja /.../oracle/nodemanagers/<domainname>, eikä<product_home>/user_projects/<domainname> ja
<wl_home>/common/nodemanager (mitkä ovat oletusarvoiset hakemistot). Koska ihan oikeasti, sinulla on tarkoitus olla vain lukuoikeus binäärien asennushakemistoihin. Muutenhan sovelluspalvelinten
JVM prosessilla on oikeus kirjoittaa esimerkiksi weblogic.jar tiedoston päälle. Ja tämä on tietysti erittäin huono asia tuotantoympäristössä. Laita nodemanager.properties tiedosto Node
Managerin kotihakemistoon ja aseta ainakin kuunteluosoite, kotihakemisto ja lokitiedostojen arvot. Sekä tietysti keystoret, ethän halua käyttää demo identity / trust sertifikaatteja, vai kuinka?
sitten voitkin kopioida <wl_home>/server/bin/startNodeManager.sh or .cmd tiedoston /.../oracle/scripts/<domainname> hakemistoon, muuttaa NM_HOME muuttujan osoittamaan
/.../oracle/nodemanagers/<domainname> hakemistoon jonka jälkeen voitkin enrollaa Node Managerin. Käynnistä Admin Server (tässä kohtaa käytetään toki komentoskriptejä) ja ota yhteys palvelimeen
WLST:llä ja käytä nmEnroll komentoa (muista kuitenkin ensin tehdä boot.properties tiedosto):
connect('weblogic','welcome1','t3://localhost:7001')
nmEnroll('/.../oracle/domains/<domainname>','/.../oracle/nodemanagers/<domainname>')
Kun Node Managerit ovat valmiit, seuraavaksi määrittele palvelimien käynnistysparametrit domainin määrittelyissä. Avaa WLS hallintakonsoli, mene Servers/ <Managed Server>/Configuration/Server
Start sivulle aseta kenttiin oikeat arvot. Tee sama muillekin managed server palvelimille. Tämä takaa että sinulla on aina ajantasalla olevat käynnistysparametrit tallessa, koska kun teet näihin
muutoksia, joudut käynnistämään palvelimen uudestaan. Domainin config.xml on totuus. Paitsi Admin Serverin osalta..Anteeksi mitä?
Valitettavasti Admin Server ei halua lukea config.xml-tiedostosta omia käynnistysparametreja. Mutta haluat kuitenkin käynnistää Admin Serverin Node Managerilla, joten mikä neuvoksi? Sinun tulee käyttää nmStart WLST komentoa. Ja tämä on valitettavasti hieman ruman näköinen komento, mutta tällä hetkellä ainoa johon voit luottaa että se toimii:
nmConnect(userConfigFile='nmConfig.secure',userKeyFile='nmKey.secure',host='<ip>',
port=<port, ei lainausmerkkejä!>,domainDame='<domain name>',
domainDir='/.../oracle/domains/<domainname>',nmType='ssl')
props = makePropertiesObject('Arguments=-Xms1024m -Xmx1024m -Xnohup
-Dweblogic.Stdout=/.../<server>.out
-Dweblogic.Stderr=/.../<server>.err;ClassPath=<classpath>;
SecurityPolicyFile=<weblogic.policy>;
BEAHome=<product_home>')
nmStart('<server>','/.../oracle/domains/<domainname>',props)
nmDisconnect()
On olemassa startup.properties-tiedosto /.../oracle/domains/<domainname>/servers/<server>/data/nodemanager-hakemistossa luodaan ja päivitetään Node Managerin käynnistäessä Admin Serverin,
mutta jos tämän tiedoston tekee käsin eikä määrittele propseja nmStart komennon yhteydessä ei ole toiminut ainakaan ennen 11g versioita. Tällä ei sinänsä ole merkitystä, koska nmStart propsien kanssa
toimii hyvin. Paitsi (haa!) muutamat kummallisuudet joita esiintyy WebLogic Portal (WLP) 10.3.2 ja (erityisesti) Oracle Service Bus (OSB) 10.3.3 asennuksissa.Kummallisuuksia? Yhä kummallisellisempaa ja kummallisellisempaa. Niin jännittävää kuin se onkin, 10.3.2 and 10.3.3 asennukset ovat hieman haastavampia tilanteissa joissa pitää saada ympäristö käyntiin Node Managerin avulla. Joku *ysk* unohti testata tietyt skenaariot täytyy tehdä seuraavat temput asennuksen yhteydessä:
- Binäärien asennuksen jälkeen modules-hakemiston lukuoikeudet pitää pistää kuntoon komennolla: chmod –R a+rx <product_home>/modules. Oletusarvoisesti (uusissa versioissa) hakemiston tiedostot eivät ole kaikkien luettavissa. Mutta weblogic.jar on. Tämän lisäksi OSB 10.3.3:ssa täytyy kyseiselle hakemistolle tehdä chown, koska jotkin (ei kaikki) tiedostoista ovat käyttäjä:käyttäjä omistamia eivätkä käyttäjä:ryhmä, ja tämä on väärin. Kosmeettinen haitta, mutta silti.
- Domainin asennuksen yhteydessä tarvitset kirjoitusoikeudet <product_home>/domain-registry.xml-tiedostoon, tai vaihtoehtoisesti sinun täytyy lisätä domainin nimi XML-tiedostoon asennuksen jälkeen. Tämä sotii vastaan periaatetta että binääreihin on vain lukuoikeus.
- OSB:ssa on nykyään (löyhä?) liitos Oracle Web Service Manageriin (OWSM) ja tämän seurauksena on uusi konfiguraatiotiedosto: <domain_home>/config/fmwconfig/jps-config.xml. Eipä siinä mitään, mutta kun yrittää käynnistää palvelimen Node Managerilla tulee asettaa seuraava JVM käynnistysparametri palvelimelle jotta käynnistys onnistuu: - Doracle.security.jps.config=/<domain_home>/config/fmwconfig/jps-config.xml. Miksi? Koska muussa tapauksessa näet käynnistyksen yhteydessä tämän: oracle.security.jps.config.JpsConfigurationException: /<domain_home>/./config/jps-config.xml (No such file or directory).
Ainiin, ne userConfigFile ja userKeyFile parameterit? Ne resurssit luodaan storeUserConfig komennolla:
nmConnect('<nm user>','<nm password>','<ip>','<port, huomasitko lainausmerkit?>',
'<domain name>','/.../oracle/domains/<domainname>')
storeUserConfig('nmConfig.secure','nmKey.secure','true')
nmDisconnect()
connect('weblogic','welcome1','t3://localhost:7001')
storeUserConfig('domainConfig.secure','domainKey.secure')
Ja olithan asettanut Node Managerin käyttäjänimen sekä salasanan Domain > Security > Advanced osiosta ennen ylläolevien komentojen suorittamista? Tottakai olit. Nämä sekä SerializedSystemIni.dat
tiedostot ovat avaimet valtakuntaasi, suojele niitä. Ja miksi halusitkaan nämä user config tiedostot? koska muuten skriptiesi sisällä olisi käyttäjätunnukset ja salasanat selkokielisenä, etkä missään
nimessä tekisi mitään sellaista? Ethän?Lisää luettavaa korkean käyttöasteen arkkitehtuurista ja toisenlaisesta hakemistorakenteesta, tutki Architecting OSB for High Availability and Whole Server Migration dokumenttia. Mutta älä käytä Node Manageria binäärihakemistojen alta (sivu 41), niinkuin tuo dokumentti ehdottaa. Oikeasti.
PS. Muista poistaa rivinvaihdot WLST-skripteistä.
in english