在 Oracle RAC/CRS 和 Sun ZFS Storage Appliance 7000 系统上配置 Oracle Solaris Cluster 软件

2011 年 6 月

作者:J. Randriam

本文档介绍如何在 Oracle Real Application Clusters (RAC)/Cluster Ready Services (CRS) 11.1.0.7 和 Sun ZFS Storage 7120 设备上安装和配置 3 节点 Sun Cluster 3.2 01/09、11/09 或 Oracle Solaris Cluster 3.3(或更高版本)。

注意:在本配置中使用了 Sun ZFS Storage 7120,但本文档中的信息应适用于整个 Sun Storage 7000 统一存储产品系列。

本文档包含下列主题:

简介

本文档假设:

  • 节点上已经安装 Oracle Solaris Cluster 软件。
  • Sun ZFS Storage 7120 系统连接到集群节点所在的子网,并且从每个节点均可到达该系统(即“可以 ping 通”)。

在下图中,集群节点为 paborn1paborn2paborn3,它们运行的都是 Oracle Solaris 10 10/09 操作系统。Sun ZFS Storage 7120 名为 pandroid4,此系统运行的是 2010.Q3.3.1 软件。

图 1 - Solaris Cluster 和 Oracle RAC

在此配置中,Sun ZFS Storage 7120 用于两个目的:

  • 为 CRS Oracle 集群注册表 (OCR) 和表决文件以及 RAC 数据库文件提供 NFS 文件系统
  • 提供一些用作仲裁设备(或者更准确地说,用作软件仲裁设备)的 iSCSI LUN

使用 CLI 在 Sun ZFS Storage 7120 上的初始准备工作

在 Sun ZFS Storage 7120 中,文件系统和 LUN 一般称为共享。这些共享是在一个项目的上下文中创建的。该项目可以包含文件系统和 LUN 的混合体。创建新项目的过程很简单。

要执行以下步骤,请通过 ssh 连接到 Sun Storage 7210,以访问命令行界面 (CLI):

1. 创建一个项目(在本示例中,使用 crs-project):

  pandroid4:> shares
  pandroid4:shares> project crs-project
  pandroid4:shares crs-project (uncommitted)> commit

然后可以使用新建的项目创建 Oracle Solaris Cluster 将访问的 NFS 文件系统和 iSCSI LUN。

2. 创建 iSCSI 目标:

注意:在本示例中,目标的 IQN 是由系统自动生成的。

  pandroid4:> configuration san targets iscsi
  pandroid4:configuration san targets iscsi> create
  pandroid4:configuration san targets iscsi target (uncommitted)> set alias="Tgt4RAC"
  alias = Tgt4RAC (uncommitted)
  pandroid4:configuration san targets iscsi target (uncommitted)> set auth=none
  auth = none (uncommitted)
  pandroid4:configuration san targets iscsi target (uncommitted)> set interfaces=nge0
  interfaces = nge0 (uncommitted)
  pandroid4:configuration san targets iscsi target (uncommitted)> commit
  pandroid4:configuration san targets iscsi> list
  ...
  TARGET     ALIAS          
  target-000 Tgt4RAC        
             |
  +-> IQN
  iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37
  ...

稍后从集群节点访问 iSCSI LUN 时将引用所创建的目标(更具体说是目标的 IQN)。

3. 创建一个 iSCSI 目标组(在本示例中为 Grp4RAC),并将先前创建的目标包括在该组中:

  pandroid4:configuration san targets iscsi groups> create
  pandroid4:configuration san targets iscsi group (uncommitted)> set name="Grp4RAC"
  name = Grp4RAC (uncommitted)
  pandroid4:configuration san targets iscsi group (uncommitted)> set targets=iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37
  targets = iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 (uncommitted)
  pandroid4:configuration san targets iscsi group (uncommitted)> commit
  pandroid4:configuration san targets iscsi groups> list
  ...
  group-002 Grp4RAC
            |
  +-> TARGETS
  iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37
  ...

稍后创建 iSCSI LUN 时将引用该目标组(参见下面的第 6 步)。

4. 创建 iSCSI 发起方:

