oracle rac集群部署(一)

发布一下 0 0

RAC集群介绍

Oracle Real Application Clusters (RAC)

  • 架构

Oracle Real Application Clusters 是屡获殊荣的 Oracle Database 企业版的一个选件。Oracle RAC 是一个具有共享缓存架构的集群数据库,它克服了传统的无共享方法和共享磁盘方法的限制,为您的所有业务应用提供了一种具有高度可扩展性和可用性的数据库解决方案。Oracle RAC 是 Oracle 私有云架构的关键组成部分。

  • 高可用性

Oracle Real Application Clusters 可以消除数据库服务器单点故障问题,从而为客户提供优秀的数据库可用性。在集群服务器环境中,数据库本身在服务器池之间实现共享,这意味着如果池中的任何服务器出现故障,数据库将继续在正常的服务器上运行。Oracle RAC 不仅让客户能够在服务器发生故障时继续处理数据库负载,而且有助于缩短数据库计划内脱机维护时间,进而降低停机成本。

  • 可扩展性

Oracle Real Application Clusters 支持在集群服务器池上透明地部署 Oracle 数据库。这让客户能够轻松地将单个服务器上的 Oracle 数据库重新部署到数据库服务器集群上,从而充分利用集群数据库服务器提供的整合内存容量和处理能力。

  • 数据库即服务

Oracle Real Application Clusters 提供了所有必备的软件组件,让您可以在服务器池上轻松部署 Oracle Database,充分利用集群提供的性能、可扩展性和可用性。Oracle RAC 利用 Oracle Grid Infrastructure 作为 Oracle RAC 数据库系统的基础。Oracle Grid Infrastructure 包括 Oracle Clusterware 和 Oracle 自动存储管理 (ASM),可以在高度可用和可扩展的数据库云环境中高效地共享服务器和存储资源。

架构环境规划

两个节点硬件、系统、网络及存储规划

节点

节点名称

数据库实例名

grid实例名

数据库版本

操作系统

配置

说明

rac01

orcl1

+ASM1

12.2.0.1

CentOS 7.6 - (x86_64)

Mem:4GB Disk:50G

集群节点2

rac02

orcl2

+ASM2

12.2.0.1

CentOS 7.6 - (x86_64)

Mem:4GB Disk:50G

集群节点2

envir01




CentOS 7.6 - (x86_64)

Mem:1GB Disk:80G + 3x8G + 2x20G + 2x20G

存储服务器

envir1




CentOS 7.6 - (x86_64)


DNS服务器

网络配置

节点名称

公共IP地址

专用IP地址

虚拟IP地址VIP

SCAN名称

SCAN IP 地址

说明

rac01

10.10.0.50

192.168.10.50

10.10.0.60

scan

10.10.0.70,10.10.0.71,10.10.0.72

客户端连接地址 

rac02

10.10.0.51

192.168.10.51

10.10.0.61

存储

192.168.10.40






DNS

10.10.0.10






Oracle 软件组件

软件组件

操作系统用户

主组

辅助组

主目录

Oracle 基目录/Oracle 主目录


Grid

grid

oinstall

asmadmin、asmdba、asmoper

/home/grid

/u01/app/grid/u01/app/11.2.0/grid


Oracle RAC

oracle

oinstall

dba、oper、asmdba

/home/oracle

/u01/app/oracle /u01/app/oracle /product/11.2.0.4/dbhome_1/


存储组件

存储组件

文件系统

卷大小

ASM 卷组名

ASM 冗余

iSCSI设备

 说明

OCR/表决磁盘

ASM

8GB

+CRS

Normal

/dev/oracleasm/ocr1,ocr2,ocr3

 3块硬盘

数据库文件

ASM

20GB

+DATA

Normal

/dev/oracleasm/data,data2

 2块硬盘

快速恢复区

ASM

20GB

+FRA

Normal

/dev/oracleasm/fra1,fra2

 2块硬盘

资料档案库

ASM

80GB

+MGMT

External


1块硬盘

