ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在oracle as下面创建file-based cluster

在oracle as下面创建file-based cluster

原创 Linux操作系统 作者:wzy25 时间:2019-04-22 07:39:07 0 删除 编辑

对于创建人工管理的集群,请参考我以前的贴子 http://www.itpub.net/248375.html
这个文档主要讲述如何创建file-based的cluster

基于管理的集群主要用到需要 Repository 来存储相关的配置信息。
由于 Repository 的重要性,这里花点时间讲一下 Repository得相关信息。

Repository 有两种存储方式,databased-Repository 和 filebased-Repository.
其中 filebased-Repository 是 10gas才新心出来的功能。主要是解决以前只能创建
databased-Repository cluster 的问题,而 databased-Repository 需要安装 Infrastructure 。
这个Infrastructure 是大家颇为头疼的东西,不太庞大,而且极容易出问题。所以才有了filebased-Repository。

存放在 Repository 的信息主要有下面几种
1.Product metadata
2.Management metadata
3.Idendity Management metadata (databased-Repository 才有)

对于集群主要需要用到的信息是 1.Product metadata 和 2.Management metadata。




还记得我10gas 系列文章的第一篇吗 http://www.itpub.net/250581.html(oracle 10gas安装攻略) 里面的安装方式
J2EE andWeb Cache installation type ,这个安装方式缺省就是采用 filebased-Repository .当然也可以
迁移到 databased-Repository。

所以本文主要讲如何创建 filebased-Repository 的cluster。对于基于 databased-Repository 的方式的集群,以后再深入讲。




先讲一下创建集群的要求
1.所有的 application server instance 必须再同一个farm ,也就是要用同一个 Repository来存放管理信息。
2.所有的参与集群的 application server instance 都必须安装同样的os。
3.每个参与集群的 application server instance 只能由一个ohs server.
4.每一个 application server instance 可以有多个 oc4j instance. 每个oc4j instance可以有多个 oc4j process.
5.当然要求所有的application server instance 版本一样了。





关于如何安装,请参考 http://www.itpub.net/250581.html(oracle 10gas安装攻略) ,我就直接从如何创建集群开始讲开。

涉及的 application server instance 有两个
ip 都是 10.1.18.1 ,在同一 物理server 用两个用户安装两个 application server instance ,
每个 application server instance 用不同的端口。
操作系统是 redhat 3.0 update 2.

用户 ias10g 启用 ohs ,端口 7778 ,用户 ias10g2只启用oc4j.
其中 ias10g用户 作为 filebased-Repository host.


1.测试该 application server instance 是否已经属于某个 farm .
检查 instance 1

su - ias10g
[ias10g@finproduction home]$ dcmctl whichFarm
Standalone instance
显示 该 instance还没有加入 farm.
如果显示已经加入farm,请执行下面的命令离开farm
dcmctl leaveFarm

检查 instance 2

su - ias10g2

[ias10g2@finproduction ias10g2]$ dcmctl whichFarm
Standalone instance
[ias10g2@finproduction ias10g2]$



2.初始化 Repository

su - ias10g
获得当前的 id 号码
[ias10g@finproduction home]$ dcmctl getRepositoryid
finproduction.tplife.com:7101
[ias10g@finproduction home]$

初始化farm

dcmctl joinFarm -r finproduction.tplife.com:7101


其中 finproduction.tplife.com:7101 就是前面通过 getRepositoryid 获得信息。

现在在来看看 是否已经加入 farm
[ias10g@finproduction home]$ dcmctl whichFarm
Farm Name: .tpdata.ias10g.OraHome1.dcm.repository
Host Instance: iastest.finproduction.tplife.com
Host Name: finproduction.tplife.com
Repository Type: Distributed File Based (host)
SSL In Use: false


可以看到 已经加入 File Based farm .而且这个 instance是 host.

3.加入 instance2

su - ias10g2

dcmctl joinFarm -r finproduction.tplife.com:7101

加入成功,看看 现在的 farm 信息。

[ias10g2@finproduction ias10g2]$ dcmctl whichFarm
Farm Name: .tpdata.ias10g.OraHome1.dcm.repository
Host Instance: iastest.finproduction.tplife.com
Host Name: finproduction.tplife.com
Repository Type: Distributed File Based
SSL In Use: false
[ias10g2@finproduction ias10g2]$

可以看到,已经加入成功 file-based Repository .



4.创建集群
创建集群有两种方式,
一:通过 em 管理界面创建
二:通过dcmctl手工创建

由于通过 em 创建比较简单,且创建集群属于比较高阶的内容,我这里主要讲如何手工创建。

su - ias10g

看看是否已经创建集群

dcmctl listclusters

没有输出,说明还没有创建。

创建一个集群

[ias10g@finproduction home]$ dcmctl createcluster -cl mycluster

1 mycluster

-cl 指定 集群的名字,可以随便取。

[ias10g@finproduction home]$ dcmctl listclusters
1 mycluster

可以看到已经创建一个cluster。

先把 instance1 加入集群

[ias10g@finproduction home]$ dcmctl joincluster -cl mycluster

1 iastest.finproduction.tplife.com


接着把 instance2加入集群

su - ias10g2

