对于大规模的企业级应用来讲没有集群是不太现实的考虑到可扩展性和高可用性
在通常的生产环境中都会应用到中间件集群这种技术
本文主要讲述了gas相关的集群配置一般的管理方面的内容
gas的集群分为两大类
基于管理的集群
基于管理的集群主要通过 Repository 来记录 整个集群得相关配置信息比如集群发布的程序阿等等
这个方式下管理员需要手工操作的东西比较少比如发布一个程序只要对整个集群做一次发布即可
手工管理的集群方式
在这种方式下除了最基本的session复制以及ejb cluster 外gas不提供更多的管理手段
如果需要发布程序你需要对参与集群的所有instance做发布你可以想象再你有几台服务器的情况下如果每次发布程序都需要一台台去发布不但工作量大而且很容易搞错
所以建议采用基于管理的方式来做集群
基于管理的集群主要用到需要 Repository 来存储相关的配置信息
由于 Repository 的重要性这里花点时间讲一下 Repository得相关信息
Repository 有两种存储方式databasedRepository 和 filebasedRepository
其中 filebasedRepository 是 gas才新心出来的功能主要是解决以前只能创建
databasedRepository cluster 的问题而 databasedRepository 需要安装 Infrastructure
这个Infrastructure 是大家颇为头疼的东西不太庞大而且极容易出问题所以才有了filebasedRepository
存放在 Repository 的信息主要有下面几种
Product metadata
Management metadata
Idendity Management metadata (databasedRepository 才有)
对于集群主要需要用到的信息是 Product metadata 和 Management metadata
还记得我gas 系列文章的第一篇吗 (oracle gas安装攻略) 里面的安装方式
JEE andWeb Cache installation type 这个安装方式缺省就是采用 filebasedRepository 当然也可以
迁移到 databasedRepository
所以本文主要讲如何创建 filebasedRepository 的cluster对于基于 databasedRepository 的方式的集群以后再深入讲
先讲一下创建集群的要求
所有的 application server instance 必须再同一个farm 也就是要用同一个 Repository来存放管理信息
所有的参与集群的 application server instance 都必须安装同样的os
每个参与集群的 application server instance 只能由一个ohs server
每一个 application server instance 可以有多个 ocj instance 每个ocj instance可以有多个 ocj process
当然要求所有的application server instance 版本一样了
涉及的 application server instance 有两个
ip 都是 在同一 物理server 用两个用户安装两个 application server instance
每个 application server instance 用不同的端口
操作系统是 redhat update
用户 iasg 启用 ohs 端口 用户 iasg只启用ocj
其中 iasg用户 作为 filebasedRepository host
测试该 application server instance 是否已经属于某个 farm
检查 instance
su iasg
[iasg@finproduction home]$ dcmctl whichFarm
Standalone instance
显示 该 instance还没有加入 farm
如果显示已经加入farm请执行下面的命令离开farm
dcmctl leaveFarm
检查 instance
su iasg
[iasg@finproduction iasg]$ dcmctl whichFarm
Standalone instance
[iasg@finproduction iasg]$
初始化 Repository
su iasg
获得当前的 id 号码
[iasg@finproduction home]$ dcmctl getRepositoryid
finp:
[iasg@finproduction home]$
初始化farm
dcmctl joinFarm r finp:
其中 finp: 就是前面通过 getRepositoryid 获得信息
现在在来看看 是否已经加入 farm
[iasg@finproduction home]$ dcmctl whichFarm
Farm Name: tpdataiasgOraHomedcmrepository
Host Instance: iastestfinp
Host Name: finp
Repository Type: Distributed File Based (host)
SSL In Use: false
可以看到 已经加入 File Based farm 而且这个 instance是 host
加入 instance
su iasg
dcmctl joinFarm r finp:
加入成功看看 现在的 farm 信息
[iasg@finproduction iasg]$ dcmctl whichFarm
Farm Name: tpdataiasgOraHomedcmrepository
Host Instance: iastestfinp
Host Name: finp
Repository Type: Distributed File Based
SSL In Use: false
[iasg@finproduction iasg]$
可以看到已经加入成功 filebased Repository
创建集群
创建集群有两种方式
一通过 em 管理界面创建
二通过dcmctl手工创建
由于通过 em 创建比较简单且创建集群属于比较高阶的内容我这里主要讲如何手工创建
su iasg
看看是否已经创建集群
dcmctl listclusters
没有输出说明还没有创建
创建一个集群
[iasg@finproduction home]$ dcmctl createcluster cl mycluster
mycluster
cl 指定 集群的名字可以随便取
[iasg@finproduction home]$ dcmctl listclusters
mycluster
可以看到已经创建一个cluster
先把 instance 加入集群
[iasg@finproduction home]$ dcmctl joincluster cl mycluster
iastestfinp
接着把 instance加入集群
su iasg
[iasg@finproduction iasg]$ dcmctl joincluster cl mycluster
iastestfinp
iastestfinp
可以看到已经再集群 mycluster 中已经有两个 instance 了