Chinaunix

标题: Oracle 10gR2 RAC+ RHEL4 + VMWare GSX 简明安装步骤 [打印本页]

作者: nntp    时间: 2006-01-19 21:35
标题: Oracle 10gR2 RAC+ RHEL4 + VMWare GSX 简明安装步骤
前几天做了这个测试,看到我们这个板里面有很多同学对学习RAC感兴趣,但是又苦于没有条件.

我的风格大家也熟悉了,我也不多废话,也不愿意写什么手册,我认为搞稍微复杂一点技术的工程技术人员的最基本的能力就是去做调研和信息搜集,什么事情光靠别人很详细的喂给你,你是永远无法成为高手的,过程本身很麻烦,有时候甚至很让人痛苦和气恼,但是这才是真正能够把你推动到一个"高手"的位置的真正动力. 动手越少,水平越糟。

下面是我前几天做的一个简明步骤,不想写复杂的.我觉得已经足够帮有动手能力的同学过关了.


********************************************
Oracle 10gR2 RAC + RHEL AS4U2 +VMWare GSX 3.2.0   
Deployment brifing guide 0.9
Author: nntp                                          20060119
转载不得修改,请注明作者时间和出处
********************************************



1. 环境

自用的测试工作站一台,如果你的配置环境和我差很远,你就不要玩乐,你会很痛苦的.


------------硬件环境--------------------------------------------------------
CPU: AMD Althon64 3200+ x1
Mem: 2G DDR400
Storage: 1x10GB ATA for Host OS,  2x80G SATA for application

------------Host 的环境----------------------------------------------------------------------
SuSE Enterprise Linux Server 9 SP3 with latest errata Kernel from Novell YOU
(AMD64/EM64T version)

10GB上安装的是我的上面的这个OS,用来做Host OS, 并且已经调优过. (不会这种环境下linux调优的同学,你做出来的性能会和我有不少差距)

2个80GB硬盘,我用linux MD 做软RAID, RAID level 是0, 并且作了调优(不会这种环境下linux阵列配置和优化的同学,你做出来的性能会和我有不少差距)

VMWare gsx3.2.0 安装在 10GB硬盘上,也作了一些小的优化工作(你在VTN上查得到怎么做优化).

80GB做RAID0就变成一个160GB的LUN. 我划乐40GB出来, mount 到  /vmegg上

我用的这个文件系统是ReiserFS, 并作了文件系统级的性能优化.

vmegg的结构如下

/vmegg
....../rac
........./rhel4
............/n1
............/n2
............/share


各位同学自己建好上面这些目录.


-------------------安装的大概步骤------------------------

步骤一: 安装前准备及Guest OS安装配置
步骤二: 安装Oracle 10gR2 clusterware
步骤三: 安装Oracle 10gR2 database
步骤四: 配置netca
步骤五: 配置dbca创建数据库
步骤六: 校验RAC
------------------------------------------------------------

============ 步骤一 安装前准备及Guest OS安装配置=======================
Host OS 准备

1. 从Oracle OTN下载 oracle 10gR2 for x86 linux,下2个zip, 一个是clusterware zip,一个是database zip, comp CD你可以下,我是懒的弄
2. 准备的RHEL AS4U2(x86), 你也可以用CentOS 4.2(x86)
3. 搞清楚你的linux的kernel version
4. 从Oracle OTN下载 ocfs2 , ocfs tools, ocfs console,  ASMLib, ASMLib support & utility,记住这些都是针对你的kernel的,不要下错
5. VMWare gsx 3.2.0 for linux
6. 我的工作站是没有显示器的,我的工作都是在笔记本上作的, 大家都知道Oracle的安装是需要X的,所以你可以VNC过去,也可以在本地用Xserver.
    我用的是ReflectionX,因为还可用来连其他的Unix(HP-UX, AIX等). 这个完全是个人喜好,你搞得定什么用什么.
7. 在笔记本上配置好RelfectionX,做好连接host上的vmware console


Guest OS安装

1. 泡杯茶,会耗不少时间, 我一边安装一边看DVD的,当中会有很多等待时间. 虽然我后来用了几个自动化的方式 .

2. 在vmware console 创建你的 vmware guest OS, 取名 node1, node2, 选择custome create-> Redhat Enterprise Linux ,其它都是默认. 内存选择1G(>800MB你就看不到warning乐), 硬盘选择 LSI bus controller, 大小选择10GB, 建立方式选择 pre-allocated ,也就是马上就创建这个vmdk, 我不喜欢split to 2GB,就把默认的打勾给去掉了.因为我的Host OS以及mount filesystem已经做过优化,我喜欢一个独立的大文件,你们按照自立的路子来做,不要盲目跟我.

3. 创建好后vmware guest OS之后, 给每一个guest 加上一块NIC

4. 关掉vmware console, 这个时候你的两个vmware guest OS都创建好了,分别在n1 n2目录下面,而且每个都加了1个NIC,硬盘都是LSI, 并且大小10GB,而且都预创建好了,并且没有分割成2GB一块

6.  看到很多cluster in vmware的介绍在创建share disk的时候,都是什么用一个vmware guest OS添加vmdk然后修改vmx,然后把另外一个vmware guest的vmx再添加进去,我很不喜欢这种套路。我很少用vmware workstation,所以不知道最新版本是否有vdiskmanager.反正我在gsx里面一直用vdiskmanager.

ssh到你的 Host OS里面(现在是我的SLES9SP3).  到 /vmware/rac/rhel4/share下面,运行 vmware-vdiskmanager 创建几个vmdk.  这里就有点讲究了