a. 在主机端,确定每个发起方(即每个节点)的 IQN:

  root@paborn1 # iscsiadm list initiator-node
  Initiator node name: iqn.1986-03.com.sun:01:00144f971d46.paborn1   <=== 
  Initiator node alias: -
  Login Parameters (Default/Configured):
  Header Digest: NONE/-
  Data Digest: NONE/-
  Authentication Type: NONE
  RADIUS Server: NONE
   RADIUS access: unknown
  Tunable Parameters (Default/Configured):
  Session Login Response Time: 60/-
  Maximum Connection Retry Time: 180/-
  Login Retry Time Interval: 60/-
   Configured Sessions: 1

b. (返回 7210)使用步骤 a. 中获得的 IQN 信息创建发起方:

  pandroid4:configuration san initiators iscsi> create
  pandroid4:configuration san initiators iscsi initiator (uncommitted)> set alias="paborn1"
  alias = paborn1 (uncommitted)
  pandroid4:configuration san initiators iscsi initiator (uncommitted)> set initiator=iqn.1986-03.com.sun:01:00144f971d46.paborn1
  initiator = iqn.1986-03.com.sun:01:00144f971d46.paborn1 (uncommitted)
  pandroid4:configuration san initiators iscsi initiator (uncommitted)> commit
  pandroid4:configuration san initiators iscsi> list
  NAME          ALIAS
  initiator-000 paborn1
  |
  +-> INITIATOR
  iqn.1986-03.com.sun:01:00144f971d46.paborn1
  ...

对每个节点重复步骤 a 和 b。

5. 创建一个发起方组(在本示例中为 rabornGrp),并将先前创建的发起方包括在该组中(通过其 IQN 进行引用):

  pandroid4:configuration san initiators iscsi groups> create
  pandroid4:configuration san initiators iscsi group (uncommitted)> set name=abornGrp
  name = abornGrp (uncommitted)
  pandroid4:configuration san initiators iscsi group (uncommitted)> set initiators=iqn.1986-03.com.sun:01:00144f971d46.paborn1
  ,iqn.1986-03.com.sun:01:00144fac24ac.paborn2
  ,iqn.1986-03.com.sun:01:00144f97ed34.paborn3
  initiators = iqn.1986-03.com.sun:01:00144f971d46.paborn1,iqn.1986-03.com.sun:01:00144fac24ac.paborn2,iqn.1986-03.com.sun:01:00144f97ed34.paborn3 (uncommitted)
  pandroid4:configuration san initiators iscsi group (uncommitted)> commit
  pandroid4:configuration san initiators iscsi groups> list
  GROUP     NAME
  group-001 abornGrp
   |
  +-> INITIATORS
                iqn.1986-03.com.sun:01:00144f971d46.paborn1
  iqn.1986-03.com.sun:01:00144fac24ac.paborn2
  iqn.1986-03.com.sun:01:00144f97ed34.paborn3
  ...

稍后创建 iSCSI LUN 时将引用该发起方组(参见下面的第 6 步)。对于给定的 LUN,它将定义允许哪些发起方(即节点)访问它。

6. 创建 iSCSI LUN:

a. 选择第 1 步中创建的项目。

 pandroid4:shares> select crs-project

b. 在该项目中创建 LUN(在本示例中为 crslunA),并将其与先前创建的目标组和发起方组相关联:

  pandroid4:shares crs-project> lun crslunA
  pandroid4:shares crs-project/crslunA (uncommitted)> set volsize=20G
  volsize = 20G (uncommitted)
  pandroid4:shares crs-project/crslunA (uncommitted)> set targetgroup=Grp4RAC
  targetgroup = Grp4RAC (uncommitted)
  pandroid4:shares crs-project/crslunA (uncommitted)> set initiatorgroup=abornGrp
  initiatorgroup = abornGrp (uncommitted)
  pandroid4:shares crs-project/crslunA (uncommitted)> commit
  pandroid4:shares crs-project> list
  LUNs:
  NAME             SIZE    GUID
  crslunA           20G     600144F0FB360BAD00004C73C7E90001
  ...
    

根据需要对每个 LUN 重复步骤 b。

此时,集群节点(iSCSI 发起方)可以获取您所创建的 iSCSI LUN 作为 iSCSI 目标。

使用 Sun ZFS Storage 7120 CLI 创建 NFS 文件系统

1. 选择将在其中创建文件系统的项目(在本示例中为 crs-project)

 pandroid4:shares> select crs-project