[ias10g2@finproduction ias10g2]$ dcmctl joincluster -cl mycluster

1 iastest2.finproduction.tplife.com
2 iastest.finproduction.tplife.com

可以看到已经再集群 mycluster 中已经有两个 instance 了。




访问一下
http://ip_of_ohs:port_of_ohs/j2ee/servlet/SessionExample
输入框里面输入一个名字和值,然后提交。多输入几次。]
如下
Sessions Example
Session ID: 0a011201ce53a7e68a187aa4488aa53f09b7edc7299
Created: Wed Sep 15 11:00:01 CST 2004
Last Accessed: Wed Sep 15 11:00:05 CST 2004
The following data is in your session:
11 = 11
1 = 1


Name of Session Attribute:
Value of Session Attribute:


我们提交了两次。

通过观察 j2ee/home/log/home_default_island_1/default-web-access.log
日志,察看一下当前是那个oc4j在提供服务,我们查到是
iastest2.finproduction.tplife.com 在提供服务。

由于ohs 得mod_oc4j的特性,他在转发某个带有 session 信息的请求的时候,在第一次
转发到某个oc4j后,只要该oc4j还正常,他会一直转发该连接的后继请求到同一个oc4j。



关闭 iastest2.finproduction.tplife.com 的oc4j,看看能不能做到session复制。


[ias10g2@finproduction home]$ opmnctl status

Processes in Instance: iastest2.finproduction.tplife.com
-------------------+--------------------+-------+---------
ias-component | process-type | pid | status
-------------------+--------------------+-------+---------
OC4J | home | 30409 | Alive
WebCache | WebCacheAdmin | N/A | Down
WebCache | WebCache | N/A | Down
HTTP_Server | HTTP_Server | N/A | Down
dcm-daemon | dcm-daemon | 10608 | Alive
LogLoader | logloaderd | N/A | Down

[ias10g2@finproduction home]$ opmnctl stopproc process-type=home
opmnctl: stopping opmn managed processes...
[ias10g2@finproduction home]$ opmnctl status

Processes in Instance: iastest2.finproduction.tplife.com
-------------------+--------------------+-------+---------
ias-component | process-type | pid | status
-------------------+--------------------+-------+---------
OC4J | home | N/A | Down
WebCache | WebCacheAdmin | N/A | Down
WebCache | WebCache | N/A | Down
HTTP_Server | HTTP_Server | N/A | Down
dcm-daemon | dcm-daemon | 10608 | Alive
LogLoader | logloaderd | N/A | Down


在关闭 iastest2.finproduction.tplife.com 得oc4j后,接着再
http://ip_of_ohs:port_of_ohs/j2ee/servlet/SessionExample 输入一次,然后提交。
我们可以看到,三次输入的信息都在

Sessions Example
Session ID: 0a011201ce53a7e68a187aa4488aa53f09b7edc7299
Created: Wed Sep 15 11:09:23 CST 2004
Last Accessed: Wed Sep 15 11:09:26 CST 2004
The following data is in your session:
11 = 11
1 = 1
2 = 2



session信息复制成功。







接下来讲一下如何监控 oc4j 得 session 复制。

通过这个环境变量来监控 oc4j得 session 复制
http.session.debug=true.

设置方法

以下操作再集群中得所有instance都需要做。

打开 opmn/conf/opmn.xml 文件
找到





















修改






当中的



也就是加上 -Dhttp.session.debug=true

然后执行
dcmctl updateconfig

然后重起所有的oc4j

opmnctl restarproc process-type=home



然后再刚才的
http://ip_of_ohs:port_of_ohs/j2ee/servlet/SessionExample
得页面做一些操作,监控后台得输出
tail -f opmn/logs/OC4J~home~default_island~1

04/09/15 11:27:11 Requested Id is 0a011201ce53a7e68a187aa4488aa53f09b7edc7299.nAzIq79Jn7jxr6zJpwTOq6LDnAiImQXHcxaNa38Uplzxp7jNr6jM8QzvqRfzqReInAzIq79Jn7jxr6zJpwTOq6LDnAiImQXH8N4QahyObx0Lc34xf2bCpQPz8QfznA5Pp7ftolbGmkTy
04/09/15 11:27:11 ClusteredHttpSession.beginRequest()
04/09/15 11:27:11 EvermindHttpSession.beginRequest()
04/09/15 11:27:11 ClusteredHttpSession.endRequest(), accessed=true, modified=true
04/09/15 11:27:11 EvermindHttpSession.endRequest()


可以看到每做一次操作,后台都会有accessed=true, modified=true 的日志输出,表示该oc4j
正在完成服务。

而且可以看到
04/09/15 11:31:06 Reading attribute 11
04/09/15 11:31:06 Reading attribute 1
04/09/15 11:31:06 Reading attribute 2
04/09/15 11:31:06 Reading attribute 3
04/09/15 11:31:06 Reading attribute 4
04/09/15 11:31:06 Reading attribute 5
之类的日志,表明另外一个 instance正在接受session复制。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3618/viewspace-485523/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 2007年的情人节
请登录后发表评论 登录
全部评论

注册时间:2001-12-14

  • 博文量
    1011
  • 访问量
    765580