如果你在看我的这个文章之前,还没有搞清楚ORACLE RAC的基本结构, raw, ASM, ocfs2的概念,你就不要看下去了,浪费时间.

Oracle RAC 本质上是借鉴了很多Alpha TruCluster的技术,但是也有了很多折衷的设计。 它需要存放OCR, CRS voting 信息的共享空间, 还需要空间给ASM for oracle data, 所以
在存储的布局上,有两种方式,要么是 raw for OCR, CRS voting , ASM for data, 要么是 ocfs2 for OCR, CRS voting, ASM for data.
至于以前那种 raw for OCR, CRS voting, CRS for data的做法,我是不考虑了,做做学习用途还可以,用在production环境是给自己吃药.

所以,如果你选择第一种,你的vmdk这样建,

vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 200MB 一个 for raw for OCR
vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 200MB 一个 for raw for CRS voting
vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB 四个,  2个for ASM Oracle data, 2个for flash recovery area, 你不玩flash recovery也可以省略掉

如果你选择第二种,你的vmdk这样建,

vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB一个 for ocfs2 for OCR + CRS voting
vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB 四个for ASM for Oracle data & flash recovery area (同上)



raw没有什么有意思的,我因为还要在这个环境作其他的test,所以就选择第二种.

这样做好后,你的 /vmware/rac/rhel4/share目录就会产生你刚才创建的这些vmdk了.

7. 分别到 n1和n2的目录,打开node1.vmx 和node2.vmx, 在最后空白处添加这几段内容

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "virtual"

这段是打开 scsi1上的使用,并且设置成virtual, controller设置成lsilogic

然后依次添加

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.filename = "/vmegg/rac/rhel4/share/ocfs.vmdk"
scsi1:1.deviceType = "plainDisk"

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.filename = "/vmegg/rac/rhel4/share/asm1.vmdk"
scsi1:2.deviceType = "plainDisk"

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.filename = "/vmegg/rac/rhel4/share/asm2.vmdk"
scsi1:3.deviceType = "plainDisk"

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.filename = "/vmegg/rac/rhel4/share/asm3.vmdk"
scsi1:4.deviceType = "plainDisk"

scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.filename = "/vmegg/rac/rhel4/share/asm4.vmdk"
scsi1:5.deviceType = "plainDisk"


这样就把刚才创建的那几个vmdk添加好了

最后添加这个

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"


这段是对vmware使用共享硬盘的方式进行定义,我经常看到很多同学在装RHCS in vmware的时候说这个不正常,那个不正常,你们也可以借鉴一下这个配置
大多数人都知道设置 disk.locking ="false" 却漏掉dataCache

保存退出之后,重新打开你的vmware-console,你就可以看到2个vmware guest OS的配置中,都有这些硬盘出现了.  

其实到现在为止还是一个超级简单的工作.

在你的vmware-console里面edit config 点进看看,但是不要修改和save. !切记,而且之前修改vmx的时候,关掉你的vmware-console

8. 然后就安装你的vmware guest OS,  安装的时候,包选择default,然后点custom进去加几个必需的,  Development Tools, Legacy Software Development Libraries, Kernel Development, Editor, System tools

9. 配置你的2个网卡的固定IP,hostname, DNS, gateway, time server (NTP)

node1:

hostname node1pub
eth0 192.168.0.11
eth1 10.1.1.1.1


node2

hostanme node2pub

eth0 192.168.0.22
eth1 10.1.1.1.2

gateway, DNS就按照自己的需要配

NTP我强烈建议你们配一个,不知道NTP的,后面有古怪事情不要问我.

10. 安装结束后,进入guest OS

修改 /etc/hosts

如下

127.0.0.1   localhost   (必须要这样)

192.168.0.11   node1pub
192.168.0.22   node2pub

10.1.1.1 node1prv
10.1.1.2 node2prv

192.168.0.111 node1vip
192.168.0.222 node2vip

两个node都要一样.


修改后要确认这个hosts 都正确 (ping)

11.  ssh-keygen for root,    dsa/rsa 1024bit  我选择空的 passphase,你可以加你的passphase,但是后面你要ssh-agent $SHELL建立等效,我怕麻烦就省略掉了.

     cd ~/.ssh
     cat  *rsa.pub >> authorized_keys
     cat *dsa.pub >> authorized_keys2
     
    copy .ssh/下面这些到  node2 的 ~/.ssh下面

这些都是基本功,我就不废话了,不熟悉这个的就不要往下看了.

12. 分别在每个node 上做这些事情

   ssh localhost
   ssh node1pub
   ssh node2pub
   ssh node1prv
   ssh node2prv


13. 这个步骤和RAC没有关系,但是也是好习惯之一,检查你的service 状况,disable掉所有不需要用的service ,腾出resource给你的RAC, 什么cups之类乱七八糟的.


14. group add dba oinstall 组在两个node上, 创建oracle 用户, 主组oinstall, 附加组是dba和disk

然后和前面执行root ssh的操作完全一样,执行一次,这步非常重要,漏掉了肯定过不下去.

15. mkdir /u01/app/oracle 在2个node上
  chown  -R oracle.oinstall
  chmod  -R 775

这个目录给oracle和clusterware系统的
   

mkdir /u02/oradata/orcl

chown -R oracle.dba

这个目录给 ocfs2用来装OCR, CRS voting 的

16. 修改你的 /etc/sysctl.conf ,添加这些kernel 参数,这些都是老一套了,大家应该都很熟悉了

net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000


17. 修改 ulimits 如果你想要修改的话

vi /etc/sysconfig/limits.conf

oracle          soft    nproc   2047
oracle          hard    nproc   16384
oracle          soft    nofile  1024
oracle          hard    nofile  65536


18. 修改 pam.d login