说明:

  1. ASM 上存储 Oracle Clusterware 文件,即 Oracle 集群注册表 (OCR) 和表决文件(VF,又称为表决磁盘),大小至少为2G;Oracle 物理数据库文件(数据、联机重做日志、控制文件、存档重做日志)将安装在 ASM 上一个名为+RACDB_DATA 的 ASM 磁盘组中;而快速恢复区将在一个名为 +FRA 的 ASM 磁盘组上创建
  2. 集群的单客户端访问名称 (SCAN),SCAN 为客户端提供了单一的主机名,用于访问集群中运行的 Oracle 数据库。如果您在集群中添加或删除节点,使用 SCAN 的客户端无需更改自己的 TNS 配置。无论集群包含哪些节点,SCAN 资源及其关联的 IP 地址提供了一个稳定的名称供客户端进行连接使用。在 Oracle Grid Infrastructure 安装过程的询问阶段,系统会要求您提供主机名和最多三个 IP 地址以便用于 SCAN 资源。为了获得较高的可用性和可伸缩性,Oracle 建议您对 SCAN 名称进行配置,以便解析为三个 IP 地址。SCAN 必须至少解析为一个地址。,SCAN 虚拟 IP 名称类似于节点的虚拟 IP 地址所使用的名称,如 racnode1-vip。然而,与虚拟 IP 不同的是,SCAN 与整个集群相关联,而不是与一个节点相关联,它可与多个 IP 地址相关联,而不是只与一个地址相关联。注意,SCAN 地址、虚拟 IP 地址和公共 IP 地址必须属于同一子网。应该将 SCAN 配置为可由集群中的网格命名服务 (GNS) 进行解析,或由域名服务 (DNS) 解析进行解析。
  3. 如果创建用来存放OCR和VOTEDISK的ASM磁盘组,那么External、Normal、High三种冗余级别对应的Failgroup个数是1、3、5。也就是说,创建这三种冗余级别的磁盘组至少分别需要1、3、5个ASM磁盘。如果创建用于非OCR和VOTEDISK存储的ASM磁盘组,那么External、Normal、High三种冗余级别对应的Failgroup至少是1、2、3。也就是说,创建这三种冗余级别的磁盘组至少分别需要1、2、3个ASM磁盘。
  4. 每个 Oracle RAC 节点至少必须有两个网络适配器(即网络接口卡 (NIC)):一个用于公共网络接口,另一个用于专用网络接口(互连)。要对公共网络或专用网络使用多个 NIC,Oracle 建议采用 NIC 绑定。
  5. 每个网络适配器IP子网掩码应相同
  6. 安装Oracle Grid Infrastructure,至少需要8GB内存,这里条件限制,所以使用4GB
  7. 如果不单独指定资料档案库ASM存储,则资料档案库存储在OCR和表决磁盘ASM磁盘存储中,所以OCR和表决磁盘ASM存储需要更多的磁盘空间


ASM磁盘要求

根据不同的数据库集群类型,磁盘空间大小要求也不同

Oracle独立集群

集群配置

冗余级别

集群注册表(OCR)和表决磁盘

资料档案库(MGMT)

总需求

2节点, 4 MB AU, 1个ASM磁盘

External

1.4 GB

4节点以下最少37.6 GB,5个节点以上则额外增加4.7 GB

39 GB

2节点, 4 MB AU, 2 ASM磁盘

Normal

2.5 GB

75.5 GB

78 GB

2节点, 4 MB AU, 5个ASM磁盘

High

3.6 GB

113.4 GB

117 GB

2节点, 4 MB AU, 3个ASM磁盘

Flex

2.5 GB

75.5 GB

78 GB

Oracle域服务集群

集群配置

冗余级别

集群注册表(OCR)和表决磁盘

资料档案库(MGMT)

MGMT 附加服务(可选)

总存储

2节点, 4 MB AU, 1个ASM磁盘

External

1.4 GB

188 GB

RHP:100 GB,超过4个节点,每个节点需要PDB:35GB

4个Oracle集群成员189.4 GB

2节点, 4 MB AU, 2个ASM磁盘

Normal

2.5 GB

376 GB

RHP:200 GB,超过4个节点,每个节点需要PDB:70GB

4个Oracle集群成员378.5 GB

2节点, 4 MB AU, 5个ASM磁盘

High

3.6 GB

564 GB

RHP:300 GB,超过4个节点,每个节点需要PDB:105GB

4个Oracle集群成员567.6 GB

2节点, 4 MB AU, 3个ASM磁盘

Flex

2.5 GB

376 GB

RHP:200 GB,超过4个节点,每个节点需要PDB:70GB

