阿裏雲上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 |
這裏斜體部分請自定義,而粗體部分必須嚴格匹配係統中雲盤的實際地址。
修改/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
chmod 660 cfgrsp.properties
./configToolAllCommands RESPONSE_FILE=./cfgrsp.properties
三、安裝Oracle DB軟件
在節點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校準測試
以下三個截圖是三次IO校準測試的結果,IOPS(隨機IO,每次1024KB)最大值大約在3390,吞吐量大約在900MBps。
相關參考:
1. SSD雲盤性能測試,請查閱這篇博客;
2. 雲上Oracle RAC搭建部署起來了,運維監控管理怎麼做?阿裏雲生態合作夥伴可以為您排憂解難,請在雲市場搜索“袋鼠雲”的相關服務。
最後更新:2017-04-24 11:00:43