vi /etc/pam.d/login

最后添加  session required /lib/security/pam_limits.so


19. 增加 hancheck-timer 模块在2个node上

先看一下有没有  find /lib/modules -name "hangcheck-timer.ko"

然后加上去  echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf

然后把这个模块调起来 modprobe hangcheck-timer
然后检查是否工作正常了 grep Hangcheck /var/log/messages | tail -2
看到类似这个的信息就表明工作正常了 Jan 18 01:08:19 n1pub kernel: Hangcheck: starting hangcheck timer 0.5.0 (tick is 30 seconds, margin is 180 seconds).

20. 安装ocfs2 , ocfs2的console的rpm

21. 在每个node 上这样操作

进入X, 然后运行 ocfs2console, 把你的2个node都添加进去

然后编辑 /etc/init.d/o2cb, 删除掉 靠近配置开头的那些带 #的配置行

然后 /etc/init.d/o2cb offline ocfs2
/etc/init.d/o2cb unload ocfs2
/etc/init.d/o2cb configure ocfs2  回答y 就可以了

22. 在一个 node上 mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1   (就是前面创建的第一个vmdk)

23. 在每个node上

mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl  
修改你的 /etc/fstab , 添加 类似这样的行
/dev/sdb1               /u02/oradata/orcl       ocfs2   _netdev,datavolume      0 0
到这里,我们的ocfs2 for OCR, CRS voting 就OK了

24. 修改 /etc/sysconfig/o2cb

把threshhold 的 值设置成 601

25. 在每个node上

安装你的 ASMLibs, tools, support 三个rpm文件

然后运行 /etc/init.d/oracleasm configure

回答 oracle , dba, y, y 就可以了

26.  创建ASM

在一个node上:

/etc/init.d/oracleasm  createdisk  VOL1 /dev/sdc1
/etc/init.d/oracleasm  createdisk  VOL2 /dev/sdd1
/etc/init.d/oracleasm  createdisk  VOL3 /dev/sde1
/etc/init.d/oracleasm  createdisk  VOL4 /dev/sdf1

记住,ASM在linux下面处理的对象是 partition,不是disk, 所以你那些vmdk要linux 下面partition好才能用,fdisk 就用type 83就可以了

创建好后,  在这个node 上运行  /etc/init.d/oracleasm listdisks  查看


27, 在另外一个node 上

/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks  查看

28. 在每个node上

修改 oracle用户家目录下的 .bash_profile

修改成大概这个样子

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
export ORACLE_SID=orcl1

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp


第二个节点的 ORACLE_SID=orcl2  其他都一样



=============步骤二: 安装Oracle 10gR2 clusterware===============================

1.  unset 一些环境变量

$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN

检查你的变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm

2. 用oracle 用户login , 然后运行你的unzip 之后的那个clusterware目录下的runInsaller 进入图形安装

3. 确认你的安装目录是/u01/app/oracle/product/crs

4. 修改 你的clustername 从crs到一个随便你想要的名字

然后增加  
node1pub  node1prv node1vip
node2pub  node2prv node2vip

5. 然后指定 eth0 的类型时public

6. 然后制定你的OCR 和mirror

/u02/oradata/orcl/OCRFile
/u02/oradata/orcl/OCRFile_mirror

7. 然后指定你的voting

/u02/oradata/orcl/VotingFile
/u02/oradata/orcl/VotingFile_mirror1
/u02/oradata/orcl/VotingFile_mirror2

8. 然后就开始安装了,当众会让你用完全的root身份在每个节点上运行orainstRoot.sh,你就一个节点一个节点运行,不要抢时间,一个个来

9. 然后要求你在每个节点上用完全的root权限执行 root.sh,你也一样,一个个来,一定要等一个做好了,然后做另外一个

10. 做第二个时候,如果告诉你你的eth0不是public,你就在第二个节点,用oracle用户在 X里面运行vipca, 然后配置好你的vip 信息(虚拟IP的信息,很容易配的)


11. clusterware 就安装好了.

确认一下.

$ /u01/app/oracle/product/crs/bin/olsnodes -n
node1pub  1
node2pub  2


$ ls -l /etc/init.d/init.*
-r-xr-xr-x  1 root root  1951 Oct  4 14:21 /etc/init.d/init.crs*
-r-xr-xr-x  1 root root  4714 Oct  4 14:21 /etc/init.d/init.crsd*
-r-xr-xr-x  1 root root 35394 Oct  4 14:21 /etc/init.d/init.cssd*
-r-xr-xr-x  1 root root  3190 Oct  4 14:21 /etc/init.d/init.evmd*

===============步骤三: 安装Oracle 10gR2 database========================

1.1.  unset 一些环境变量

$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS10
$ unset TNS_ADMIN

检查你的变量
$ env | grep ORA
ORACLE_SID=orcl2
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm

2. 用oracle用户,运行你unzip之后的那个database目录下的runInstaller

3. ORACLE安装目录指定到 /u01/app/oracle/product/10.2.0/db_1

4. 把2个node选择上

5. 选择 Install database Software only

6. 会要求你用完全的root权限运行 root.sh ,分别在2个node上一一运行,不要抢时间

7. 安装完毕


==================步骤四: 配置netca==========================

1. oracle 用户在一个node上运行 netca

2. 选择所有node

3. 选择  Listener configuration

4.添加一个LISTEN, 1521 port

5. 回到开始界面,选择Naming Methods configuration

6. 把Local Naming和Easy Naming 添加进去.然后结束配置

7. 确认一下

$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_NODE1PUB




==============步骤五: 配置dbca创建数据库=========================

1. 用oracle用户运行 dbca

2. 选择custom database