4个Oracle集群成员378.5 GB

说明:

  1. 资料档案库(MGMT) 包含GIMR和Oracle Clusterware 备份文件
  2. GIMR:网格基础结构资料档案库
  3. PDB可插拔数据库

参考:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/oracle-clusterware-storage-space-requirements.html#GUID-97FD5D40-A65B-4575-AD12-06C491AF3F41


本教程中所有仅需在一个节点执行的步骤,都在rac01节点执行

1.1 系统环境准备

1.1.1 安装依赖软件

# yum -y install binutils unzip zip smartmontools ksh \openssh-clients compat-libcap1 elfutils-libelf bind-utils \elfutils-libelf-devel compat-libstdc++* gcc gcc-c++ glibc*  \glibc-devel* libgcc* libstdc++* libstdc++-devel* libaio* libaio-devel* \make sysstat libXext unixODBC \unixODBC-devel nfs-utils net-tools chrony libXrender libXtst

启动chrony,并设置开机启动

Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确

# systemctl strt chronyd&&systemctl enable chronyd# chronyc sourcestats210 Number of sources = 4Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev==============================================================================undefined.hostname.local> 2 0 2 +0.000 2000.000 -191ms 4000ms111.230.189.174 2 0 2 +0.000 2000.000 -200ms 4000msntp8.flashdance.cx 2 0 2 +0.000 2000.000 -220ms 4000msstratum2-1.ntp.led01.ru.> 2 0 2 +0.000 2000.000 -166ms 4000ms

1.1.2 内核参数修改

# cat >>/etc/sysctl.conf<<EOFnet.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmmni = 4096kernel.sem = 250 32000 100 128EOF# sysctl -p

1.1.3 禁用selinux和Firewalld

# setenforce 0# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux# systemctl stop firewalld# systemctl disable firewalld如果有ntp服务,记得停止以及禁用

1.1.4 配置网络、修改hosts文件

1.1.4.1 配置IP地址

根据实际情况,修改IP为静态IP地址。

rac1 public网络配置如下

# cat /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="731034a7-3f4c-4e7e-8399-4e3c1fe9c2de"DEVICE="ens33"ONBOOT="yes"IPADDR="10.10.0.50"PREFIX="24"GATEWAY="10.10.0.2"DNS1="10.10.0.10"IPV6_PRIVACY="no"

rac1 私有网络配置如下

# cat /etc/sysconfig/network-scripts/ifcfg-ens34TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens34UUID=c764fa6f-85b9-4cd2-ab6e-324aa64012adDEVICE=ens34ONBOOT=yesIPADDR=192.168.10.50PREFIX=24IPV6_PRIVACY=no

根据实际情况,修改rac2 IP地址

1.1.4.2 配置nozeroconf

echo "NOZEROCONF=yes" >>/etc/sysconfig/network

1.1.4.3 配置host文件

# cat>>/etc/hosts<<'EOF'##Public Network - (eth0)10.10.0.50 rac1 rac1.orac.com10.10.0.51 rac2 rac2.orac.com##Private Interconnect - (eth1)192.168.10.50 rac1-priv rac1-priv.orac.com192.168.10.51 rac2-priv rac2-priv.orac.com##Public Virtual IP (VIP) addresses - (eht0:1)10.10.0.60 rac1-vip rac1-vip.orac.com10.10.0.61 rac2-vip rac2-vip.orac.com##Single Client Access Name (SCAN)10.10.0.70 scan scan.orac.com10.10.0.71 scan scan.orac.com10.10.0.72 scan scan.orac.comEOF

注意:

确保 /etc/hosts 文件的环回地址中不包含节点名(rac01 或 rac02)。如果计算机名出现在环回地址条目中,如下所示:

127.0.0.1  racnode1 localhost.localdomain localhost

如果有则,需要将其删除,如下所示:

127.0.0.1 localhost.localdomain localhost

如果 RAC 节点名出现在环回地址中,您在 RAC 安装期间将收到以下错误消息:

ORA-00603: ORACLE server session terminated by fatal error                         或者ORA-29702: error occurred in Cluster Group Service operation

1.1.5 安装并配置DNS

DNS主要解决SCAN IP问题,有三种实现SCAN IP方式

一、使用/etc/hosts文件

