閱讀70 返回首頁    go 阿裏雲 go 技術社區[雲棲]


阿裏雲上Oracle 11gR2 RAC安裝配置手冊

有印象的用戶可能發現,阿裏雲早在2016年深圳雲棲大會就官方發布了對Oracle RAC的支持,但是相關產品卻一直沒能同步推出,相信大家都翹首以盼了許久許久。一個好消息是,近期阿裏雲將緊密推出兩款新產品:共享塊存儲和ECS多網卡。這兩款產品將打通眾多關鍵雲下應用上雲的最後一公裏,為用戶提供更多的便利。在我們能正式體驗到新產品之前,阿裏雲技術服務團隊也將雲上的Oracle RAC安裝配置手冊放出,希望能給大家提供更多不同的體驗和選擇。

一、安裝說明

         阿裏雲上Oracle RAC的安裝部署,重點需要解決兩大基礎環境需求:一是共享存儲,二是多IP配置。我們目前有兩大思路來提供這兩個需求的解決方案:

         方案一、阿裏雲產品。共享存儲產品2015年年底完成內測,且成功實現RAC部署,該產品即將上線。HaVIP雖然可以提供多ECS共享多IP,但卻無法提供多網卡。多網卡產品也將緊隨共享存儲之後發布。大家可以共同期待一下;

         方案二、開源產品。經過測試,iSCSI可以完美解決ECS間存儲共享問題,而n2n VPN則可以在多個能同時訪問某一個公共服務器的ECS之間輕鬆建立一個自主的多IP網絡環境。

         本手冊以VPC環境中如何使用開源產品搭建Oracle RAC為例進行編寫,事實上,在經典網絡環境或者專有雲裏,該手冊一樣適用。

二、GRID安裝前的係統配置工作

 

以下各安裝步驟,若無特殊說明,RAC的每個節點均需執行。

1.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。

2.安裝配置iSCSI

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 https://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
Lun 0 Path=/dev/vdb,Type=blockio

Target iqn.2001-04.com.sharestorage:racdb.data1
Lun 0 Path=/dev/vdc,Type=blockio

這裏斜體部分請自定義,而粗體部分必須嚴格匹配係統中雲盤的實際地址。

修改/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共享過來的。

3. 安裝配置n2n VPN

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。

4.安裝缺失的RPM包

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源中不存在,也可先忽略。

5. 修改係統核心參數

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

 

6. 創建用戶和組

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*

7. 網絡設置

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

 

8. 關閉SELINUX以及iptables

編輯 "/etc/selinux/config", 將其改為:

SELINUX=disabled

關閉iptables

# service iptables stop

# service ip6tables stop

 

# chkconfig iptables off

# chkconfig ip6tables off

 

9. 關閉NTP服務

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

10. 創建Oracle軟件的安裝目錄

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

9. 配置用戶的環境變量

修改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改為對應的值。

 

11. 啟用心跳網卡eth0的ARP協議

  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"

12. 配置共享磁盤

所有共享磁盤都在此配置別名、屬主、屬組以及權限。

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

13. 建立節點間的信任關係

     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

     

三、安裝Oracle GRID軟件

1 檢查grid CRS組件的安裝先決條件是否滿足。

在節點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的錯誤,可以忽略,其他的報錯,請按照提示進行修複。

2 配置

         編輯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

 

3 運行runInstaller

在節點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

4 增加磁盤組

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

67389c47558be53eedcf96f32f1eb71ce4f1875e

chmod 660 cfgrsp.properties

./configToolAllCommands RESPONSE_FILE=./cfgrsp.properties

三、安裝Oracle DB軟件

在節點1執行:

vi /u01/grid/oraInventory/ContentsXML/inventory.xml

加入

90f9c9846a38a9691ab6bab1e97efe64595e9636

準備好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

97cc14d0b83d134b8cdc2deca417f3d0290f8c67

 

五、IO校準測試

         以下三個截圖是三次IO校準測試的結果,IOPS(隨機IO,每次1024KB)最大值大約在3390,吞吐量大約在900MBps。

16ae5ccadb36d3a999aada823803a5a51578625f

 

f0ba25a537e61957b1d382934650239beb5e6529

 

0226eade6a4ea36e170011b204e9332b976c99de


相關參考:

1. SSD雲盤性能測試,請查閱這篇博客

2. 雲上Oracle RAC搭建部署起來了,運維監控管理怎麼做?阿裏雲生態合作夥伴可以為您排憂解難,請在雲市場搜索“袋鼠雲”的相關服務。

最後更新:2017-04-24 11:00:43

  上一篇:go GitLab的安裝及使用教程
  下一篇:go 厲害了主播