3. 输入数据库的全局名,比如orcl

4. 给你的系统的不同角色建立密码,我都选择same as ....

5. 选择用ASM管理数据库

6. 输入你前面设定的管理员密码,并把SPFILE 设定成/u02/oradata/orcl/dbs/spfile+ASM.ora

7.进入ASM配置界面, create NEW, 名字叫做DATA
然后下面你会看到你前面创建的4个ASM VOL1-4, 你选择  1 和2, "Redundancy" 选择 Normal.
这样 DATA diskgroup就创建好了

8. 回到ASM界面后. 仍旧选择create new, 然后名字叫做FLASH_RECOVERY_AREA, 选择第3和4两个卷,然后"Redundancy" 选择External

9. 然后OK结束ASM配置

10.Database File Locations 选择DATA

11. Recovery Configuration 选择刚才创建的 FLASH_RECOVERY_AREA diskgroup

12. 接下来默认的就可以了

13. Database Services 这里,你选择Add你一个新的service, 随便叫名字,比如ractest

然后选择 TAF Policy,是Basic

14. 开始创建数据库


===================步骤六: 校验RAC============================

1.用oracle用户login, 运行

$ srvctl status database -d orcl
Instance orcl1 is running on node node1pub
Instance orcl2 is running on node node2pub

2.
$ srvctl status service -d orcl -s ractest
Service orcltest is running on instance(s) orcl2, orcl1


3.
    $ srvctl status nodeapps -n node1pub
    VIP is running on node:  node1pub
    GSD is running on node: node1pub
    Listener is running on node: node1pub
    ONS daemon is running on node: node1pub


4.
$ srvctl status asm -n node1pub
ASM instance +ASM1 is running on node node1pub.

5.
$ srvctl config nodeapps -n node1pub -a -g -s -l
VIP exists.: /node1vip/192.168.1.111/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.

6. 运行 sqlplus  /nolog

SQL> connect /as sysdba
SQL>

    SELECT
        inst_id
      , instance_number inst_no
      , instance_name inst_name
      , parallel
      , status
      , database_status db_status
      , active_state state
      , host_name host
    FROM gv$instance
    ORDER BY inst_id;

     INST_ID  INST_NO INST_NAME  PAR STATUS  DB_STATUS    STATE     HOST
    -------- -------- ---------- --- ------- ------------ --------- -------
           1        1 orcl1      YES OPEN    ACTIVE       NORMAL    node1pub
           2        2 orcl2      YES OPEN    ACTIVE       NORMAL    node2pub




7.其他的测试,测试方法n多,你用sqlplus, asmcmd, 或者通过Web进 enterprise manager都可以.

随便你了.


就这些了,不要问我在这个doc里面的问题.

[[i] 本帖最后由 nntp 于 2006-1-20 21:09 编辑 [/i]]
作者: 网络闲人    时间: 2006-01-20 00:24
很详细 不过能不能改一下禁止使用表情!
作者: zydudu    时间: 2006-01-20 16:41
版主就是版主,我试过好多次了,不是这个问题,就是那个问题,这次我要按版主的步骤再去试验一吧。

谢谢
作者: fengwy    时间: 2006-01-20 23:09
Oracle RAC 本质上是借鉴了很多Alpha TruCluster的技术,但是也有了很多折衷的设计。
---------------------------------------
nntp,能不能对照TRUCLUSTER把和AC把两者的相同之处讲讲,我想知道到底那些东西借鉴了truconster
作者: nntp    时间: 2006-01-21 03:23
原帖由 fengwy 于 2006-1-20 23:09 发表
Oracle RAC 本质上是借鉴了很多Alpha TruCluster的技术,但是也有了很多折衷的设计。
---------------------------------------
nntp,能不能对照TRUCLUSTER把和AC把两 ...



Ok, 我虽然比较熟悉TruCluster和Tru64,但是系统内部的信息和知识是很庞大的,我也所知不多,就说一些我比较清楚地和大家分享

1. cache fusion

Oracle RAC从 版本9开始推出来,最吸引人的(也是大吹特吹的)就是 cache fusion了

因为实现了cache fusion,所以Oracle的不同节点才可以几乎实时的cache 同步, TruCluster在很早之前就实现了SSI(Single System Image), 在Alpha系统上通过插MCA(Memory Channel Adapter) 实现多个node之间集群系统的cache 一致性操作.

现在RAC的 cache fusion还是通过private network 交换的(GbE network),但是RAC已经可以用Infiniband来搭了,我会以后有空给大家介绍这种做法的.本质上Infiniband network 做hb, cache fusion 基本上就是TruCluster MCA的地位和作用.


这个是他们的相同点,不同点是 oracle RAC的cache fusion 是DB 对DB的操作,不是OS里面的,TruCluster则是在OS上的操作,技术实现上更胜一筹.不过有意思的是 Oracle 10g从Release 2开始的clusterware,也可以做一些有限的保护第三方的应用的集群了.  呵呵. DEC的伟大和技术先进性,可见一斑. 早在n年前就实现的技术.


2. CDSL

CDSL = Context Dependent Symbolic Links 就是上下文关联的符号连接.

DEC Tru64 Unix很早就可以实现Clusterwide filesystem, (请注意是clusterwide,不是clusteraware,我在这个板的的另外一个帖子也有说明).

也就是说,可以在TrueCluster的不同node 之间,建立一个集群文件系统,放在共享存储上,使得多个节点可以随意访问共享存储,修改操作数据和程序等等.

而且TrueCluster还可以把自己,也就是节点操作系统自己,完全的放到这个集群文件系统上,实现ClusterRoot Filesystem  这个是很牛B的.因为所有node除了裸机,连OS都只有五物理的一份,而且是shared,并且支持并发使用的.

