数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle 10gas 之 集群


发布日期:2020年10月30日
 
Oracle 10gas 之 集群

对于大规模的企业级应用来讲没有集群是不太现实的考虑到可扩展性和高可用性

在通常的生产环境中都会应用到中间件集群这种技术

本文主要讲述了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 了

               

上一篇:Oracle9iforLinux出现ORA-12541

下一篇:数据库变慢的情况及处理方法