这个是我们目前用的最多的方式,但是缺点只能对应一个SCAN IP,该方法Oracle 不推荐,但是简单,不需要单独的DNS 服务器,使用该方法,客户端还是需要VIP来链接。 Oracle 推荐使用其他的2种方法来 实现SCAN 功能。

二、在DNS中定义域名,只需要在DNS中配置即可实现SCAN 功能。

三、通过Grid Naming Server(GNS),需要配置DNS 和DHCP才能实现SCAN 功能。

SCAN VIP 最多能有三个,它们循环地被客户端所请求到。SCAN VIP 数量和节点数是没有任何关系的,SCAN VIP 会落到哪个节点上都是随机的。

安装DNS工具软件

# yum install -y bind bind-chroot bind-utils

bind-utils和bind-chroot dns的常用工具,不下也可以,不影响服务

cp -R /usr/share/doc/bind-9.11.4/sample/var/named/* /var/named/chroot/var/named/touch /var/named/chroot/var/named/data/cache_dump.dbtouch /var/named/chroot/var/named/data/named_stats.txttouch /var/named/chroot/var/named/data/named_mem_stats.txttouch /var/named/chroot/var/named/data/named.runmkdir /var/named/chroot/var/named/dynamictouch /var/named/chroot/var/named/dynamic/managed-keys.bindchmod -R 777 /var/named/chroot/var/named/datachmod -R 777 /var/named/chroot/var/named/dynamiccp -R /etc/named* /var/named/chroot/etc/chown -R root.named /var/named/chroot/

编辑配置文件

# vim /var/named/chroot/etc/named.confoptions {listen-on port 53 { any; }; 修改为anylisten-on-v6 port 53 { ::1; };directory "/var/named";dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";recursing-file "/var/named/data/named.recursing";secroots-file "/var/named/data/named.secroots";allow-query { any; }; 修改为any/*- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.- If you are building a RECURSIVE (caching) DNS server, you need to enablerecursion.- If your recursive DNS server has a public IP address, you MUST enable accesscontrol to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplificationattacks. Implementing BCP38 within your network would greatlyreduce such attack surface*/recursion yes; 启用递归dnssec-enable yes;dnssec-validation yes; 其他保持默认

修改域空间配置文件

# vim /var/named/chroot/etc/named.rfc1912.zoneszone "orac.com" IN { 设置域名type master; DNS服务类型,这里我们是搭建的第一个DNS服务器,则就定为主服务器,即默认的masterfile "orac.com.zone"; 域名配置文件名 ,这个文件名会在 /var/named/chroot/var/named/ 这个目录下去寻找allow-update { none; };};

创建域配置文件

# cp /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/orac.com.zone# vim /var/named/chroot/var/named/orac.com.zone$TTL 1D@ IN SOA @ rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS @A 127.0.0.1AAAA ::1

添加记录

rac1 A 10.10.0.50rac2 A 10.10.0.51rac1-priv A 192.168.10.50rac2-priv A 192.168.10.51rac1-vip A 10.10.0.60rac2-vip A 10.10.0.61scan A 10.10.0.70scan A 10.10.0.71scan A 10.10.0.72

重启服务

# systemctl restart named-chroot

测试下:

# nslookup scan.orac.comServer: 10.10.0.10Address: 10.10.0.10#53Name: scan.orac.comAddress: 10.10.0.70

注意:配置了DNS解析,hosts文件中SCAN IP记录可以不用写

1.1.6 /dev/shm配置

如果配置/dev/shm,grid安装检查的时候,将会出现下面的错误

PRVE-0421 : No entry exists in /etc/fstab for mounting /dev/shm

/dev/shm默认系统已经挂载,但是并未配置在/etc/fstab中。

查看当前/dev/shm大小

# df -hTFilesystem Type Size Used Avail Use% Mounted on/dev/mapper/centos-root xfs 41G 1.4G 40G 4% /devtmpfs devtmpfs 1.9G 0 1.9G 0% /devtmpfs tmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs tmpfs 1.9G 20M 1.9G 2% /runtmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup/dev/sda1 xfs 1014M 146M 869M 15% /boottmpfs tmpfs 378M 0 378M 0% /run/user/0

在/etc/fstab中设置/dev/shm大小为2G,编辑/etc/fstab,添加下面内容

tmpfs /dev/shm tmpfs defaults,size=2G 0 0

参考:https://access.redhat.com/mt/zh-hans/solutions/1384183