Oracle最近推出的是OCFS2,  当初OCFS是ASM还没有出来之前搞出来的,因为你要做RAC,多个节点肯定要操作一个共享存储,但是同时操作的时候,每个节点的文件系统都是由自己的OS控制和感觉的,不会互相说话沟通,所以必然造成共享数据的dirty read/dirty write出现问题,甚至很容易破坏数据和应用程序. 为了建立一个在整个集群所有成员节点都能够协调和感觉的文件系统,所以就搞了ocfs, ocfs 当时主要用来放voting(quorum)和membership service的.

如果大家现在再去看OCFS2,就会发现除了我们安装Oracle RAC的时候可以把CRS, OCR还有ASM SPFile放到ocfs2上去,还可以把整个Oracle_HOME也放上去,所有的node都只有一份ORACLE_HOME.

所以你可以看出就目前ocfs2的技术,和n年前的Trucluster clusterwide filesystem比较,还是有很大的差距. 当然我这个也是废话,稍微了解点行业背景老手都知道,DEC和Oracle在技术上根本不是一个层面的公司. DEC的技术产品和员工,对现在的Intel, AMD, HP, Compaq, Oracle, Lifekeeper还有很多很多公司产生了巨大的历史影响.


3. DLM

DLM= Distributed Lock Manager

既然是多个node一起工作,存取集群文件系统上的数据,就需要同步和加锁.  一个机器上的同步和锁管理有点操作系统基本知识的人都可以理解,实现起来还是很成熟的,但是现在是多个机器在同时协同工作,要让他们这些OS的locking 和sync都得互相协调和通信,就需要分布式的Lock Manager.

DEC很早就实现了完整的DLM机制,Trucluster的DLM机制是非常成熟和牛B的. Locking Manager的机制和设计好坏,直接影响到整个机群的运行效率.

Oracle 目前在数据库的范围内实现了DLM,相比OS层面的实现,你也可以知道大概了.

RAC目前的扩展比还不是最理想的, 4台服务器组成的RAC比2台组成的,性能并不是2倍的关系. 这也和DLM实现优劣有一定的关系

4. DRD

DRD= Device Request Dispatcher

DRD就是在其集群中建立对于本地和共享存储的一个虚拟界面,使得存取本地和远程的数据都是一样的操作. Oracle的ASM就需要 DRD实现作为基础. 配置过ASM的同学应该对ASM的便捷性是有深刻影响的.

我个人觉得ASM是目前Oracle RAC实现中比较成功的一点,ASM的DRD实现做得比较好,而且的确在客观上,大大降低了DBA team对于DB storage管理的复杂性.

TruCluster的DRD是用来支持他的CFS(clusterwide filesystem)的,可以用来放不仅仅是数据库的所有其他数据和应用,应用范围和成熟度要比ASM高的多,ASM目前仅能放Oracle data , tablespace等. 其他文件类型也只能放有限的几种.


我对Tru64 Unix/Cluster所知有限,当你面对这样牛B的一个设计的时候,才知道自己所学连芝麻都不如. 只是可惜了一帮不懂技术的混蛋. 把DEC的一大堆好东西,可以真正推动社会发展的技术和思想给糟蹋了.

抛砖以引玉,欢迎大家comment.
作者: raid_fifa    时间: 2006-01-21 20:55
看这篇帖子才是长知识,惊为天人!!!
作者: shfan    时间: 2006-01-22 13:21
斑竹,真的很佩服你。
作者: unix007    时间: 2006-01-23 22:43
DEC的nonstop系统,真是被hp给浪费了.
到目前为止,也只有true unix的nonstop才是唯一真正的群集系统.
原来在sco unixware7系统上实现过,可惜未能推广开,真是可惜.
作者: nntp    时间: 2006-01-23 23:40
原帖由 unix007 于 2006-1-23 22:43 发表
DEC的nonstop系统,真是被hp给浪费了.
到目前为止,也只有true unix的nonstop才是唯一真正的群集系统.
原来在sco unixware7系统上实现过,可惜未能推广开,真是可惜.


你错了.

nonstop配合硬件,实现的并不是集群,是容错机. 这是2个范畴上的东西

www.compaq.com/productbulletin上你可以看到详细的nonstop的规格.

东西是在sco unixware上弄得,但是改变比较大的,定位和具体的安装实施的状况和HA集群和不一样.
作者: fengwy    时间: 2006-01-24 20:56
这样的帖子怎么还不加精,nntp小心激起民愤

[ 本帖最后由 fengwy 于 2006-1-24 21:03 编辑 ]
作者: nntp    时间: 2006-01-25 13:32
好像已经是精华的说, 我看到前面写着<<保留>> xxxxx
作者: fengwy    时间: 2006-01-26 20:23
RAC目前的扩展比还不是最理想的, 4台服务器组成的RAC比2台组成的,性能并不是2倍的关系. 这也和DLM实现优劣有一定的关系
----------------------------------------
确实如此,rac超过4节点的就很少见
这一点上和DB2就差远了,所以巨型海量的数据库还是用DB2的多
作者: bigbomb    时间: 2006-01-27 10:31
标题: 好东西,看不懂
学习中。。。。。。。。
作者: nntp    时间: 2006-01-27 13:45
原帖由 fengwy 于 2006-1-26 20:23 发表
RAC目前的扩展比还不是最理想的, 4台服务器组成的RAC比2台组成的,性能并不是2倍的关系. 这也和DLM实现优劣有一定的关系
----------------------------------------
确 ...



