注意:由于WebLogic Server7和WebLogic Server8的设置有较大不同,此文只对WebLogic Server 8.1 有效。WebLogic Server 7的配置,也将在近期推出。 对大多数的初学者而言,WebLogic的文档,虽然详细,却有很多让人困惑不解地方,笔者通过一段时间的实践,有一些心得,在此与大家分享 在实际的应用中,不同的WebLogic Server实例会分布在不同的机器,甚至不同的地域。所以,如何有效的管理各个Managed Server实例,成为了重点。在同一个Domain中,不同机器上的Managed Server可以用相应机器上的NodeManager来管理(NodeManager本身也是一个线程,用来控制Server的生命周期的。) 本文将用1个Admin Server和2个Managed Server做例子,因为这个是最简单的Cluster形式。Cluster和本文没有什么直接关系,只是作为以后例子的铺垫而已。不过鉴于Admin Server和Managed Server之间的管理方式和Cluster的是一样的,所以也就把Cluster的配置加入本文章。详细原因,见附录B。 配置大体过程如下,一共6个步骤: A. 建立相应的Domain。设定Admin Server。 B. 得到 Server的根证书,密钥。并将它们加入KeyStore。 C. 配置WebLogic Server的KeyStore和SSL设置,代替默认的Demo 设置。 D. 配置 Managed Server机器上的NodeManager。 E. 检查相应设置是否正确后,启动所有Server,完成设置。 F. 用一个Web Application的部署检验以上设置。 1. 首先,建立相应的Domain。设定相应的Admin Server和Managed Server。(详细设置步骤,见最后附录A)。 (详细配置资料)
注1. 相应的IP设置,请按照实际情况更改。这里的IP,没有关系的,因为实际应用中,都用DNS名字代替了。见注5。 注2. 如果每个Server都监听不同的Port的话,三个Server可以在同一台机器上。不建议使用LoopBack的网卡。 注3. 不管多少个Managed Server,也不管他们是在同一台机器还是多台机器,都要设置为同一个Domain。 注4. Admin Server,没有必要配置Machine。所以不用加入任何一个Machine。 注5. Server Name,也是相应的DNS,可以通过修改 %WINDOWS_HOME%\System32\Drivers\Etc\Hosts 文件,达到同样效果。见文件1.1。 注6. ManagedServer机器上不用配置Domain,只需要配置NodeManager就可以了。 # Copyright (c) 1993-1999 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 127.0.0.1 localhost 192.168.0.9 Cake 192.168.0.2 Armageddon 192.168.0.1 FinalFantasy 修改完后,记得用ping试试,ping通过了,才好进行下一步。不同机器的话,请保持DNS名字一致。 2. (可选)修改Admin Server的启动脚本 (Security\startWebLogic.cmd)。 set PRODUCTION_MODE=false set WLS_USER=William set WLS_PW=password set MEM_ARGS=-Xms256m -Xmx256m 3. 修改完Server的启动文件后,请先把Admin Server启动一次,保证已经建立正确。 4. 完成第一大步。
接下来,我们需要得到配置SSL需要的文件。如果你有银子的话^_^,可以去VeriSign申请一个正规的证书。不过,本例将用WebLogic自带的CertGen工具生成相应的证书以及密钥。并加入KeyStore中。相应的概念及工具的用法,请读者自行查资料。 1. 将weblogic.jar加入classpath。 2. 建立一个临时目录,将 BEA\WebLogic\server\lib下的CertGenCA.der和CertGenCAKey.der拷贝到该目录。 3. 运行以下命令,将生成的myKeyStore.jks拷贝到相应的3个Domain目录。 keytool -noprompt -import -trustcacerts -alias CA -file CertGenCA.der -keystore myKeyStore.jks -storepass password java utils.CertGen password CakeCert CakeKey export Cake java utils.CertGen password FinalFantasyCert FinalFantasyKey export FinalFantasy java utils.CertGen password ArmageddonCert ArmageddonKey export Armageddon copy /b CakeCert.pem + CertGenCA.pem CakeCertChain.pem copy /b ArmageddonCert.pem + CertGenCA.pem ArmageddonCertChain.pem copy /b FinalFantasyCert.pem + CertGenCA.pem FinalFantasyCertChain.pem keytool -import -alias CakeCert -file CakeCert.pem -keypass password -keystore myKeyStore.jks -storepass password keytool -import -alias ArmageddonCert -file ArmageddonCert.pem -keypass password -keystore myKeyStore.jks -storepass password keytool -import -alias FinalFantasyCert -file FinalFantasyCert.pem -keypass password -keystore myKeyStore.jks -storepass password java utils.ImportPrivateKey myKeyStore.jks password CakeKey password CakeCertChain.pem CakeKey.pem java utils.ImportPrivateKey myKeyStore.jks password ArmageddonKey password ArmageddonCertChain.pem ArmageddonKey.pem java utils.ImportPrivateKey myKeyStore.jks password FinalFantasyKey password FinalFantasyCertChain.pem FinalFantasyKey.pem java utils.ValidateCertChain -jks CakeKey myKeyStore.jks password java utils.ValidateCertChain -jks FinalFantasyKey myKeyStore.jks password java utils.ValidateCertChain -jks ArmageddonKey myKeyStore.jks password 最后的3个步骤,是检验Certificate的。其中第一个步骤输出应该是: Cert[0]: CN=Cake,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US Cert[1]: CN=CertGenCAB,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US Certificate chain appears valid 最后一句话最重要,代表了证书链是正确的! 这个步骤,是最重要的。确定所有语句的运行都是正确的。 4. Admin机器上,将keystore文件拷贝到BEA\user_projects\domain目录。 5. Managed机器上,将keystore文件拷贝到BEA\weblogic\common\nodemanager目录。 6. 完成步骤B。
1. 启动Admin Server,进入Console(http://Cake:8001/console/)。展开Servers,单击Cake,在右边的配置栏中(Configuration Tab),选择Keystores & SSL。 Custom Identity: Custom Identity Key Store File Name: myKeyStore.jks Custom Identity Key Store Type: JKS Custom Identity Key Store Pass Phrase: password Confirm Custom Identity Key Store Pass Phrase: password Custom Trust Custom Trust Key Store File Name: myKeyStore.jks Custom Trust Key Store Type: JKS Custom Identity Key Store Pass Phrase: (空) Confirm Custom Identity Key Store Pass Phrase: (空) 3. 单击Continue,准备对 Review SSL Private Key Settings 进行设置。 Private Key Alias: CakeKey Passphrase: password Confirm Passphrase: password 4. 设置Armageddon Server和 FinalFantasy Server。 步骤如上,展开Servers,单击相应的Server,去 Keystores & SSL,然后配置。 以下是配置用到的值。 Armageddon Server: Custom Identity: Custom Identity Key Store File Name: myKeyStore.jks Custom Identity Key Store Type: JKS Custom Identity Key Store Pass Phrase: password Confirm Custom Identity Key Store Pass Phrase: password Custom Trust Custom Trust Key Store File Name: myKeyStore.jks Custom Trust Key Store Type: JKS Custom Identity Key Store Pass Phrase: (空) Confirm Custom Identity Key Store Pass Phrase: (空) Private Key Alias: ArmageddonKey (改动的地方) Passphrase: password Confirm Passphrase: password FinalFantasy Server: Custom Identity: Custom Identity Key Store File Name: myKeyStore.jks Custom Identity Key Store Type: JKS Custom Identity Key Store Pass Phrase: password Confirm Custom Identity Key Store Pass Phrase: password Custom Trust Custom Trust Key Store File Name: myKeyStore.jks Custom Trust Key Store Type: JKS Custom Identity Key Store Pass Phrase: (空) Confirm Custom Identity Key Store Pass Phrase: (空) Private Key Alias: FinalFantasyKey (改动的地方) Passphrase: password Confirm Passphrase: password 1. 最后重新启动Admin Server,完成步骤C。 A. 配置 Managed Server机器上的NodeManager。 1. 查看目录BeaM\weblogic\common\nodemanager。BeaM代表是Managed Server的Bea实例,因为Admin里边的这个目录是空的。 2. 编辑文件nodemanager.hosts,加入Cake这个地址。内容如下:(也可以直接加入IP地址,不过这里还是用DNS,因为SSL验证名字的原因) # Host names from which the connection to the # node manager will be accepted. # You can edit this file manually. # E.g. - for allowing a machine named holly to connect, # uncomment one of the following lines based on whether # ReverseDnsEnabled property is turned on or off. #holly.bea.com #172.17.24.145 Cake 3. 编辑文件nodemanager.properties。修改后内容如下:(这个是FinalFantasy Server的例子,请自行修改Armageddon Server的文件) PropertiesVersion=8.1 KeyStores = CustomIdentityAndCustomTrust CustomIdentityAlias=FinalFantasyKey (FinalFantasy的密钥别称,Armageddon需要修改) CustomIdentityPrivateKeyPassPhrase={3DES}VEg7ahqqDWKmTZZMsynwzg\=\= (密码,如果你输入password的话,WebLogic会自动改为这个的) CustomIdentityKeyStoreFileName=myKeyStore.jks (设置myKeyStore的储存点) CustomIdentityKeyStoreType=JKS CustomIdentityKeyStorePassPhrase={3DES}VEg7ahqqDWKmTZZMsynwzg\=\= (密码) CustomTrustKeyStoreFileName=myKeyStore.jks (同样的设置KeyStore储存点) ReverseDnsEnabled=true 4.检查以上修改,步骤D完成。 B. 检查相应设置是否正确后,启动所有Server,完成设置。 1.运行 BeaM\weblogic\server\bin\startNodeManager.cmd。 格式:startNodeManager FinalFantasy 5555 或者 startNodeManager Armageddon 5555 根据不同的server,运行不同的命令。 2.启动Admin Server。 3.来到Console,展开Servers,然后: a) 右击FinalFantasy,选择Start/Stop this Server。 b) 右边的窗口中,单击 Start this Server.。 c) 单击Yes,启动Managed Server。 d) 在启动的过程中,你应该可以看到最底下的状态栏中,state栏目的内容是STARTING,Status的内容是TASK IN PROGRESS。(图3-1) e) 启动完毕,应该是: State:RUNNING 。Status:TASK COMPLETED。(图 3-2)
4. 到这里为止,已经完成所有设置了。 C. 用一个Web Application的部署检验以上设置。 1. 随便建立一个Web Application,最简单的就可以了。 2. 选择后,target里边选择Cake,还有FinalFantasy,就可以部署了。 3. 如果你喜欢,你可以再建立一个server,这样的话,Independent Servers里边就会多一个出来。 4. Deploy后,会选择是否让程序处理stage,还是你自己处理文件的存储。最好让weblogic处理stage。:) 5. 最后,访问FinalFantasy的http,就可以看到相应的网页了。 6. 终于完成了所有设置步骤。恭喜! 附录A。详细设置WebLogic Server(AdminServer)。 1. 启动Configuration Wizard。 2. Next后,选择 Basic WebLogic Server Domain,再Next。 3. 选Custom,Next。 4. 在Administration Server Configuration中,填入相应内容。
6. 点击2次Add,增加两个Managed Server。填入相应数据。单击Next。
10. 设置Machine,这里是为NodeManger设置的。设置完后,Next。
Cake,是不属于任何Machine的,因为是Admin,就算属于一个Machine,也没有意义。 13. 配置JMS,选择Skip,然后Next。 14. 配置Security,,选择Skip,然后Next。 15. 输入用户名和密码。 Name:William Password:password 16. 接下来,是Windows Options。左边选择是否建立启动的快捷方式,右边选择是否把Admin Server作为Windows服务启动。 左边选择yes,右边选择No。最后Next。 17. 启动菜单的编辑,直接Next。 18. 来到WebLogic Configuration Enviroment了,左边选择Development Mode,右边选择Sun JDK,(随便,你喜欢了)。记得Next。 19. 来到最后的一个设置,就是Create WebLogic Configuration。 注意,要把右下方的那个 Configuration Name,写上Security,这个是Domain设置。然后单击Create。 20. 选择Done,Exit。完成Admin Server的配置。 首先,谢谢Hilaser的提醒,这是我一直没有注意过的问题。 Admin 和Managed Server之间,是管理与被管理。一个Domain只能包含一个Admin Server,但是可以支持多个Managed Server。他们之间是依靠MultiCast联系的。MultiCast是基于UDP进行的,所以,请配置前,先测试一下UDP的通讯是否畅通。 Cluster也是以同样的方式进行通讯的,同一个Cluster之间,通过一个MultiCast地址(如237.0.0.1:7001)进行通讯,如果不能正确的建立UDP通讯,Cluster也就不能正确的运行。 下面将测试方法说一下: 1. 首先,将weblogic.jar加入classpath。 2. 在不同的机器上,执行不同的语句, java utils.MulticastTest –N name –A 237.0.0.1 这里的name,是每一台机器都不一样的,作为自己的标志存在。 237.0.0.1是MultiCast地址,也可以是不同Port的。详细资料,请查询BEA文档。 3.如果运行结果是全部server都可以看到,就代表成功,不然就是那个节点通讯受阻。 |
|||||||||||||||||||||||||||
作者简介 | |
周骞是(dev2dev ID: 黯然销魂) BEA dev2dev中文网站--在线技术论坛WebLogic EJBS Development等栏目版主,WebLogic专家 |