1.2 创建用户组、用户、目录

描述

OS 组名

分配给该组的 OS 用户

Oracle 权限

Oracle 组名

Oracle 清单和软件所有者

oinstall

grid、oracle



Oracle 自动存储管理组

asmadmin

grid

SYSASM

OSASM

ASM 数据库管理员组

asmdba

grid、oracle

ASM 的 SYSDBA

OSDBA for ASM

ASM 操作员组

asmoper

grid

ASM 的 SYSOPER

OSOPER for ASM

数据库管理员

dba

oracle

SYSDBA

OSDBA

数据库操作员

oper

oracle

SYSOPER

OSOPER

1.2.1 创建组及用户

groupadd oinstallgroupadd asmadmingroupadd asmdbagroupadd asmopergroupadd dbagroupadd operuseradd -g oinstall -G asmadmin,asmdba,asmoper,dba gridecho grid|passwd --stdin griduseradd -g oinstall -G dba,oper,asmdba oracleecho oracle|passwd --stdin oracle

1.2.2 配置用户环境变量

配置gird用户环境变量配置

# su - grid# cat>>~/.bash_profile<<'EOF'umask 022export ORACLE_SID=+ASM1export ORACLE_BASE=/u01/app/grid/appexport ORACLE_HOME=/u01/app/grid/12.2.0export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/lib64:/usr/lib64export PATH=$PATH:$HOME/bin:$ORACLE_HOME/binEOF

注:RAC02节点 ORACLE_SID 变量修改为 +ASM2

配置oralce用户环境变量

# su - oracle# cat>>~/.bash_profile<<'EOF'umask 022export ORACLE_SID=orcl1export ORACLE_UNQNAME=orclexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/dbhome_1/export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/lib64:/usr/lib64export PATH=$PATH:$HOME/bin:$ORACLE_HOME/binEOF

注:RAC02节点 ORACLE_SID 变量修改为 orcl2

1.2.3 为gird、oracle用户设置资源限制

# cat >> /etc/security/limits.conf <<'EOF'##for oracle user##oracle           soft    nofile          1024oracle           hard    nofile          65536oracle           soft    nproc           2047oracle           hard    nproc           16384oracle           soft    stack           10240oracle soft memlock 3145728oracle hard memlock 3145728##for grid user##grid             soft    nproc           2047grid             hard    nproc           16384grid             soft    nofile          1024grid             hard    nofile          65536grid             soft    stack           10240grid             hard    stack           32768EOF
# cat >> /etc/pam.d/login <<'EOF'session required /lib64/security/pam_limits.sosession required pam_limits.soEOF
# cat >> /etc/profile<<'EOF'if [ $USER = "oracle" ] || [ $USER = "grid" ];then    if [ $SHELL = "/bin/ksh" ];then       ulimit -p 16384       ulimit -n 65536    else       ulimit -u 16384 -n 65536    fi    umask 022fiEOF

1.2.4 创建Oracle基目录

创建目录并修改权限

mkdir -p /u01/app/grid/{app,12.2.0}mkdir -p /u01/app/oraclechown -R grid:oinstall /u01chown -R grid:oinstall /u01/app/gridchown -R oracle:oinstall /u01/app/oraclechmod -R 755 /u01

1.2.5 为oracle、grid用户配置用户等效性

Oracle Universal Installer (OUI) 在软件安装过程中会使用安全 shell 工具 ssh 和 scp 命令对集群的其他节点运行远程命令并将文件复制到集群的其他节点上以及安装 Oracle 软件时使用 SSH 外,在软件安装之后,配置助手、Oracle Enterprise Manager、OPatch 以及其他执行从本地节点到远程节点的配置操作的特性也会使用 SSH。

Oracle 软件安装过程中必须对 SSH 进行配置,这些命令才不会要求输入口令。运行 SSH 命令而不要求输入口令,这种能力有时称作用户等效性。

# su - grid# ssh-keygen -t rsa# ssh-copy-id rac1# ssh-copy-id rac2# su - oracle# ssh-keygen -t rsa# ssh-copy-id rac01# ssh-copy-id rac02

注:在rac01,rac02上分别执行1.1—1.2所有步骤,注意步骤1.2.2中ORACLE_SID变量修改,ssh-copy-id也需要拷贝本机

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/71296.html