我看到一些文章,包括写的<<结合使用weblogic node manager service和weblogic portal>>,文章可能过于复杂,让一些weblogic使用者有点头晕,于是增加一篇随笔,介绍一下配置nodemanager服务的简单方法。
如果你还没构建自己的证书库,则有点麻烦,因为在这里,我可能使用了openssl和keytool。使用nodemanager的远程启动weblogic的方式,你需要配置ssl。因为adminserver想启动远程的managedserver,需要通过ssl来跟远程的nodemanager握手。
假定我们规划一个这样的域,叫做nodemanagerdomain
这个域中,
weblogic实例 ----- 机器
adminserver ----- sourcesite
m1 ----- sourcesite
m2 ----- destsite
adminserver最终想做的事情是启动m1实例和m2实例,他们三个实例都必须配置ssl。
通过custom identity and custom trust 方式,配置好这三个实例,确保他们之间的握手是没有问题的,配置的动作全部都在adminserver上进行,包括
1)在adminserver上, new 2个server, m1, m2
2)在adminserver上,new2个machine, sourcesite和destsite
3)在sourcesite中加入m1, 在destsite中加入m2
sourcesite配置如下:
listen address: sourcesite
the host name or ip address where node manager listens for connection requests.
listen port: 5555
the port number (between 0 and 65534) where node manager listens for connection requests.
destsite配置如下:
listen address: destsite
the host name or ip address where node manager listens for connection requests.
listen port: 5555
the port number (between 0 and 65534) where node manager listens for connection requests.
ok,现在请把着两个nodemanager启动起来!
nodemanager是作为一个操作系统的监听进程运行的,它主要负责听从
�a_home%\weblogic81\common\nodemanager\nodemanager.properties中指定的机器上的adminserver发送过来的命令。
比如,nodemanager可能会独自启动一个managedserver的实例,类似命令
startmanagedweblogic.cmd
<
server_name
>
http://adminserver:7001
所以,目前,在远程机器上,你只需要做两件事情即可
1,配置nodemanager.properties
配置下面的内容
customtrustkeystorepassphrase=weblogic
keystores=customidentityandcustomtrust
customidentitykeystorefilename=destsite.jks
customidentitykeystorepassphrase=weblogic
propertiesversion=8.1
customidentityalias=destsite
customtrustkeystorefilename=cs.jks
customidentityprivatekeypassphrase=weblogic
reversednsenabled=true
customidentitykeystoretype=jks
2, 配置nodemanager.hosts
增加adminserver所在的机器名,比如,当前机器是destsite要听从sourcesite上的adminserver的指挥,则加入
sourcesite
现在,启动nodemanager服务即可
在windows上,假如你没有创建nodemanager服务,可以编辑一下
运行c:\bea814\weblogic81\server\bin\installnodemgrsvc.cmd weblogic weblogic
即可生成一个nodemanager服务到windows的服务列表里面,然后设为自动启动即可。
windows好办很多,很多时候,我自己的习惯是不使用windows服务方式,而是启动命令行dos窗口,
方便观察啊!
c:\bea814\weblogic81\server\bin>startnodemanager.cmd
在unix上,将sh startnodemanager.sh destsite 5555加入启动脚本即可,或者索性直接运行它即可。
配置完两台机器的nodemanager并且启动它们後,我们就可以用adminserver(在sourcesite上面)来控制它了。
如果adminserver没法跟nodemanager进行ssl握手,它会报下面的错误
[nodemanager:300037]the node manager at host destsite and port 5555 seems to be down. start the node manager and rerun the command.
假定我现在已经在两台机器都重启了两个nodemanager服务了,并且假设ssl握手已经成功(这个假设对配置ssl不熟悉的人来说有点难度)。
假定配置好後,我们尝试点击machine destsite的monitor tab的 node manager status
则会出现下面的错误:
[[nodemanager:300033]could not execute command ping on the node manager. reason: weblogic.nodemanager.nodemanagerexception: [nodemanager is not configured to receive commands from host : /192.168.1.111. please update the trusted hosts file : nodemanager.hosts of the node manager by adding the hostname or ip address of /192.168.1.111> ].]
这是因为你adminserver要连destsite的时候,destsite上正在5555监听的进程会查阅当前的nodemanager.hosts文件,看里面adminserver所在的主机是否在nodemanager.hosts里面声明了,如果没有,则报上面的错,即,不让不信任的机器来往destsite的机器上nodemanager服务执行start/stop操作。
现在,往destsite的nodemanager.hosts里面新增一个sourcesite,即可。
这次,刷新node manager status ,会看到
this page allows you to view current status information for the node manager.
state : running
.home : null
weblogic.nodemanager.javahome : c:\bea814\jdk142_05
weblogic.nodemanager.listenaddress : *.*
weblogic.nodemanager.listenport : 5555
classpath : .;c:\ bea814\ jdk142_05\ lib\ tools.jar;c:\ bea814\ weblog~1\ server\ lib\ weblogic_sp.jar;c:\ bea814\ weblog~1\ server\ lib\ weblogic.jar
证明ssl握手已经成功,adminserver可以控制destsite的nodemanager并要求它来启动m2的实例。
剩下的,看看如何配置sourcesite.jks,destsite.jks以及cs.jks。
这三个jks的关系是:
在sourcesite机器上的adminserver实例使用sourcesite.jks和cs.jks
在sourcesite机器上的m1实例使用sourcesite.jks和cs.jks
在destsite机器上的m2实例使用destsite.jks和cs.jks
在weblogic的keystore配置中,sourcesite.jks和destsite.jks是配置为identity部分,而cs.jks则作为trust部分,
相关的配置ssl的方法请参见http://www.blogjava.net/security/archive/2005/11/28/21593.html