|
최근에 resource가 넉넉한 test용 server가 도입이 되었고,
현재 10gR2환경에서 운용중인 RAC을 내년에 11gR2로 migration한다는 계획이 발표된 관계로,
이 server를 이용해서 11gR2 RAC환경을 구성해 보기로 마음먹게 되었습니다.
10gR2환경에서는 여러 차례 구성해 본 경험이 있던 관계로 쉽게 할 수 있으리라 생각했는데,
11gR2부터는 Grid Infrastructure라는 Oracle Clusterware와 Oracle ASM을
포괄하는 개념이 등장하면서,
예전의 지식과 경험만으로는 RAC환경을 구축할 수가 없는 상황이었습니다.
※ 위에서 언급한 Oracle ASM은 Oracle 10g에서 처음 동장한 ASM과는 조금 다릅니다.
저의 경우, cnbeiovsd1이라는 Oracle VM Server가 있고,
여기에 cnbeiracvm01, cnbeiracvm02라는 2개의 virtual machines를 생성했고
O/S로 Oracle Enterprise Linux 5.5 x86 64bit를 install했고,
"Oracle® Grid Infrastructure Installation Guide 11g Release 2 (11.2) for Linux"라는
standard Oracle문서를 참조하면서 다음과 같은 순서로 RAC구축작업을 수행했습니다.
1. system요건을 충족시켜야 합니다.
(1) RAC에 속하는 모든 node의 CPU는 chip architecture가 동일해야 합니다.
즉, 64bit, 32bit가 혼재되어서는 안됩니다.
(2) run-level이 3 혹은 5 여야 합니다.
(3) 우선 memory 및 swap의 크기를 확인합니다.
요구되는 memory(RAM)의 최소크기는 Grid Infrastructure for a cluster만 install하는 경우 1.5GB,
Oracle RAC(database)도 install하는 경우에는 2.5GB 입니다.
요구되는 swap의 크기는 memory크기가 2GB이하인 경우에는 (memory크기)*1.5로,
memory크기가 2GB~16GB의 경우에는 memory와 동일한 크기로,
memory크기가 16GB를 넘는 경우에는, 16GB로 설정합니다.
(4) disk의 크기를 확인합니다.
● Clusterware files(OCR + voting disk)가 위치하는 disk에는 적어도 1GB 이상의
free space가 필요합니다.
● Grid Infrastructure(Grid home)를 install하는 disk에는 최소 4.5GB 의 free space가 필요하며,
여기서 말하는 grid infrastructure에는 Oracle Clusterware와 Oracle ASM files과
각종 log files가 포함됩니다.
● Oracle database software가 install될 directory에는 최소 4.5GB이상의 free space가 필요합니다.
● "/tmp" partition에 최소 1GB 의 free space가 필요합니다.
2. network 요건을 충족시켜야 합니다.
(1) SCAN(Single Client Access Name)
Grid infrastructure를 install하다보면 SCAN을 입력하는 화면이 나오는데,
SCAN이란 cluster의 이름으로 사용되는 놈으로, Oracle11gR2에서 새롭게 등장한 개념입니다.
SCAN는 실체를 가지지 않는 가상의 host에 대한 hostname이라고 생각하면 이해하기 편한데,
SCAN이라는 개념이 없던 Oracle11gR1 이전의 version에서는
RAC에 connect하기 위해서는 TNS설정시에 RAC에 속한 모든 node정보를 명시해야 했지만,
SCAN이라는 RAC을 대표하는 하나의 이름을 사용하게 됨으로서,
TNS설정시에 하나의 host정보, 즉 SCAN만 입력하면 되도록 변하게 됩니다.
이렇게 됨으로서, RAC에 node가 추가되거나 제거되거나 한다고 해도
client의 tnsnames.ora를 수정할 필요가 없어지게 되었습니다.
(물론 예전과 같이 RAC에 속한 모든 nodes를 명시하는 방식으로 TNS를 설정해도
상관없습니다만, Oracle에서 권장하는 방식은 아닙니다)
참고로 SCAN의 최대길이는 20자이며, network상의 다른 host의 hostname과
동일해서는 안됩니다.
그리고 SCAN에 할당할 IP address를 미리 준비해 두어야 하는데,
반드시 각 node의 VIP와 동일한 subnet에 존재하는 IP address여야 하며,
해당 SCAN과 IP address의 mapping entry를 domain에 등록해 놓아야 합니다.
(2) Network H/W Requirement
1) 각 host(RAC의 각 node)에 대해 2개의 public IP address가 필요한데,
RAC에서는 virtual IP address라는 것이 설정되기 때문입니다.
이것을 위해서는 최소 2개이상의 NIC(Network Interface Card)이 필요합니다.
※ 저의 경우와 같이, virtual machine을 이용해서 RAC를 구축하는 경우에는
VM server상에 NIC이 한 개여도 얼마든지 virtual NIC을 추가할 수 있습니다.
RAC의 각 node는 다음과 같이 3개의 IP address를 가져야 합니다.
● Public IP address (public IP address가 사용됨)
● Virtual IP address (public IP address가 사용됨)
● Private IP address (private IP address가 사용되므로 192.168.x.x range에서 원하는 값을 설정)
2) RAC에 속하는 각 node에 대해, network interface끼리 동일한 interface명을 가져야 합니다.
즉, node-1의 public IP address가 eth0 이고, private IP address가 eth1 이라면,
다른 node들에 대해서도 반드시 public IP address가 eth0,
private IP address는 eth1 이어야 합니다.
3) Private network을 이용해서 node상의 data전송을 담당하는 interconnect는
high-speed network adapters를 사용한 UDP 및 TCP/IP를 지원하는 switch를 support해야 하며,
interconnect의 speed는 최소 1 Gigabit이상이 되어야 합니다.
Public network는 TCP/IP를 이용합니다.
참고로, RAC의 Oracle databases간의 interconnect에는 UDP가 사용되며,
Clusterware간의 interconnect에는 TCP가 사용됩니다.
※ 저의 경우, 예전에 IEEE1394(firewire)를 이용해서 개인적으로 RAC을 구축한 적이 있는데,
그 당시에는 자금사정상 interconnect전용 switch를 이용하지 않고
두 node를 cross cable로 연결하는 형태로 interconnect를 구축한 적이 있습니다.
4) 당연한 이야기지만, NIC가 3개이상 존재한다면 bonding하도록 합니다.
(3) GNS (Grid Naming Service)의 설정
Oracle11gR2부터는 GNS라는 기능을 제공하여,
VIP로 static IP가 아닌 DHCP를 통해 얻은 dynamic IP address를 설정하는 것이 가능합니다.
Oracle에서는 GNS를 사용하기 보다는 static IP address를 설정할 것을 권장하므로
GNS에 대해서는 생략하도록 하겠습니다.
(4) NTP(Network Time Protocol)의 설정
당연한 이야기지만, RAC에 소속된 모든 node의 system time은 동일하도록 synchronize되어야 합니다.
일반적으로 Linux의 경우, external time server를 참조하여 system time을 설정하는
NTP를 많이 사용하는데, (여기서는 NTP에 대한 자세한 설명 및 설정방법은 생략하겠습니다)
Oracle에서는 external time server없이도 node간의 system time을 일치시킬 수 있는
Oracle Cluster Time Synchronization Service(CTSS)라는 것을 제공합니다.
즉, NTP를 이용해서 각 node의 system time이 일치한 상태라면,
CTSS를 이용해서 system time을 synchronize할 필요가 전혀 없습니다.
그래서 clusterware가 install될 때 Oracle 스스로 이 NTP의 status를 체크하여,
NTP를 이용해서 system time이 동기화된 상태라면, CTSS를 observer mode로 기동하고,
그렇지 않은 경우에는 CTSS를 active mode로 기동하여
Oracle 스스로 system time을 일치키시도록 합니다.
저와 같이, 각 node가 virtual machine 인 경우에는 VM server의 system time이 바로 반영됩니다.
즉, 각 node의 system time은 NTP daemon을 기동하지 않아도, CTSS를 기동하지 않아도,
항상 일치하게 됩니다.
하지만 VM server의 system time이 정확한 실제 시각을 가르키지 않는 경우에는,
virtual machines도 정확한 실제 시각을 가르키지 않게 되므로,
VM server상에서 NTP daemon을 기동하여 시간을 정확하게 맞추어 주도록 합니다.
(5) /etc/hosts의 설정
저의 경우 모든 node에 대해 다음과 같이 설정했는데,
SCAN이 domain에 등록되어 있다면 아래와 같이 specify하지 않아도 상관없습니다.
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 # public IP address 3.30.100.35 cnbeiracvm01.ap.health.ge.com cnbeiracvm01 3.30.100.36 cnbeiracvm02.ap.health.ge.com cnbeiracvm02 # public virtual IP address 3.30.100.37 cnbeiracvm01-vip.ap.health.ge.com cnbeiracvm01-vip 3.30.100.38 cnbeiracvm02-vip.ap.health.ge.com cnbeiracvm02-vip # IP address for SCAN 3.30.100.39 cnbeira-cluster-scan.ap.health.ge.com cnbeira-cluster-scan # private IP address 192.168.10.1 cnbeiracvm01-priv.ap.health.ge.com cnbeiracvm01-priv 192.168.10.2 cnbeiracvm02-priv.ap.health.ge.com cnbeiracvm02-priv 192.168.10.3 cnbeiovsd1-priv.ap.health.ge.com cnbeiovsd1-priv |
3. O/S requirement를 충족할 필요가 있습니다.
(1) Kernel requirement
Oracle11gR2의 RDBMS software 및 clusterware를 install하기 위해서 충족해야 하는 요건이 있는데,
저와 같이 64bit방식의 Oracle Enterprise Linux의 경우에는 다음과 같습니다.
● Enterprise Linux 4 Update 7, kernel 2.6.9 이상
● Enterprise Linux 5 Update 2, kernel 2.6.18 이상
저의 경우 Linux 5 Update 5, kernel 2.6.18 인 관계로 문제 없습니다.
(2) O/S package requirement
저의 경우(Oracle Enterprise Linux 5.5 x86 64 bit),
다음과 같은 O/S packages가 install될 필요가 있습니다.
binutils-2.17.50.0.6 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 (32 bit) elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.2 gcc-c++-4.1.2 glibc-2.5-24 glibc-2.5-24 (32 bit) glibc-common-2.5 glibc-devel-2.5 glibc-devel-2.5 (32 bit) glibc-headers-2.5 ksh-20060214 libaio-0.3.106 libaio-0.3.106 (32 bit) libaio-devel-0.3.106 libaio-devel-0.3.106 (32 bit) libgcc-4.1.2 libgcc-4.1.2 (32 bit) libstdc++-4.1.2 libstdc++-4.1.2 (32 bit) libstdc++-devel 4.1.2 make-3.81 sysstat-7.0.2 unixODBC-2.2.11 unixODBC-2.2.11 (32 bit) unixODBC-devel-2.2.11 unixODBC-devel-2.2.11 (32 bit) |
다른 linux 혹은 다른 release의 경우에는 아래의 URL을 참조하시기 바랍니다.
http://download.oracle.com/docs/cd/E11882_01/install.112/e10812/prelinux.htm#BABDGCEH
위의 package와는 별도로 cluster file system을 사용하고자 한다면,
OCFS2와 관련된 packages를 install해야 합니다.
아래의 site를 통해 자신의 kernel에 맞는 OCFS2관련 packages를 download할 수 있습니다.
http://oss.oracle.com/projects/ocfs2/files/
저의 경우에는 다음과 같은 packages를 install했습니다.
# /sbin/modinfo ocfs2 filename: /lib/modules/2.6.18-194.el5xen/kernel/fs/ocfs2/ocfs2.ko license: GPL author: Oracle version: 1.4.7 description: OCFS2 1.4.7 Wed Apr 7 14:46:05 PDT 2010 (build ...) srcversion: 1EF92523E550228CFBFC4B6 depends: ocfs2_dlm,jbd,ocfs2_nodemanager vermagic: 2.6.18-194.el5xen SMP mod_unload gcc-4.1 # rpm -qa | grep ocfs2 ocfs2-tools-1.4.4-1.el5 ocfs2-2.6.18-194.el5xen-1.4.7-1.el5 ocfs2console-1.4.4-1.el5 ocfs2-tools-devel-1.4.4-1.el5 ocfs2-tools-debuginfo-1.4.4-1.el5 |
[출처] [OracleVM환경에서 11gR2 Real Application Cluster(RAC)를 구축하기…(1)]|작성자 진우준세 아버지
|