IBM DB2 EEE可是人家的王牌. 加上收购了informix, informix是什么公司? 当时sybase还没有没落的时候, sybase, informix, DB2.  Oracle. 呵呵.

DB2的设计就不是在小机器上搞起来的. 牛的公司还是仍旧的那样牛.
作者: bigwyvern    时间: 2006-02-10 06:35
标题: 请问楼主:在添加节点时,警告:不能起动集群堆栈,是何原因?
如题。Counld not start cluster stack.

在oss.oracle.com上有人也问:
What does dmesg say?

Elvis Liang wrote:

> Hi all,
>
> I install the beta version of OCFS2 on RHEL4 with
> ocfs2-2.6.9-11.EL-0.99.13-1.i686.rpm. When I start ocfs2console, click
> on Cluster and then Configure Nodes, it prompts "Could not start
> cluster stack". Can anybody help me?
>
>
> Thanks in advanced.
> Elvis
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Ocfs2-users mailing list
>Ocfs2-users at oss.oracle.com
>http://oss.oracle.com/mailman/listinfo/ocfs2-users
>  
>
作者: 我爱臭豆腐    时间: 2006-02-10 09:04
我对Tru64 Unix/Cluster所知有限,当你面对这样牛B的一个设计的时候,才知道自己所学连芝麻都不如. 只是可惜了一帮不懂技术的混蛋. 把DEC的一大堆好东西,可以真正推动社会发展的技术和思想给糟蹋了.



楼主果然厉害啊. tru64的双机我也作过一些从4.0 到5.1的 一些其他unix和windows的双机我也作过.我个人感觉tru64的双机还是比较牛的. 可惜的是卖的越来越完蛋.
作者: ljhb    时间: 2006-02-13 09:35
标题: 回复 14楼 nntp 的帖子
db2 eee作的集群好象和rac原理不大一样,它是把表空间分布式的存储在节点之内,这样数据的容错性比rac要低,但是性能却是要好多了
作者: nntp    时间: 2006-02-15 05:56
share nothing 和shared的争论即便在行业内也没有一个定论.

share nothing 结构的HA cluster往往更加适合非常依靠node memory中活动的应用.  简单的说EEE和RAC 数据容错性的高低,我看没有办法给一个简单的结论.

事实上 EEE系统一直在high-end 的mission critical 的环境使用,而且DB2和Oracle虽然都是RDBMS,但是结构和数据操作差别很大.

DB2的生存历史一直存在于高端的大型机/中型机中, 这些设备都有特殊的体系结构,和SGI, HP的一些高端系统一样,更加适合share nothing的数据库操作(这不是我的结论,我上面说了,要比一个高低不容易做到)

我们来看看mysql cluster, 做mysql HA cluster,我们现在手上有很多solution可以来做到,无论从RHCS到lifekeeper, MC/SG等等,都采用shared 方式但是mysql自己做的ha cluster可是用了share-nothing的结构,仔细看他的cluster说明,他们最自豪的就是 the only one in-memory database of the world. 这点和那些采用share nothing的系统在很大程度上不谋而合.

用ha软件来决定用户应用的HA方式是错误和走不通的,只有去满足用户应用HA习性和要求的HA cluster系统才会走得长久.

所以我的观点就是,他们都有非常特殊的起源和发展的生态环境,能够很好的去满足自己擅长领域的要求,但是同时又不可避免带有"缺陷"的一面.

我们不仅要选择正确的系统,更要正确的去选择系统 :")


如果某应用OLTP, 数据结构关系不复杂,表表层次清晰,要求优良的响应时间(比如运营商的SMS gateway之类的), 用4个 dual AMD64/DC 16GB的node 做share nothing的mysql cluster要比用2个 8way AMD64/DC 8GB的Oracle RAC要合理的多.
作者: orablue    时间: 2006-02-15 18:29
原帖由 nntp 于 2006-1-23 23:40 发表


你错了.

nonstop配合硬件,实现的并不是集群,是容错机. 这是2个范畴上的东西

www.compaq.com/productbulletin上你可以看到详细的nonstop的规格.

东西是在sco unixware上弄得,但是改变比 ...



遇到点问题,请问这个怎么解决,谢谢

未命名.JPG (47.68 KB, 下载次数: 70)

未命名.JPG

作者: nntp    时间: 2006-02-15 22:39
没头没脑的问题我是没有办法回答的,谢谢.
作者: orablue    时间: 2006-02-16 08:27
您好:
我按照你前面的步骤,一直做到了这里:
23. 在每个node上

mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl  

<----这里是成功的

修改你的 /etc/fstab , 添加 类似这样的行
/dev/sdb1               /u02/oradata/orcl       ocfs2   _netdev,datavolume      0 0
到这里,我们的ocfs2 for OCR, CRS voting 就OK了

<----这里我也修改了,然后重新启动机器,出现上面的错误,我重新做了几次都是这里的问题,请问我哪里是
不是没有配置?
作者: nntp    时间: 2006-02-17 05:44
在我的guide里面,往前走到 ocfs创建那里,仔细看然后重新try,  fstab里面加进去,不过是为了以后booting的时候可以自动mount你的ocfs fs,  出现屏幕提示,说明ocfs没有ready, 具体什么问题,你要做troubleshooting.

1. 把fstab里面的去掉
2. 手工作mount 操作
3. 另外一个console看你的syslog

正常情况下, primary node起来后,等到secondary node起来后,你可以在primary node的console上看到 一行信息,说的大概就是第二个node已经加到第一个node的ocfs domain里面去了。
作者: candleinwind    时间: 2006-02-17 14:29
楼主的水平比较高,对一些细节问题可能感觉很简单,我也来说两句:

楼上的楼上的兄弟的问题可能是在启动的时候加载ocfs不成功.
1.  检查ocfs是否正确安装,即:要与Linux的内核版权想匹配
2.安装ocfs后,是否做了配置?
3.在/etc/fstab文件里,加载文件的格式是否填写正确?
如果这些都没问题,应该不会有什么问题了
作者: solaris81812    时间: 2006-02-20 09:48
标题: 斑竹大哥,为你干一杯
很赞同您后面的宏论,很多话都能引起我强烈的共鸣呀,我的第一份工作就是北京的华迪公司,是DEC国内的合资公司,主要代理DEC产品,可惜那时候DEC公司已经江河日下,成为别的公司分割鱼肉的骆驼了。可怜呀,可惜呀。
作者: zhagzhahui    时间: 2006-02-20 16:34
楼主那么好的配置,为什么要一定用vmware?或者你发贴的时候屏蔽调vmware部分。
因为我看那部分很长,冲淡了正题。您觉得呢。
不妥之处请原谅。
作者: nntp    时间: 2006-02-21 15:10
原帖由 zhagzhahui 于 2006-2-20 16:34 发表
楼主那么好的配置,为什么要一定用vmware?或者你发贴的时候屏蔽调vmware部分。
因为我看那部分很长,冲淡了正题。您觉得呢。
不妥之处请原谅。



sorry? 什么意思? :"))))
作者: chfhy    时间: 2006-02-22 13:43
我也装过trucluster、hacmp、suncluster、veritas集群,并且安装过RAC,感觉trucluster是最好的,我也和原来compaq的技术人聊过天,都为alpha机的停产惋惜
作者: nntp    时间: 2006-02-22 14:52
原帖由 chfhy 于 2006-2-22 13:43 发表
我也装过trucluster、hacmp、suncluster、veritas集群,并且安装过RAC,感觉trucluster是最好的,我也和原来compaq的技术人聊过天,都为alpha机的停产惋惜



alpha 还在生产,不过会已经在product roadmap上逐渐消失了.

HP单走IA64是错误的.

IMHO: 让一个女人来领导一个历史悠久复杂庞大并且技术性很强的公司是一个致命的决定.
作者: fengwy    时间: 2006-03-01 00:05
nntp歧视妇女
作者: nntp    时间: 2006-03-01 00:14
原帖由 fengwy 于 2006-3-1 00:05 发表
nntp歧视妇女



对的. :")
作者: shimu    时间: 2006-03-01 00:39
前年的时候热衷这个把9i,10g在window,linux下在都做过,有次为过瘾做了个6个节点的rac,当然也在vmware下,架构和楼主一样,现在懒了哦..
作者: shimu    时间: 2006-03-01 00:42
顺便发两张当初bt的图

12b.jpg (53.42 KB, 下载次数: 139)

bt1

bt1

1.jpg (37.79 KB, 下载次数: 154)

bt2

bt2

2.jpg (44.05 KB, 下载次数: 118)

bt3

bt3

3.jpg (75.18 KB, 下载次数: 133)

bt4

bt4

作者: nntp    时间: 2006-03-01 14:10
BT :->
作者: fengwy    时间: 2006-03-03 08:14
nntp,在vmware gsx下作和在vmware workstation下作有什么区别
作者: nntp    时间: 2006-03-03 14:51
原帖由 fengwy 于 2006-3-3 08:14 发表
nntp,在vmware gsx下作和在vmware workstation下作有什么区别



对于这个RAC来说,两者基本没有区别.

