标签:组件 sys 提前 follow path int qfile 0.12 发布
有印象的用户可能发现,阿里云早在2016年深圳云栖大会就官方发布了对Oracle RAC的支持,但是相关产品却一直没能同步推出,相信大家都翘首以盼了许久许久。一个好消息是,近期阿里云将紧密推出两款新产品:共享块存储和ECS多网卡。这两款产品将打通众多关键云下应用上云的最后一公里,为用户提供更多的便利。在我们能正式体验到新产品之前,阿里云技术服务团队也将云上的Oracle RAC安装配置手册放出,希望能给大家提供更多不同的体验和选择。
阿里云上Oracle RAC的安装部署,重点需要解决两大基础环境需求:一是共享存储,二是多IP配置。我们目前有两大思路来提供这两个需求的解决方案:
方案一、阿里云产品。共享存储产品2015年年底完成内测,且成功实现RAC部署,该产品即将上线。HaVIP虽然可以提供多ECS共享多IP,但却无法提供多网卡。多网卡产品也将紧随共享存储之后发布。大家可以共同期待一下;
方案二、开源产品。经过测试,iSCSI可以完美解决ECS间存储共享问题,而n2n VPN则可以在多个能同时访问某一个公共服务器的ECS之间轻松建立一个自主的多IP网络环境。
本手册以VPC环境中如何使用开源产品搭建Oracle RAC为例进行编写,事实上,在经典网络环境或者专有云里,该手册一样适用。
以下各安装步骤,若无特殊说明,RAC的每个节点均需执行。
ECS:2个,CentOS 6.5
磁盘:共享云盘,至少申请2个,1个大小为10G左右,存储CRS数据。1个存放Oracle数据,大小根据业务而定。两个云盘都先不挂载。
IP规划:
|
Private IP |
Public IP |
Virtual IP |
SCAN IP |
节点1 |
1个,ECS创建时已具备。 本例中,采用172.18.0.6 |
1个,与Private IP不同网段,需要用n2n VPN手工添加。 本例中采用192.168.0.11 |
1个,与Public IP同网段,在配置文件中配置即可。 本例中采用192.168.0.21 |
1-3个,与Public IP同网段,在配置文件中配置即可。 本例中采用192.168.0.31 |
节点2 |
1个,ECS创建时已具备。 本例中,采用 172.18.0.7 |
1个,与Private IP不同网段,需要用n2n VPN手工添加。 本例中采用192.168.0.12 |
1个,与Public IP同网段,在配置文件中配置即可。 本例中采用192.168.0.22 |
OSS:1个bucket,配置好ossfs,挂载给ECS。
1)选定target和initiator
iSCSI架构包含1个target(服务端)和多个initiator(客户端),最好申请单独的ECS做iSCSI的target,而RAC的节点则自然成为initiator。
target地址:172.18.0.5
initiator地址:172.18.0.6和172.18.0.7
2)挂载云盘
在选定的target使用fdisk格式化成ext4格式,挂载给target ECS使用,文件系统名自定义。
3)获取安装包
在开源网站上可以下载到iscsitarget源码包
wget http://sourceforge.net/projects/iscsitarget/files/latest/download?source=directory
4)安装target
tar zxvf iscsitarget-1.4.20.1.tar.gz
cd iscsitarget-1.4.20.1
make
make install
安装后在/etc下会生成iet目录,iscsitarget的主要配置文件就在该目录下。
5)配置
修改/etc/iet/ietd.conf,涉及到改动的内容有:
Target iqn.2001-04.com.sharestorage:racdb.crs1 |
这里斜体部分请自定义,而粗体部分必须严格匹配系统中云盘的实际地址。
修改/etc/iet/targets.allow,定义允许访问target的地址范围。
ALL 172.18.0.0/20 |
6)启动iscsi-target
/etc/init.d/iscsi-target start
7)安装iscsi-initiator
两个RAC节点都需要安装iscsi-initiator。iscsi-initiator在centOS自带光盘iso镜像中,挂载好iso,配置好yum源,直接安装:
yum -y install iscsi-initiator-utils-*
8)启动iscsid服务,并配置开机自动重启
service iscsid start
chkconfig iscsid on
chkconfig iscsi on
9)发现target
在两个initiator节点执行:iscsiadm -m discovery -t sendtargets -p 172.18.0.5
10)登录到iscsi-target
在两个initiator节点执行:
iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.data1 -p 172.18.0.5 -l
iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.crs1 -p 172.18.0.5 -l
11)配置initiator节点重启后自动登录target
在两个initiator节点执行:
iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.crs1 -p 172.18.0.5 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.data1 -p 172.18.0.5 --op update -n node.startup -v automatic
12)检查云盘
在initiator节点执行fdisk -l,此时能看到新增了2个磁盘,这是由target共享过来的。
1)所有节点都安装倚赖包
yum install subversion gcc-c++ openssl-devel
2)所有节点都需要安装n2n
在线安装可以使用如下命令,也可以离线将二进制文件下载上传到本地进行安装。svn co https://svn.ntop.org/svn/ntop/trunk/n2n
cd n2n/n2n_v2
make
make install
3)超级节点启动服务
supernode -l 5000
4)边缘节点配置IP
节点1:edge -d edge0 -a 192.168.0.11 -c mynetwork -k password -l 172.18.0.5:5000 -m AA:54:64:FC:46:25 -E -r
节点2:edge -d edge0 -a 192.168.0.12 -c mynetwork -k password -l 172.18.0.5:5000 -m 96:95:2C:96:48:01 -E -r
这样,节点1和节点2在192.168.0.0网段的public IP就创建成功了,使用ifconfig能看到一个名为edge0的新端口以及对应的IP。
Oracle RAC安装时会进行必要系统检查, 其中包括了对一系列必需的RPM的检查,为了防止安装报错,这些RPM包必须要提前装好,而安装RPM最方便的方法是通过yum工具。
以下是配置yum工具的步骤:
1)默认专有云/公有云环境下都会预先配置好yum,如果没有配置好,请自行配置好;
2)install package
yum install -y binutils-2.*
yum install -y compat-libstdc++-33*
yum install -y sysstat-9.*
yum install -y glibc-2.*
yum install -y libgcc-4.*
yum install -y libstdc++-4.*
yum install -y elfutils-libelf-0* elfutils-libelf-devel-0*
yum install -y libtool-ltdl*
yum install -y ncurses*
yum install -y readline*
yum install -y unixODBC*
yum install -y compat-libcap1*
yum install -y compat-libstdc++*
注:一些包可能会因为系统已经有了更高的版本而无法安装,忽略即可,一些包在阿里云提供的yum源中不存在,也可先忽略。
1)将如下内容加入到"/etc/sysctl.conf" 文件中。
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
运行如下命令使修改即刻生效
#/sbin/sysctl -p
2)修改"/etc/security/limits.d/90-nproc.conf"
将如下行:
* soft nproc 1024
改为:
* - nproc 16384
1)运行如下命令创建用户和组:
创建oinstall组
#groupadd oinstall
创建dba组
#groupadd dba
创建grid用户
#groupadd asmdba
#groupadd asmadmin
#groupadd asmoper
#useradd -g oinstall -G dba grid
设置grid用户密码
创建oracle用户
#useradd -g oinstall -G dba oracle
设置grid和oracle用户密码
#passwd grid
#passwd oracle
#usermod -G dba,asmdba,asmadmin,asmoper grid
#usermod -G dba,asmdba oracle
2) 调整oracle用户的shell限制
--Add the following lines to the "/etc/security/limits.conf" file.
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 4096
grid hard nofile 65536
--Add the following lines to the "/etc/pam.d/login" file, if it does not already exist.
session required pam_limits.so
将Oracle grid的安装介质上传至服务器上,并解压缩, 安装其中的cvuqdisk包。
--Install the following package from the Oracle grid media after you‘ve defined groups.
#cd $your_path_to_grid/rpm
#rpm -Uvh cvuqdisk*
1)编辑/etc/hosts文件, 将各节点的public IP, Private IP, Virtual IP, Scan IP填入其中:
#Public
140.205.148.102 testOracle1Z.com testOracle1Z
140.205.148.103 testOracle3Z.com testOracle3Z
#Private
10.218.1.78 testOracle1Z-PRI.com testOracle1Z-PRI
10.218.1.108 testOracle3Z-PRI.com testOracle3Z-PRI
#Virtual
140.205.148.104 testOracle1Z-VIP.com testOracle1Z-VIP
140.205.148.105 testOracle3Z-VIP.com testOracle3Z-VIP
#SCAN
140.205.148.111 ORASCAN.com ORASCAN
2)修改 /etc/resolv.conf,使nameserver指向本机
nameserver localhost
3)重启dnsmasq服务,并使其随系统启动
可能要安装一下dnsmasq服务先
#/etc/init.d/dnsmasq restart
#chkconfig dnsmasq on
编辑 "/etc/selinux/config", 将其改为:
SELINUX=disabled
关闭iptables
# service iptables stop
# service ip6tables stop
# chkconfig iptables off
# chkconfig ip6tables off
Oracle官方是推荐关闭NTP服务,阿里云ECS有统一的可信赖NTP服务,也可以不关闭。
Either configure NTP, or make sure it is not configured so the Oracle Cluster Time Synchronization Service (ctssd) can synchronize the times of the RAC nodes. If you want to deconfigure NTP do the following.
# service ntpd stop
Shutting down ntpd: [ OK ]
# chkconfig ntpd off
# mv /etc/ntp.conf /etc/ntp.conf.orig
# rm /var/run/ntpd.pid
Create the directories in which the Oracle software will be installed.
#mkdir -p /u01/grid
#mkdir -p /u01/oracle/11.2.0
#chown -R grid:oinstall /u01/grid
#chmod -R 775 /u01/grid
#chown -R oracle:oinstall /u01/oracle
#chmod -R 775 /u01/oracle
#mkdir -p /u01/crs/11.2.0
#chown -R grid:oinstall /u01/crs
#chmod -R 775 /u01/crs
修改grid的配置文件:/home/grid/.bash_profile
ORACLE_HOSTNAME=testOracle1Z.com; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/grid; export ORACLE_BASE
ORACLE_HOME=/u01/crs/11.2.0; export ORACLE_HOME
ORACLE_SID=+ASM1; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH
修改oracle的配置文件:/home/oracle/.bash_profile
ORACLE_HOSTNAME=testOracle1Z.com; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/oracle/11.2.0; export ORACLE_HOME
ORACLE_SID=orarac1; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
export CLASSPATH
以上是节点1的配置, 若在节点2上面配置, 请将对应的ORACLE_SID和HOSTNAME改为对应的值。
eth0网卡作为RAC内部通讯的网卡, 其ARP协议必须开通, 以下是网卡配置文件示例,注意其中的“ARP=yes”和OPTIONS="layer2=1"两项设置。
# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.218.1.78
NETMASK=255.255.255.0
ARP=yes
OPTIONS="layer2=1"
所有共享磁盘都在此配置别名、属主、属组以及权限。
vi /etc/udev/rules.d/12-asm-permissions.rules文件, 加入如下内容:
KERNEL=="vdc", NAME="crs01",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vdd", NAME="crs02",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vde", NAME="crs03",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vdf", NAME="crsdata01",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vdg", NAME="crsdata02",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vdh", NAME="crsdata03",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vdi", NAME="crsdata04",OWNER:="grid",GROUP:="oinstall",MODE:="660"
KERNEL=="vdj", NAME="crsdata05",OWNER:="grid",GROUP:="oinstall",MODE:="660"
两个节点都改完之后重启系统
#shutdown –r now
1)两节点分别执行(直接回车确认)
su - grid
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
su - oracle
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
2)主节点执行
su - grid
cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys --公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh testOracle3Z-PRI cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二个节点的公钥写到本机
ssh testOracle3Z-PRI cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testOracle3Z-PRI:~/.ssh/authorized_keys
su - oracle
cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys --公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh testOracle3Z-PRI cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二个节点的公钥写到本机
ssh testOracle3Z-PRI cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testOracle3Z-PRI:~/.ssh/authorized_keys
3)两个节点分别验证
ssh testOracle1Z date (public网卡)
ssh testOracle3Z date
ssh testOracle1Z-PRI date (private网卡)
ssh testOracle3Z-PRI date
在节点1上执行如下命令检查系统是否符合grid的安装先决条件,检查结果应该都是pass。
#su - grid
$cd grid的软件目录
$./runcluvfy.sh stage -pre crsinst -n testOracle1Z,testOracle3Z -verbose
报这个错:
/bin/rm: cannot remove `/tmp/bootstrap‘: Operation not permitted
./runcluvfy.sh: line 99: /tmp/bootstrap/ouibootstrap.log: Permission denied
将/tmp/bootstrap的权限改成777,属主属组改成grid:oinstall
会报NTP的错误,可以忽略,其他的报错,请按照提示进行修复。
编辑crs_install_test.rsp,文件目录:/u01/soft/oracle/grid/response/。两边同时编辑,以下只收录要修改或重视的内容,以节点1为例:
ORACLE_HOSTNAME=testOracle1Z.com INVENTORY_LOCATION=/u01/grid/oraInventory oracle.install.option=CRS_CONFIG ORACLE_BASE=/u01/grid ORACLE_HOME=/u01/crs/11.2.0 oracle.install.asm.OSDBA=asmdba oracle.install.asm.OSOPER=asmoper oracle.install.asm.OSASM=asmadmin oracle.install.crs.config.gpnp.scanPort=1521 oracle.install.crs.config.clusterName=rac-test oracle.install.crs.config.clusterNodes=testOracle1Z:testOracle1Z-VIP,testOracle3Z:testOracle3Z-VIP oracle.install.crs.config.privateInterconnects=eth0:10.218.1.0:2,eth1:140.205.148.0:1 //1代表public,2代表private,3代表在群集中不使用该网卡 oracle.install.crs.config.storageOption=ASM_STORAGE oracle.install.asm.SYSASMPassword=system oracle.install.asm.diskGroup.name=OCR oracle.install.asm.diskGroup.redundancy=EXTERNAL oracle.install.asm.diskGroup.disks=/dev/crs01,/dev/crs02,/dev/crs03 oracle.install.asm.diskGroup.name=OCR oracle.install.asm.diskGroup.redundancy=EXTERNAL oracle.install.asm.diskGroup.disks=/dev/crs01,/dev/crs02,/dev/crs03 oracle.install.asm.diskGroup.diskDiscoveryString=/dev/crs* oracle.install.asm.monitorPassword=system |
在节点1的CRS软件目录执行:
$./runcluvfy.sh stage -pre crsinst -n testOracle1Z,testOracle3Z -verbos ./runInstaller -silent -responseFile /u01/soft/oracle/grid/response/crs_install_test.rsp -ignoreSysPrereqs -ignorePrereq |
等待一段时间后,会提示在两个节点分别用root用户执行:
/u01/grid/oraInventory/orainstRoot.sh
/u01/crs/11.2.0/root.sh
请注意以下内容,这是Oracle的安装bug导致需要进行的特殊workaroud:
在执行root.sh脚本时出现Adding daemon to inittab的时候,使用root立即执行命令:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1
vi /etc/init/oracle-ohasd.conf
# Oracle OHASD startup start on runlevel [35] stop on runlevel [!35] respawn exec /etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null |
asmca -silent -createDiskGroup -sysAsmPassword system -diskString ‘/dev/crs*‘ -diskGroupName DATA -diskList ‘/dev/crsdata01‘ -redundancy EXTERNAL -compatible.asm 11.2 -compatible.rdbms 11.2
asmca -silent -addDisk -sysAsmPassword system -diskGroupName DATA -diskList ‘/dev/crsdata02,/dev/crsdata03,/dev/crsdata04,/dev/crsdata05‘
vi cfgrsp.properties
chmod 660 cfgrsp.properties
./configToolAllCommands RESPONSE_FILE=./cfgrsp.properties
在节点1执行:
vi /u01/grid/oraInventory/ContentsXML/inventory.xml
加入
准备好responsefile,位置:/u01/soft/oracle/database/response/db_install_test.rsp。以节点1为例,该文件需要修改和注意的内容有:
oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=testOracle1Z.com UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/oracle/oraInventory SELECTED_LANGUAGES=en ORACLE_HOME=/u01/oracle/11.2.0 ORACLE_BASE=/u01/oracle oracle.install.db.InstallEdition=EE oracle.install.db.isCustomInstall=false oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0 oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oinstall oracle.install.db.CLUSTER_NODES=testoracle1z,testoracle3z DECLINE_SECURITY_UPDATES=true |
依次执行:
/u01/crs/11.2.0/bin/cluvfy stage -pre dbinst -n testOracle1Z,testOracle3Z -verbose
./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /u01/soft/oracle/database/response/db_install_test.rsp
/u01/grid/oraInventory/orainstRoot.sh
/u01/oracle/11.2.0/root.sh
准备好response文件,文件位置:/u01/soft/oracle/database/response/dbca_test.rsp。
以节点1为例,该文件需要修改和注意的内容有:
GDBNAME = "orarac" SID = "orarac" NODELIST=testoracle1z,testoracle3z SYSPASSWORD = "system" SYSTEMPASSWORD = "system" STORAGETYPE=ASM DISKGROUPNAME=DATA RECOVERYGROUPNAME=DATA CHARACTERSET = "ZHS16GBK" |
在节点1执行:
dbca -silent -responseFile /u01/soft/oracle/database/response/dbca_test.rsp
以下三个截图是三次IO校准测试的结果,IOPS(随机IO,每次1024KB)最大值大约在3390,吞吐量大约在900MBps。
标签:组件 sys 提前 follow path int qfile 0.12 发布
原文地址:http://www.cnblogs.com/wz901881/p/6763406.html