2. 创建一个文件系统(在本示例中为 nfs-for-crs):

  pandroid4:shares crs-project> filesystem nfs-for-crs
  pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set mountpoint=/export/crs
  mountpoint = /export/crs (uncommitted)
  pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set root_user=root
  root_user = root (uncommitted)
  pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set sharenfs="anon=0"
  sharenfs = anon=0 (uncommitted)
  pandroid4:shares crs-project/nfs-for-crs (uncommitted)> set root_permissions=744 
  root_permissions = 744 (uncommitted)
  pandroid4:shares crs-project/nfs-for-crs (uncommitted)> commit
  pandroid4:shares crs-project> list
  Filesystems:
  NAME             SIZE    MOUNTPOINT
  nfs-for-crs      79.6K   /export/crs
  ...

根据需要对每个文件系统重复以上步骤。

从集群节点访问 NFS 文件系统

此时,可以使用刚创建的文件系统,并且可以从任何节点对其进行访问和挂载。

作为快速验证,可以使用 Sun ZFS Storage 7120 的 IP 地址(在本示例中为 10.6.204.78)在一个节点上尝试以下命令:

  # cd /net/10.6.204.78/export/crs
  # mount -v|grep crs
  10.6.204.78:/export/crs on /net/10.6.204.78/export/crs type nfs
  remote/read/write/nosetuid/nodevices/intr/retrans=10/retry=3/xattr/dev=5580006
  on Mon Oct 5 18:30:32 2009

 

从集群节点访问 iSCSI LUN

为了可以从节点看到和使用所创建的 LUN,还需要在每个节点上执行以下步骤:

1. 对 iSCSI 启用静态发现方法:

  # iscsiadm modify discovery -s enable
  # iscsiadm list discovery
  Discovery:
  Static: enabled    <--- good!
  Send Targets: disabled
  iSNS: disabled

2. 使用在“Sun ZFS Storage 7120 初始准备工作”第 2 步中创建的目标的 IQN:

 # iscsiadm add static-config iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37,10.6.204.782

3. 要确保 devdevices 树随新添加的 LUN 更新,请执行以下命令:

 # devfsadm -i iscsi

4. 现在 LUN 应可见。可以使用 iscsiadm list target 命令查看新 LUN 及其关联的设备名 (cXtYdN):

  # iscsiadm list target -S
  Target: iqn.1986-03.com.sun:02:57a9b940-6df5-c127-8175-fd49d7c9fa37 
  Alias: pool-0/local/crs-project/crslunA
  TPGT: 1
  ISID: 4000002a0000
  Connections: 1
  LUN: 0
  Vendor: SUN
  Product: SOLARIS
  OS Device Name: /dev/rdsk/c6t600144F04AC9EB700000144FA6E77400d0s24AC9EB700000144FA6E77400d0s2
  ...

5. 如有需要,请使用 format 命令根据需要更改标签和/或分区。

6. 在每个节点上添加完在 Sun ZFS Storage 7120 中创建的所有 iSCSI LUN 之后,请使用新添加的设备更新 Oracle Solaris Cluster DID 命名空间。从一个节点运行以下命令:

  # cldevice populate
  Configuring DID devices
  did instance 24 created.
  did subpath paborn1:/dev/rdsk/c6t600144F04AC9EB700000144FA6E77400d0
  created for instance 24.
  Configuring the /dev/global directory (global devices)
  obtaining access to all attached disks
  #

7. 检查所有节点是否都能看到新添加的 LUN:

  # cldevice status
  ...
  /dev/did/rdsk/d24   paborn1   Ok   <--
  paborn2   Ok   <-- good!
  paborn3   Ok   <--
  ...

注意:先前列出的 Solaris 命令序列并非特定于 Sun ZFS Storage 7120。几乎相同的步骤适用于任何 iSCSI 目标阵列。

在此阶段,在 Sun ZFS Storage 7120 中创建和配置的 LUN 已准备就绪,随时可以使用。可以将其用作集群中配置的任何其他共享存储设备。

添加仲裁设备

您可以挑选其中一个 iSCSI LUN 用作仲裁设备。

例如:

  # clquorum add d24
  # clquorum show d24
  === Quorum Devices ===
  Quorum Device      Name: d24
  Enabled:          yes
  Votes:            2
  Global Name:      /dev/did/rdsk/d24s2
  Type:             shared_disk
  Access Mode: scsi3>
  Hosts (enabled):  paborn2, paborn3, paborn1
    

在集群中配置 Oracle RAC/CRS

1. 编辑每个节点上的 /etc/vfstab 文件。