因为我的gsx还要派其他用处,所以我基本上没有用过workstation,不喜欢笔记本上装这种resource killer.
作者: fuminglei8    时间: 2006-03-06 15:48
标题: 回复 1楼 nntp 的帖子
非常感谢楼主的文章心得,我是一个才搞oracle的菜鸟,在RHEL4上装了上oracle的data,正准备试试cluster,现在有个问题想请问一下:楼主做的是双机,也就是说在双机的情况下,通过RAC能实现oracle和WEB的负载均衡(不知道我对楼主的文档的理解对不对?),我想在双机做好一段时间后,需要再加机器进行集群应该如何做?会不会对数据库内容有什么影响?或对整个集群的服务有什么影响?谢谢!!
作者: nntp    时间: 2006-03-06 16:37
原帖由 fuminglei8 于 2006-3-6 15:48 发表
非常感谢楼主的文章心得,我是一个才搞oracle的菜鸟,在RHEL4上装了上oracle的data,正准备试试cluster,现在有个问题想请问一下:楼主做的是双机,也就是说在双机的情况下,通过RAC能实现oracle和WEB的负载均衡( ...


实在不知道从哪儿开始回答你的问题,先别碰cluster把,把基础的结构思路整理清楚了再慢慢来.
作者: linpay2000    时间: 2006-05-25 12:58
楼主,你好,你的
8. 然后就安装你的vmware guest OS,  安装的时候,包选择default,然后点custom进去加几个必需的,  Development Tools, Legacy Software Development Libraries, Kernel Development, Editor, System tools

26.  创建ASM

在一个node上:

/etc/init.d/oracleasm  createdisk  VOL1 /dev/sdc1
/etc/init.d/oracleasm  createdisk  VOL2 /dev/sdd1
/etc/init.d/oracleasm  createdisk  VOL3 /dev/sde1
/etc/init.d/oracleasm  createdisk  VOL4 /dev/sdf1

记住,ASM在linux下面处理的对象是 partition,不是disk, 所以你那些vmdk要linux 下面partition好才能用,fdisk 就用type 83就可以了

创建好后,  在这个node 上运行  /etc/init.d/oracleasm listdisks  查看

这两步中,是否在第8步安装过程中把5个1G的分区格式化成ext3就可以了。
然后直接用就行了,对吗?
如果第8步没有做,则第26步中还是先要格式化成ext3才能用,对吧。
谢谢。
作者: nntp    时间: 2006-05-25 16:47
跟ext3有什么关系? 我没有描述过的,就是不要做的.

你想想ASM和ext3的关系,就不会这样问了。
作者: rambus    时间: 2006-06-14 11:08
总感觉RAC是ORACLE拿出来的晃点人的东西,和他们的工程师谈过,据说性能并不是宣传中那么好,不知道4个节点的实际性能如何。。。。。。。。。。
作者: donglnet    时间: 2006-06-14 11:37
标题: 谢了
我正想试验哪
作者: 梅又闻花    时间: 2006-06-14 14:54
高手越来越多,前年自己安装9iRAC的时候,足足用了两周。
作者: crazycash    时间: 2006-07-14 18:09
标题: 回复 1楼 nntp 的帖子
在版主的文章指导下,已经成功的安装完rac和database,不过在安装ocfs2的时候出现了一些小问题,希望能够帮助解答。
    ocfs2的三个rpm包成功安装(ocfs2,ocfs2console,ocfs2-tools)。但是运行ocfs2console后,选择cluster->configure nodes时,出现错误信息:
Could not start cluster stack,this must resolve before any OCFS2 filesystem can be mount

在安装ocfs2以前没有特别的设置阿,不知道这个问题的原因是什么。
谢谢
作者: nntp    时间: 2006-07-14 20:34
检查环境.
作者: shimu    时间: 2006-07-29 23:59
up
作者: hbaoy    时间: 2006-08-21 17:43
还是先留个记号吧
作者: kaka_sun    时间: 2006-08-23 10:02
10GB上安装的是我的上面的这个OS,用来做Host OS, 并且已经调优过. (不会这种环境下linux调优的同学,你做出来的性能会和我有不少差距)

2个80GB硬盘,我用linux MD 做软RAID, RAID level 是0, 并且作了调优(不会这种环境下linux阵列配置和优化的同学,你做出来的性能会和我有不少差距)

VMWare gsx3.2.0 安装在 10GB硬盘上,也作了一些小的优化工作(你在VTN上查得到怎么做优化).

大哥哥,可不可以把这部分贴出来啊,让大家受益啦!
作者: nntp    时间: 2006-08-23 10:41
大家受益? 还是大家偷懒?

小弟弟,告诉你一个事实, linux就是动手积累的学科,你越是不愿意自己去搞,水平就越是臭,千万不要以为看了n个别人的帖子,你就会了.

我不贴出来这部分的原因就是完成这部分需要的是基本功,如果这部分都完成不了,后面的RAC安装对你来说没有很大意义. 依样画葫芦做出来了又怎样?\

如果你对 MD, fs之类的都一窍不通,还是不要看后面的了,浪费时间.
作者: blue_stone    时间: 2006-08-23 15:17
>>> 你越是不愿意自己去搞,水平就越是臭,千万不要以为看了n个别人的帖子,你就会了.

不错,确实是这样。
Linux更多的是工程方面的, 实践出真知。
作者: kaka_sun    时间: 2006-08-23 15:43
看了老大的帖子,真是汗流浃背了,也没说不研究,只想看看老大是真么解决linux服务器的安装、优化、安全的

我知道,实践是检验真理的唯一标准,望您贴出来让大家少走弯路!
作者: vecentli    时间: 2006-08-23 16:34
idevelopment.info上的一篇文章,内容基本上一样。知识lz的简单点罢了。

作者: nntp    时间: 2006-08-23 19:00
原帖由 vecentli 于 2006-8-23 16:34 发表
idevelopment.info上的一篇文章,内容基本上一样。知识lz的简单点罢了。
:)


还是有点差别的 Jeff Hunter同志用wks来做的, 如果你真地按照他的做法作一边,然后在做做我写的那个就知道了.

我在写这个brief的时候联系过jeff 请教过几个问题.

jeff的帖子在制作shared storage的时候是有错误的. 嘿嘿, 等你按照他做shared storage的方法做好RAC, CRS装好后,两个vm node起来就会发现吃药了.
实际上他的错误一直等到Tarry Singh 的"Racing"系列发表后才有一个正确地解决方法.
:")
作者: vecentli    时间: 2006-08-24 11:35
原帖由 nntp 于 2006-8-23 19:00 发表


还是有点差别的 Jeff Hunter同志用wks来做的, 如果你真地按照他的做法作一边,然后在做做我写的那个就知道了.

我在写这个brief的时候联系过jeff 请教过几个问题.

jeff的帖子在制作shared storage的时候 ...


偶也用的gsx 3.2,没有用workstation 4.5。。
                              
今天看了一下以前的环境,发现第二台虚拟机起不来了。。
            
在bios那一步就停了,找不到原因。感觉gsx3.2不稳定啊!
作者: nntp    时间: 2006-08-24 12:21
3.2应该没有问题的,久经考验... :")

是每次都是B node起不来,还是后起的任何一个node都不行?
作者: vecentli    时间: 2006-08-24 12:56
原帖由 nntp 于 2006-8-24 12:21 发表
3.2应该没有问题的,久经考验... :"

是每次都是B node起不来,还是后起的任何一个node都不行?


都是b node起不来,我记得b node是用copy 文件,然后修改vmx文件弄的。

根据僵死的界面,应该是vmware的配置问题。。看log也看不出个所以然。。。
作者: vecentli    时间: 2006-08-24 15:16
已经搞定,但不知道原因。。
faint。
作者: myfiner    时间: 2006-08-24 15:50
好东西啊.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2