对于本示例,在 Sun ZFS Storage 7120 中为 Oracle RAC/CRS 创建了两个 NFS 文件系统:/export/oracrs/export/oradb。(有关如何创建 NFS 文件系统的信息,请参阅从 Sun ZFS Storage 7120 GUI 创建 NFS 文件系统)。

a. 添加以下 vfstab 条目。记下所有选项,以便在引导时自动挂载 Sun ZFS Storage 7120 中创建的 NFS 文件系统。

  # vi /etc/vfstab
  ...
  10.6.204.78:/export/crs - /data/crs nfs 2 yes
  rw,bg,forcedirectio,wsize=32768,rsize=32768,hard,noac,nointr,proto=tcp,vers=3
  10.6.204.78:/export/oradb - /data/db nfs 2 yes
  rw,bg,forcedirectio,wsize=32768,rsize=32768,hard,noac,nointr,proto=tcp,vers=3

b. 现在,手动挂载这些文件系统:

  # mount /data/crs
  # mount /data/db

2. 将文件系统的所有者更改为 oracle/dba

  # chown oracle:dba /data/crs
  # chown oracle:dba /data/db

3. 配置 RAC 框架资源组。

从一个节点运行以下命令:

注意:调整节点列表以与您的配置匹配,同时还要调整 Desired_primariesMaximum_primaries

  # clrg create -S rac-framework-rg
  # clrs create -t SUNW.rac_framework:4 -g rac-framework-rg rac-framework-rs
  # clrs create -t SUNW.rac_udlm -g rac-framework-rg -p resource_dependencies=rac-framework-rs  rac-udlm-rs
  # clrg online -emM rac-framework-rg

4. 安装 Oracle CRS 和 Oracle 二进制文件,然后创建数据库。

注意:本文档不详细介绍如何执行此操作,仅概述为执行此任务所需完成的步骤。

a. 在先前在 Sun ZFS Storage 7120 上创建并在节点上挂载(挂载在 /data/crs 上)的 NFS 文件系统上安装 CRS OCR 和 VOTE 设备。

注意:最少需要创建 5 个设备,每个设备 256MB,并且必须将所有者更改为 oracle:dba

完成此操作的一种办法是使用 mkfile 命令:

  # mkfile 256m ocrdev1
  # chown oracle:dba ocrdev1
  # ls -l ocrdev1
  -rw------T 1 oracle   dba   268435456 Nov 2 16:56 ocrdev1

还可以使用 iSCSI LUN 作为 CRS 配置设备,并且可以使用 format 命令在 iSCSI LUN 上创建分片,与在物理磁盘上所做的一样。有关详细信息,请参阅关于 Oracle RAC 配置的 Oracle Solaris Cluster 发行文档。

b. 在本地磁盘上安装 Oracle CRS 和 rdbms 二进制文件。对于本示例,我们将使用 CRS_HOME=/install/oracle/crsORACLE_HOME=/install/oracle/10g

c. 安装完 CRS 二进制文件之后,向 rac-framework-rg 添加 crs_framework 资源。

  # clrs create -t SUNW.crs_framework -g rac-framework-rg \
  -p resource_dependencies=rac-framework-rs crs-framework-rs \
  # clrs enable crs-framework-rs

d. 创建 Oracle 监听器。

e. 创建 Oracle RAC 数据库。(在本示例中,将其称为 testdb。)

5. 创建并配置一个 scalable_rac_server_proxy 资源组(本示例中为 rac-proxy-rg)。注意:根据您的配置调整变量。

  # clrt register SUNW.scalable_rac_server_proxy
  # clrg create -S -p rg_affinities=++rac-framework-rg rac-proxy-rg
  # clrc create -t SUNW.scalable_rac_server_proxy -g rac-proxy-rg \
  -p Resource_dependencies=rac-framework-rs \
  -p CRS_HOME=/install/oracle/crs -p DB_NAME=testdb \
  -p ORACLE_HOME=/install/oracle/10g \
  -p ORACLE_SID{paborn1}=testdb1 \
  -p ORACLE_SID{paborn2}=testdb2 \
  -p ORACLE_SID{paborn3}=testdb3 \
  -p resource_dependencies_offline_restart=crs-framework-rs rac-proxy-rs

#clrg online -emM rac-proxy-rg

作者推荐的资源

修订版 1,2011 年 6 月 10 日