DBA: Linux

  DOWNLOAD
Oracle Database 10g
  TAGS
linux, rac, clustering All
Linux, iSCSI 환경에서 Oracle RAC 10g Release 2 클러스터 설치하기


저자 - Jeffrey Hunter

(2,500달러 이하의) 저렴한비용으로 Oracle RAC 10g Release 2 클러스터 개발환경을 셋업하고 설정하는 방법을 배워 보십시오.

개발, 테스트 용도로만 사용할 수 있습니다. 운영 목적의 시스템에는 적용될 수 없습니다!

업데이트일 – 2007년 11월

목차

  1. 서론
  2. Oracle RAC 10g 개요
  3. 공유 스토리지 개요
  4. iSCSI 테크놀로지
  5. 하드웨어 및 비용
  6. Linux 운영체제의 설치
  7. 네트워크 설정
  8. Openfiler 설치
  9. Openfiler를 이용한 iSCSI 볼륨 설정
  10. Oracle RAC 노드의 iSCSI 볼륨 설정
  11. "oracle" 사용자 및 디렉토리 생성
  12. 오라클 환경을 위한 Linux 서버 설정
  13. hangcheck-timer 커널 모듈의 설정
  14. 원격 액세스를 위한 RAC 노드 설정
  15. 양쪽 Oracle RAC 노드를 위한 스타트업 커맨드
  16. Oracle Cluster File System(OCFS2)의 설치 및 설정
  17. Automatic Storage Management (ASMLib 2.0)의 설치 및 설정
  18. Oracle 10gRAC 소프트웨어 다운로드
  19. Oracle10g Release 2 설치를 위한 사전 준비 작업
  20. Oracle 10gClusterware 소프트웨어 설치
  21. Oracle 10g Database 소프트웨어 설치
  22. Oracle 10g Companion CD 소프트웨어 설치
  23. TNS 리스너 프로세스 생성
  24. 오라클 클러스터 데이터베이스의 생성
  25. 설치 후 작업 - (선택 사항)
  26. TNS 네트워킹 파일의 검증
  27. Create / Alter Tablespaces
  28. RAC 클러스터 및 데이터베이스 설정의 검증
  29. 클러스터의 시작 / 종료
  30. Transparent Application Failover - (TAF)
  31. 트러블슈팅
  32. 결론
  33. 감사의 말씀

아티클 관련 다운로드:
Oracle Enterprise Linux Release 4 Update 5 — (Available for x86 and x86_64)
Oracle Database 10g Release 2 EE, Clusterware, Companion CD - (10.2.0.1.0)
Openfiler 2.2 (respin 2) — (openfiler-2.2-x86-disc1.iso -OR- openfiler-2.2-x86_64-disc1.iso
ASMLib 2.0 Library - (2.0.2-1)oracleasmlib-2.0.2-1.i386.rpm
Support files

 


1. 서론

Oracle Real Application Clusters (RAC) 10g 테크놀로지를 이해하는 가장 쉽고 빠른 방법은 Oracle RAC 10g 클러스터를 직접 설치해 보는 것입니다. Oracle RAC 10g가 제공하는 기능(폴트 톨러런스, 보안, 로드 밸런싱, 확장성 등)을 이해하는데 이보다 효과적인 방법은 없습니다.

하지만 운영 시스템에 RAC를 구성하는데 드는 비용이 지나치게 높다는 문제가 걸림돌이 됩니다. 소규모 2-노드 클러스터를 구성하는 비용은 적게는 1만 불(미화 기준)에서 많게는 2만 불에 이를 수도 있습니다. 또 RAC 환경의 기반이 되는 SAN(Storage Area Network)을 구축하려면 최소 1만 불이 요구됩니다.

이 가이드는 많은 비용을 들이지 않고 Oracle RAC 10g에 친숙해지고자 하는 사용자들을 위해, 상용 소프트웨어 컴포넌트와 무료 소프트웨어를 이용하여 (2,200 - 2,500 달러 정도의) 저렴한 비용으로 Oracle RAC 10g Release 2 시스템을 구축하는 방법을 소개합니다. 시스템은 Linux(CentOS 4.4 또는 Red Hat Enterprise Linux 4 Update 4), Oracle10g Release 2, OCFS2, ASMLib 2.0을 기반으로 (각각 하나의 프로세서를 장착한) 2 노드 클러스터로 구성됩니다. Oracle RAC의 모든 공유 디스크 스토리지는 iSCSI 를 기반으로 하며, 이를 위해 네트워크 스토리지 서버(Openfiler Release 2.1)가 사용됩니다. (물론 VMWare Virtual Machine에 가상 클러스터 가상 클러스터를 구현하는 방안도 고려해 볼 수 있을 것입니다. 하지만 교육 효과가 같을 수는 없습니다!)

본 문서의 다음 버전에서는 CentOS, Red Hat Linux 대신 오라클의 Enterprise Linux 가 사용될 것임을 참고하시기 바랍니다. Enterprise Linux는 OCFS2, ASMLib 소프트웨어 패키지를 포함하고 있으며, 기존 Linux OS와 동등한 (또는 보다 개선된) 안정성을 제공할 것입니다. Enterprise Linux에 대한 자세한 정보는 http://www.oracle.com/linux. 를 참고하시기 바랍니다. 이 구성이 지금까지 Enterprise Linux 환경에서 테스트된 적은 없지만, 최소한의 변경 작업만으로 실행이 가능할 것이라 예상할 수 있습니다.

rPath Linux를 기반으로 하는, Openfiler 는 무료 브라우저 기반 네트워크 스토리지 관리 유틸리티로, 파일 기반 NAS(Network Attached Storage)와 블록 기반 SAN(Storage Area Network)을 단일 프레임워크를 통해 지원합니다. Openfiler는 CIFS, NFS, HTTP/DAV, FTP 등을 지원합니다. 하지만 여기에서는 iSCSI 지원 기능만을 이용하여 Oracle 10g RAC에서 요구하는 SAN 기반 공유 스토리지 환경을 저렴하게 구성하기로 합니다. 네트워크 스토리지 서버(본 문서에서는 Openfiler 서버라 불리기도 합니다)에는 USB 2.0 인터페이스를 통해 외장형 500 GB 하드 드라이브가 연결됩니다. 본 문서에서는 Openfiler 서버를 이용하여 이 디스크를 iSCSI 기반 스토리지로 설정한 후, Oracle Clusterware와 Oracle ASM 볼륨이 요구하는 공유 파일을 저장하기 위해 사용합니다.

참고: 본 문서는 교육을 목적으로 작성되었으며, 기본적인 개념의 이해가 용이하도록 셋업 과정을 단순화하였습니다. 예를 들어 디스크 미러링은 하나의 물리적 디스크 상에 구현되었습니다. (실제 환경이라면 최소한 2 개의 물리적 디스크를 사용해야 할 것입니다.)

여기서 설명된 내용이 저가형 Oracle RAC 10g 시스템을 구축하는 유일한 방법은 아닙니다. 필자는 SCSI를 기반으로 공유 스토리지 컴포넌트를 구현하는 다른 솔루션을 구현해 보기도 했습니다. 경우에 따라서는 SCSI가 여기서 설명된 구성보다 더 많은 비용을 요구할 수도 있습니다. 저가형 SCSI 구성의 예가 아래와 같습니다:

  • SCSI 컨트롤러: SCSI 컨트롤러 2 조 (컨트롤러 당 가격: $20 (Adaptec AHA-2940UW) - $220 (Adaptec 39320A-R)
  • SCSI 인클로저: $70 - (Inclose 1 Bay 3.5" U320 SCSI Case)
  • SCSI 하드 드라이브: $140 - (36GB 15K 68p U320 SCSI Hard Drive)
  • SCSI 케이블: SCSI 케이블 2 조 (개당 $20) - (3ft External HD68 to HD68 U320 Cable)

일부 마더보드의 경우 빌트인 SCSI 컨트롤러를 기본 탑재하고 있음을 참고하십시오.

기존의 Oracle9i, Oracle 10g Release 1 가이드에서는 로우 파티션(raw partition)을 이용하여 공유 스토리지에 파일을 저장했습니다. 하지만 여기에서는Oracle Cluster File System Release 2(OCFS2)와 Oracle Automatic Storage Management(ASM) 기능을 활용하기로 합니다. 두 대의 Oracle RAC 노드는 아래와 같이 구성됩니다:

오라클 데이터베이스 파일
RAC 노드 네임 인스턴스 네임 데이터베이스 네임 $ORACLE_BASE DB 파일을 위한 파일 시스템/볼륨 관리자
linux1 orcl1 orcl /u01/app/oracle ASM
linux2 orcl2 orcl /u01/app/oracle ASM
Oracle Clusterware 공유 파일
파일 타입 파일 네임 iSCSI 볼륨 네임 마운트 포인트 파일 시스템
Oracle Cluster Registry /u02/oradata/orcl/OCRFile crs /u02/oradata/orcl OCFS2
CRS Voting Disk /u02/oradata/orcl/CSSFile crs /u02/oradata/orcl OCFS2

Oracle Database 10g Release 2 (10.2)부터 Cluster Ready Services(CRS)의 명칭이 Oracle Clusterware로 변경되었음을 참고하시기 바랍니다.

Oracle Database 10g Release 2 (10.2) 이후 버전에서는 Oracle Clusterware를 (버전과 무관한) 별도의 Oracle Clusterware 홈 디렉토리에 설치해야 합니다. Optimal Flexible Architecture(OFA) 룰에도 변경 사항이 있습니다. Oracle Clusterware를 (버전별로 지정된) Oracle home 마운트 포인트(예:/u01/app/oracle/product/10.2.0/...)에 설치해서는 안됩니다. 이후 버전의 Oracle Clusterware가 동일한 경로 상의 Oracle Clusterware 설치 파일을 덮어쓰기 때문입니다. 또 Oracle Clusterware 10g Release 2(10.2)가 기존의 Oracle Cluster Ready Services 설치본을 감지하는 경우, 동일한 경로 상의 기존 설치 파일을 덮어 쓰게 됩니다.

Oracle Clusterware 소프트웨어는 RAC 클러스터를 구성하는 각 노드의 /u01/app/oracle/product/crs 경로에 설치됩니다. Oracle Clusterware 소프트웨어는 두 종류의 파일–Oracle Cluster Registry (OCR) 파일과 "Voting Disk" 파일–이 클러스터의 모든 노드에 의해 공유될 것을 요구합니다. 이 두 파일은 Oracle's Cluster File System Release 2(OCFS2)를 사용한 공유 스토리지에 설치됩니다. 이 파일을 로우 디바이스(raw device)를 설치하는 것도 가능하지만, 오라클은 이러한 구성을 권장하지 않으며 이렇게 구성된 두 가지 Clusterware 파일을 ASM이 사용할 수 없다는 문제가 따릅니다.

Oracle10g Release 2 데이터베이스 소프트웨어는 RAC 클러스터를 구성하는 각 노드의 별도 Oracle Home 경로(/u01/app/oracle/product/10.2.0/db_1)에 설치됩니다. 모든 물리적 데이터베이스 파일(데이터, 온라인 리두 로그, 컨트롤 파일, 아카이브 리두 로그)은 공유 드라이브의 다른 파티션에 설치되며 ASM(Automatic Storage Management)에 의해 관리됩니다. (물론 오라클 데이터베이스 파일을 그냥 OCFS2에 저장하는 것도 가능합니다. 하지만 ASM을 직접 구성해 봄으로써 보다 많은 것을 배우실 수 있을 것입니다!)

참고: 본 문서는 아래에 기술된 환경을 그대로 사용하는 것을 가정하여 작성되었습니다. 본 문서에서 언급된 구성요소를 다른 구성요소로 대체하는 것은 일체 허용되지 않습니다 (다만 서버, 네트워킹 장비, 외장형 하드 드라이브 등의 벤더 하드웨어는 다른 제품으로 교체될 수 있습니다.) 구입한 하드웨어가 Red Hat Linux 4에 의해 지원되는지 확인하시기 바랍니다.

RHEL 4와 FireWire 기반의 Oracle RAC 10g Release 2 설치 가이드가 필요하신 경우에는, 이곳을 누르십시오(한글).

RHEL3 기반 Oracle RAC 10g Release 1 설치 가이드가 필요하신 경우, 이곳을 누르십시오(한글).

Oracle9i RAC 버전의 가이드를 참고하시려면, 이곳을 누르십시오(영문).

 


2. Oracle RAC 10g 개요

Oracle9i에서 처음 소개된 Oracle RAC는 Oracle Parallel Server(OPS)의 다음 세대 솔루션입니다. RAC는 여러 개의 인스턴스가 동일한 데이터베이스(스토리지)에 동시 액세스할 수 있는 환경을 제공합니다. 모든 노드가 동일한 데이터에 액세스하고 특정 인스턴스에 장애가 발생해도 데이터베이스의 가용성이 희생되지 않으므로, 폴트 톨러런스, 로드 밸런싱, 수평적 확장을 통한 가용성 및 성능 개선이 가능합니다.

Oracle10g RAC의 중심에는 공유 디스크 서브시스템이 있습니다. 클러스터의 모든 노드는 데이터, 리두 로그 파일, 컨트롤 파일, 매개변수 파일에 동시 접근할 수 있어야 합니다. 또 모든 노드가 데이터베이스에 접근하는 것을 허용하려면 데이터 디스크를 글로벌하게 공유해야 합니다. 마지막으로, 각각의 노드는 리두 로그 파일과 컨트롤 파일을 개별적으로 저장하고 관리하지만, 다른 노드에 시스템 장애가 발생한 경우 복구를 위해 이 파일에 접근할 수 있어야 합니다.

Oracle RAC와 OPS의 가장 큰 차이점의 하나로 Cache Fusion 테크놀로지를 들 수 있습니다. OPS에서 노드 간의 데이터 요청을 처리하려면, 요청 노드가 데이터를 읽기 전에 먼저 데이터를 디스크에 저장해야 합니다. Cache Fusion을 사용하는 RAC에서는 데이터가 정교한 락(lock) 알고리즘을 기반으로 고속 네트워크를 통해 다른 노드에 직접 전달됩니다.

모든 클러스터링 솔루션이 공유 스토리지를 사용하는 것은 아닙니다. 일부 벤더는 "federated cluster”라 불리는 방법을 사용합니다. 이 환경에서는 데이터가 여러 대의 서버에 분산되어 저장된 형태로 공유됩니다. 이와 달리, Oracle10g RAC에서는 모든 노드가 동일한 저장 공간을 공유합니다. Oracle10g RAC의 데이터 파일, 리두 로그 파일, 컨트롤 파일, 아카이브 로그 파일은 로우 디바이스(raw device), NAS, SAN, ASM, 또는 클러스터 파일 시스템(clustered file system) 기반의 공유 스토리지에 저장됩니다. 오라클의 솔루션은 모든 노드의 프로세싱 파워의 활용도를 극대화하는 동시에 페일오버 작업의 안정성을 보장한다는 이점을 제공합니다.

Dell, IBM, HP 등의 벤더는 운영 환경을 위해 사전 구성된 Oracle10g RAC 솔루션을 제공하고 있습니다. 하지만 본 문서에서는 Linux 서버와 iSCSI를 이용하여 저렴한 가격의 테스트/개발용 Oracle10g RAC 환경을 구축하는 방법을 설명하는데 초점을 맞추고 있습니다.

Oracle RAC에 대한 자세한 정보는 Oracle RAC Product Center를 참고하시기 바랍니다.

 


3. 공유 스토리지 개요

파이버 채널(Fiber Channel)은 공유 스토리지 환경에서 가장 널리 사용되는 기술입니다. 파이버 채널은 시스템과 스토리지 디바이스를 포인트-투-포인트(FC-P2P), 루프(FC-AL), 또는 스위치 토폴로지(FC-SW) 형태로 연결하기 위한 고속 시리얼 전송 인터페이스입니다. 파이버 채널은 SCSI 프로토콜과 IP 프로토콜을 지원합니다. 파이버 채널 구성은 최대 127 개의 노드와 각 방향별로 초당 2.12 기가비트의 전송률을 지원합니다. 실효 전송률은 4.25 Gbps입니다.

하지만 파이버 채널은 가격이 매우 비싸다는 문제가 있습니다. 스위치 하드웨어에만 1,000불 가량이 필요하며, 하이-엔드 드라이브의 가격은 300 불(36GB 드라이브 기준)에 이릅니다 서버에 장착할 파이버 채널 카드를 포함하는 전형적인 파이버 채널 구성(서버 어댑터 포함)에는 약 10,000 불의 비용이 필요합니다(물론 여기에는 클러스터를 구성하는 서버 가격이 포함되어 있지 않습니다).

파이버 채널보다 저렴한 대안으로 SCSI가 있습니다. SCSI 테크놀로지는 공유 스토리지 환경에서 적정한 수준의 성능을 제공하지만, Linux의 GPL 기반 가격 체계에 익숙한 관리자와 개발자에게는 이것도 비싸게 느껴질 수 있습니다. SCSI를 이용하여 2-노드 클러스터를 구성하는 데에는 대략 2,000~5,000 불이 듭니다.

그 밖에 대중적인 솔루션으로 NAS 기반의 Sun NFS (Network File System)가 있습니다. Sun NFS 역시 공유 스토리지 환경에 응용될 수 있지만, Network Appliance 장비(또는 호환 장비)가 필요하다는 제약 사항이 있습니다 또 서버가 NFS를 통한 direct I/O를 지원해야 하며, TCP를 전송 프로토콜을 사용해야 하며, 읽기/쓰기 블록 사이즈는 32K로 설정되어야 하는 등의 요구사항이 존재합니다.

본 문서에서 사용되는 공유 스토리지는 Openfiler가 설치된 네트워크 스토리지 서버와 iSCSI 테크놀로지를 기반으로 구현됩니다. 이 솔루션은 테스트 및 교육 환경에서 파이버 채널을 대체할 수 있는 저렴한 대안을 제공합니다. 하지만 로우-엔드 하드웨어가 사용되고 있는 점을 감안할 때 운영 환경에 적용되어서는 안될 것입니다.

 


4. iSCSI 테크놀로지

오랜 세월 동안 네트워크 기반 스토리지 솔루션을 구현하기 위한 유일한 대안은 Fibre Channel Storage Area Network (FC SAN) 밖에 존재하지 않았습니다. Fiber Distributed Data Interface (FDDI), 라는 초기의 ANSI 프로토콜을 기반으로 하는 Fibre Channel은 storage network상에서 SCSI 커맨드를 전달하기 위한 방안으로서 개발되었습니다.

FC SAN은 뛰어난 성능과 개선된 디스크 사용률, 가용성, 확장성을 제공합니다. 또 서버 클러스터링을 지원한다는 매우 중요한 장점을 제공합니다! 하지만 아직까지도 FC SAN에는 세 가지 중요한 단점이 존재합니다. 첫 번째는 가격입니다. FC SAN의 구현에 드는 비용이 최근 몇 년 동안 감소 추세에 있었던 것은 사실이지만, 제한된 IT 예산을 가진 소규모 기업의 입장에서는 여전히 부담스러운 가격입니다. 두 번째로 하드웨어 컴포넌트의 호환성 문제가 있습니다. 표준이 발표된 이후로 각 벤더들은 서로 다른 방식으로 Fiber Channel 표준을 해석하였고, 이로 인해 다양한 인터커넥트 문제가 발생하고 있습니다. 단 동일한 벤더로부터 Fiber Channel 컴포넌트를 구입할 때에는 이것이 문제가 되지 않습니다. 세 번째로 Fiber Channel은 이더넷이 아니라는 점을 지적해야 할 것입니다! 따라서 Fiber Channel은 데이터 센터 네트워크와는 구분된 별도의 네트워크 테크놀로지와 스킬을 필요로 합니다.

Gigabit Ethernet이 대중화되고 가격 절감의 요구가 증대되면서, 최근에는 Fiber Channel 대신 iSCSI 기반 스토리지 시스템을 구현하는 사례가 늘고 있습니다. 오늘날, iSCSI SAN은 FC SAN의 주요 경쟁 기술로 자리잡고 있습니다.

2003년 2월 11일 IETF(Internet Engineering Task Force)에 의해 인준된 iSCSI(Internet Small Computer System Interface)는 IP 기반 스토리지 디바이스, 호스트, 클라이언트 간의 연결 설정 및 관리를 위한 IP 기반 스토리지 네트워킹 표준입니다. iSCSI는 SCSI-3 프레임워크 내에 정의된 데이터 전송 프로토콜로 스토리지 네트워크 상에서 block-level 데이터 전송을 수행한다는 점에서 Fiber Channel과 유사합니다. 블록-레벨 커뮤니케이션이란 호스트/클라이언트 간에 데이터가 "블록(block)"이라는 단위로 전송됨을 의미합니다. (대부분의 NAS 시스템에서 사용되는 파일 레벨 커뮤니케이션과 달리) 데이터베이스 서버가 정상적으로 지원되기 위해서는 블록-레벨 커뮤니케이션이 필수적입니다. FC SAN과 마찬가지로, iSCSI SAN은 스토리지를 위한 별도의 물리적 네트워크로 구성됩니다. 하지만 컴포넌트들은 일반적인 IP 네트워크(LAN)과 동일한 형태로 구성될 수 있습니다.

iSCSI의 미래가 밝다는 사실은 분명하지만, 아직까지는 성능적인 문제로 인해 비판을 받기도 합니다. iSCSI는 우리가 이미 친숙한 IP 네트워크를 전송 메커니즘으로 사용한다는 가장 중요한 특징을 가집니다. 하지만 TCP/IP 프로토콜은 매우 복잡할 뿐 아니라 CPU 자원을 많이 소모합니다. iSCSI에서, 데이터 처리 작업(TCP, ISCSI 레벨)의 대부분은 소프트웨어에 의해 처리되며 (하드웨어에 전적으로 의존하는) Fiber Channel에 비해 훨씬 느린 성능을 보입니다. 또 SCSI 커맨드를 iSCSI 트랜잭션으로 매핑하는 과정에서 과도한 오버헤드가 발생합니다. 이 때문에 ISCSI 소프트웨어의 오버헤드를 줄이기 위한 대안으로서 TCP/IP, iSCSI 프로세싱을 담당하는 하드웨어 어댑터가 사용되기도 합니다. 이 어댑터를 iSCSI Host Bus Adaptor (HBA) 또는 TCP Offload Engine (TOE) 카드라 부르기도 합니다. 또 이와 별도로 10 Gigabit Ethernet도 현실화된 테크놀로지로 각광받고 있습니다.

새로운 기술이 모두 그러하듯, iSCSI에도 여러 가지 관련 기술 용어와 약어들이 존재합니다. 본 문서에서는 iSCSI 이니시에이터와 iSCSI 타겟의 차이점만을 이해하는 것이 중요합니다.

iSCSI 이니시에이터(Initiator) . iSCSI 이니시에이터는 서버(iSCSI 타겟)에 연결하고 서버가 제공하는 서비스를 요청하는 클라이언트 디바이스를 의미합니다. iSCSI 이니시에이터 소프트웨어는 각 Oracle RAC 노드 (linux1, linux2)상에 설치되어 있어야 합니다.

iSCSI 이니시에이터는 소프트웨어 또는 하드웨어로 구현될 수 있습니다. 소프트웨어 iSCSI 이니시에이터는 대부분의 운영 체제 플랫폼을 기반으로 구현되어 있습니다. 본 문서에서는 Linux-iSCSI 프로젝트의 일환으로 제공되는 iscsi-initiator-utils RPM에 포함된 Linux-iSCSI 소프트웨어 드라이버를 사용하게 될 것입니다. iSCSI 소프트웨어 이니시에이터는 일반적으로 Gigabit Ethernet 카드와 같은 표준 네트워크 인터페이스 카드(NIC)와 함께 사용됩니다. 하드웨어 이니시에이터인 iSCSI HBA(TCP Offload Engine(TOE) 카드)는 SCSI ASIC을 보드에 내장한 특수한 형태의 Ethernet 카드로 볼 수 있으며, 시스템 CPU를 대신하여 TCP, SCSI 커맨드를 처리하는 역할을 담당합니다. iSCSI HBA는 Adaptec, Alacritech, Intel, QLogic 등의 벤더를 통해 구현되고 있습니다.

iSCSI 타겟 (Target).iSCSI 타겟은 iSCSI 네트워크의 "서버" 컴포넌트입니다. iSCSI 타겟은 일반적으로 이니시에이터의 요청에 응답하는 스토리지 디바이스를 의미합니다. 본 문서에서는 openfiler1 노드가 iSCSI 타겟으로 사용될 것입니다.

지금까지 iSCSI에 대해 장황한 설명을 했습니다. 그렇다면 iSCSI의 등장이 Fiber Channel의 종말을 의미하는 것일까요? 그럴 가능성은 별로 없습니다. Fiber Channel은 오랜 세월 동안 뛰어난 성능, 유연성, 안정성을 입증해 온 기술입니다. 고성능 스토리지, 매우 복잡한 연결 환경, 미션 크리티컬 수준의 안정성을 요구하는 고객들은 앞으로도 Fiber Channel 기술을 계속적으로 선택하게 될 것입니다.

이 섹션을 마무리하기 전에, 다양한 디스크 인터페이스와 네트워크 테크놀로지의 속도를 비교한 자료를 소개하는 것이 적절해 보입니다. 각각의 인터페이스별로 최대 전송 속도를 초 당 킬로비트(kb), 킬로바이트(KB), 메가비트(Mb), 메가바이트(MB) 단위로 표시하였습니다. 일반적으로 사용되는 용례는 회색으로 표시되었습니다.

디스크 인터페이스 / 네트워크 속도
Kb KB Mb MB Gb
Serial 115 14.375 0.115 0.014  
Parallel (표준) 920 115 0.92 0.115  
10Base-T Ethernet     10 1.25  
IEEE 802.11b wireless Wi-Fi (2.4 GHz band)     11 1.375  
USB 1.1     12 1.5  
Parallel (ECP/EPP)     24 3  
SCSI-1     40 5  
IEEE 802.11g wireless WLAN (2.4 GHz band)     54 6.75  
SCSI-2 (Fast SCSI / Fast Narrow SCSI)     80 10  
100Base-T Ethernet (Fast Ethernet)     100 12.5  
ATA/100 (parallel)     100 12.5  
IDE     133.6 16.7  
Fast Wide SCSI (Wide SCSI)     160 20  
Ultra SCSI (SCSI-3 / Fast-20 / Ultra Narrow)     160 20  
Ultra IDE     264 33  
Wide Ultra SCSI (Fast Wide 20)     320 40  
Ultra2 SCSI     320 40  
FireWire 400 - (IEEE1394a)     400 50  
USB 2.0     480 60  
Wide Ultra2 SCSI     640 80  
Ultra3 SCSI     640 80  
FireWire 800 - (IEEE1394b)     800 100  
Gigabit Ethernet     1000 125 1
Serial ATA I - (SATA I)     1200 150 1.2
Wide Ultra3 SCSI     1280 160 1.28
Ultra160 SCSI     1280 160 1.28
Serial ATA II - (SATA II)     2400 300 2.4
Ultra320 SCSI     2560 320 2.56
FC-AL Fibre Channel     3200 400 3.2
Serial ATA III - (SATA III)     4800 600 4.8
10G Ethernet (IEEE 802.3ae)     10000 1250 10

 


5. 하드웨어 및 비용

Oracle10g RAC 환경을 구현하기 위한 하드웨어로, 세 대의 Linux 서버(두 대의 Oracle RAC 노드와 한 대의 Network Storage Server), 그리고 인터넷 또는 일반 컴퓨터 매장에서 구입 가능한 컴포넌트들이 사용되었습니다.

Oracle RAC Node 1 - (linux1)
Dimension 2400 Series
  • Intel(R) Pentium(R) 4 프로세서 at 2.80GHz
  • 1GB DDR SDRAM (at 333MHz)
  • 40GB 7200 RPM 내장형 하드 드라이브
  • Integrated Intel 3D AGP 그래픽 카드
  • 통합 10/100 이더넷
  • CDROM (최대 48 배속)
  • 3.5" 플로피
  • 모니터 (기존 장비 활용)
  • USB 마우스, 키보드
  • US$620

    1 - 이더넷 LAN 카드

    linux2와 Openfiler 네트워크 스토리지를 연결하기 위한 RAC 인터커넥트에 사용.

    Oracle RAC 노드로 사용되는 두 대의 Linux 서버에는 각각 2 조의 NIC 어댑터가 장착됩니다. Dell Dimension 서버에 내장된 통합 100/100 이더넷 어댑터는 퍼블릭 네트워크에 연결하는데 사용됩니다. 두 번째 NIC 어댑터는 사설 네트워크(RAC 인터커넥트와 Openfiler 네트워크 스토리지)를 위해 사용됩니다. 이때 사설 네트워크의 네트워크 스위치가 지원하는 최대 데이터 전송 속도와 호환 가능한 NIC 어댑터를 사용해야 합니다.

        10/100 Ethernet

         Gigabit Ethernet
    US$20
    Oracle RAC Node 2 - (linux2)
    Dimension 2400 Series
  • ntel(R) Pentium(R) 4 프로세서 2.80GHz
  • 1GB DDR SDRAM (at 333MHz)
  • 40GB 7200 RPM 내장형 하드 드라이브
  • Integrated Intel 3D AGP 그래픽 카드
  • 통합 10/100 이더넷
  • CD-ROM (최대 48배속)
  • 3.5" 플로피
  • 모니터 (기존 장비 활용)
  • USB 마우스, 키보드
  • US$620

    1 - 이더넷 LAN 카드

     

    linux1과 Openfiler 네트워크 스토리지를 연결하기 위한 RAC 인터커넥트에 사용.


    Oracle RAC 노드로 사용되는 두 대의 Linux 서버에는 각각 2 조의 NIC 어댑터가 장착됩니다. Dell Dimension 서버에 내장된 통합 100/100 이더넷 어댑터는 퍼블릭 네트워크에 연결하는데 사용됩니다. 두 번째 NIC 어댑터는 사설 네트워크(RAC 인터커넥트와 Openfiler 네트워크 스토리지)를 위해 사용됩니다. 이때 사설 네트워크의 네트워크 스위치가 지원하는 최대 데이터 전송 속도와 호환 가능한 NIC 어댑터를 사용해야 합니다.

        10/100 Ethernet

         Gigabit Ethernet
    US$20
    Network Storage Server - (openfiler1)
    Clone / Pentium 4
  • Intel(R) Pentium(R) 4 프로세서 1.80GHz
  • 1GB DDR SDRAM (at 333MHz)
  • 40GB 7200 RPM 내장형 하드 드라이브
  • NVIDIA GeForce FX 5200 / AGP 그래픽 카드
  • 통합 10/100 이더넷
  • 4x 통합 USB 2.0 포트
  • CD-ROM (최대 48배속)
  • 3.5" 플로피
  • 모니터 (기존 장비 활용)
  • USB 마우스, 키보드
  • US$500
    1 - 이더넷 LAN 카드

    사설 네트워크의 네트워크 스토리지를 위해 사용.

     

    Network Storage Server(Openfiler 서버)는 2 조의 NIC 어댑터를 포함하고 있습니다. Clone / Pentium 4 머신에 내장된 통합 100/100 이더넷 어댑터는 퍼블릭 네트워크에 연결하는데 사용됩니다. 두 번째 NIC 어댑터는 사설 네트워크(Openfiler 네트워크 스토리지)를 위해 사용됩니다. 이때 사설 네트워크의 네트워크 스위치가 지원하는 최대 데이터 전송 속도와 호환 가능한 NIC 어댑터를 사용해야 합니다.

         10/100 Ethernet

         Gigabit Ethernet
    US$20
    기타 컴포넌트

    스토리지 디바이스 - 외장형 하드 드라이브

    데이터베이스 스토리지를 위해서는 USB 2.0 인터페이스를 통해 Openfiler 서버에 연결된 외장형 Maxtor OneTouch III (500 GB) 드라이브를 사용하였습니다. 본 문서에서는 Openfiler 서버를 이용하여 이 디스크를 iSCSI 기반 스토리지로 설정한 후, Oracle10g RAC 구성에서 Oracle Clusterware와 Oracle ASM 볼륨의 공유 파일을 저장하기 위해 사용합니다 네트워크 스토리지 서버에서 인식하는데 문제가 없다면, 또 여유 공간이 충분하다면 어떤 종류의 하드 디스크(내장형 또는 외장형)를 사용하더라도 무방합니다.

    이번 테스트를 위해 필자가 구입한 디스크의 제원이 다음과 같습니다:
         벤더: Maxtor
         모델: OneTouch III
         Mfg. Part No. / KIT No.: F01W500
         용량: 500 GB
         캐시 버퍼: 16 MB
         회전 속도(rpm): 7200 RPM
         인터페이스 전송률:
              FireWire 800 - 800 Mbits/sec
              FireWire 400 - 400 Mbits/sec
              USB 2.0 - 480 Mbits/sec
         "Combo" 인터페이스:
              IEEE 1394b - FireWire 800
              IEEE 1394a - FireWire 400
              USB 2.0 / USB 1.1
    US$320
    1 - 이더넷 스위치

    linux1-priv와 linux2-priv의 인터커넥트를 위해 사용됩니다. 또 이 스위치를 통해 Openfiler의 네트워크 스토리지 트래픽이 전달됩니다. 비용 절감을 위해, 필자는 사설 네트워크에 10/100 MB 이더넷 스위치와 10/100 Mb 이더넷 카드를 사용하였습니다. 하지만 실제 환경에서는 Gigabit Ethernet 스위치와 1 GB 이더넷 카드가 강력하게 권장됩니다.

         10/100 Ethernet

         Gigabit Ethernet
    US$25
    6 - 네트워크 케이블 US$5
    US$5
    US$5
    US$5
    US$5
    US$5
    합계    US$2,175  

    이제 설치 작업을 시작할 차례입니다. 지금까지는 본 예제에서 사용할 하드웨어에 대해 설명했습니다. 이제 환경을 개념적으로 이해해 봅시다.(아래 이미지를 클릭하면 큰 그림을 보실 수 있습니다.)


    그림 1 아키텍처

    설치 작업을 본격적으로 시작하기 전에, 본 문서에서 설명되는 작업의 대부분이 두 대의 Oracle RAC 노드에서 동시 수행되어야 함을 명심하시기 바랍니다. 각 섹션의 시작 부분에서 작업이 양쪽 Oracle RAC 노드에 모두 실행되어야 하는지 또는 네트워크 스토리지 서버(openfiler1)에서 실행되어야 하는지 설명하도록 하겠습니다.


    6. Linux 운영체제의 설치
    아래 작업을 클러스터의 모든 Oracle RAC 노드에서 실행합니다!

    이 섹션에서는 Linux 운영체제를 설치하는 과정을 단계별로 설명합니다. 본 문서에서 설명된 내용은 Oracle's Enterprise Linux Release 4 Update 5. 운영 체제를 기준으로 하고 있습니다.  

    좀 더 자세한 설치 과정은 Red Hat Linux가 제공하는 manuals에서 참고할 수 있습니다. 하지만, 아래에 제시된 설명을 기반으로 시스템을 구성해야 함을 잊지 마시기 바랍니다.

    두 노드에 Linux 운영체제를 설치하기 전에 먼저 2 조의 NIC 인터페이스 카드를 설치해야 합니다.

    Enterprise Linux Release 4 Update 5의 ISO 이미지를 아래 링크에서 다운로드합니다:

    Oracle E-Delivery Web site for Enterprise Linux

    • V10378-01_1of4.zip   (572 MB)
    • V10378-01_2of4.zip   (619 MB)
    • V10378-01_3of4.zip   (621 MB)
    • V10378-01_4of4.zip   (269 MB)

    Enterprise Linux software를 다운로드 후 각 파일을 압축을 풀어주십시오. ISO images를 CD로 굽습니다.

    • Enterprise-R4-U5-i386-disc1.iso
    • Enterprise-R4-U5-i386-disc2.iso
    • Enterprise-R4-U5-i386-disc3.iso
    • Enterprise-R4-U5-i386-disc4.iso

    MS Windows 머신에서 ISO 파일을 다운로드한 경우, 이미지를 CD로 굽기 위한 다양한 옵션을 활용할 수 있습니다. 본 문서에서는 ISO 이미지를 CD를 굽기 위한 소프트웨어와 사용 방법에 대해 여러분이 잘 알고 있는 것으로 가정하겠습니다. 방법을 잘 모르거나, 이미지를 CD로 굽는데 필요한 소프트웨어가 없다면 아래 두 가지 소프트웨어 패키지 중 하나를 사용할 것을 추천 드립니다:

    Cent OS 이미지(ISO 파일)를 downloading하여 CD로 구운 다음, CentOS Disk #1을 첫 번째 서버(linux1)에 넣고 파워를 켭니다. 그런 다음 아래 설명된 방법 대로 설치 스크린 상에서 답변을 입력합니다. 첫 번째 노드의 Linux 설치 작업을 끝낸 다음에는 두 번째 노드에서 같은 작업을 반복하되, 노드 명을 linux1에서 linux2로 변경하고 다른 IP 주소를 적용해야 함을 명심해야 합니다.

    Boot Screen
    첫 번째 설치 화면(CentOS Enterprise Linux 부트 스크린)의 프롬프트에서 [Enter] 키를 눌러 설치 프로세스를 시작합니다

    Media Test
    CD 미디어를 테스트할 것인지 묻는 질문에 대해 [Skip]을 선택하고 [Enter] 키를 누릅니다. (미디어에 에러가 있다면 CD 버닝 소프트웨어를 통해 이미 경고 메시지가 표시 되었을 것입니다.)  몇 초 동안 비디오 카드, 모니터, 마우스 등의 인식 작업이 수행되고, 인스톨러는 GUI 모드로 전환됩니다.

    Welcome to CentOS Enterprise Linux
    [Next]를 클릭하여 다음 단계로 넘어갑니다.

    Language / Keyboard Selection
    언어, 키보드 설정을 위한 화면입니다. 적절한 구성을 선택합니다.

    Installation Type
    [Custom] 옵션을 선택하고 [Next]를 클릭합니다.

    Disk Partitioning Setup
    [Automatically partition]을 선택하고 [Next]를 클릭합니다.

    서버에 이전에 설치한 Linux 운영체제가 존재하는 경우, 오래된 파티션을 “제거(remove)” 또는 “보존(keep)”할 것인지 묻는 스크린이 표시됩니다. [Remove all partitions on this system] 옵션을 선택합니다. 또 설치 대상에 [hda] 드라이브가 선택되었는지 확인합니다. [Review (and modify if needed) the partitions created] 옵션도 함께 체크하도록 합니다. [Next]를 클릭하여 다음 단계로 진행합니다.

    정말로 모든 파티션을 삭제할 것인지 묻는 대화 창이 표시됩니다. [Yes]를 클릭합니다.

    Partitioning
    이 단계에서 인스톨러가 자동으로 선택한 디스크 파티션을 조회하고, 필요한 경우 수정할 수 있습니다. 대부분의 경우 인스톨러는 /boot를 위해 100MB, swap 공간을 위해 메모리 용량의 두 배를 할당하고, 나머지를 root(/) 파티션에 할당합니다 스왑 공간의 크기는 최소 1GB로 설정하는 것이 좋습니다. 여기에서는 디폴트 설정을 그대로 사용하기로 합니다. (1GB RAM이 설치되어 있으므로 스왑 공간으로는 2GB가 할당됩니다.)


    RHEL 4에서부터, 인스톨러는 LVM(Logical Volume Manager)를 사용하여 디스크 설정 작업을 수행합니다. 예를 들어, 첫 번째 하드 드라이브(예의 경우 /dev/hda)를 두 개의 파티션으로 나눌 때, 먼저 boot 파티션(/dev/hda1)을 할당하고 디스크의 나머지 영역을 VolGroup00(/dev/hda2)이라는 이름의 LVM에 할당합니다 LVM Volume Group(VolGroup 00)은 다시 두 개의 LVM 파티션(root 파일 시스템과 swap)으로 파티셔닝 됩니다 여기에서는 스왑 공간이 최소 1GB를 넘는 지의 여부만 확인하면 충분합니다. 필자의 시스템에는 1GB RAM이 설치되어 있으므로, 인스톨러는 2GB의 스왑 공간을 생성하였습니다. 따라서 디폴트 디스크 레이아웃을 그대로 적용해도 아무런 문제가 없을 것입니다.

    Boot Loader Configuration
    인스톨러는 디폴트로 GRUB 부트 로더를 사용합니다. 디폴트 값을 선택하여 GRUB 부트 로더를 사용하도록 하고 [Next]를 클릭합니다.

    Network Configuration
    앞에서 설명한 것처럼, 운영체제를 설치하기 전에 각 서버에 NIC 카드가 설치되어 있어야 합니다. 이 화면에서는 두 조의 NIC 카드가 모두 정상적으로 인식되고 있어야 합니다


    먼저, 각 NIC 카드에 대해 [Active on boot] 항목이 체크되어 있는지 확인합니다. (인스톨러가 eth1을 활성화하지 않았을 수도 있습니다.)


    두 번째로, eth0과 eth1에 대해 [Edit] 작업을 수행합니다. eth0과 eth1에 서로 다른 IP 주소를 할당하고, 가능하다면 eth1(인터커넥트)과 eth0(퍼블릭 네트워크)에 서로 다른 서브넷을 할당합니다.

    eth0:
    - [Configure using DHCP] 옵션의 체크를 해제합니다.
    - [Activate on boot]를 체크된 상태로 둡니다.
    - IP 주소: 192.168.1.100
    - 넷마스크: 255.255.255.0

    eth1:
    - [Configure using DHCP] 옵션의 체크를 해제합니다.
    - [Activate on boot]를 체크된 상태로 둡니다.
    - IP 주소: 192.168.2.100
    - 넷마스크: 255.255.255.0

    hostname은 수동으로 설정합니다. 첫 번째 노드는 “linux1”으로, 두 번째 노드는 “linux2”로 설정합니다. 게이트웨이와 DNS 서버를 설정하고 다음 단계로 넘어갑니다.

    Firewall
    [No firewall]이 선택되어 있는지 확인하고 [Next]를 클릭합니다. 방화벽을 설정하지 않았다는 경고 메시지가 뜰 수도 있습니다. 경고 메시지가 떴다면, [Proceed]를 클릭하여 다음 단계로 진행합니다.

    Additional Language Support/Time Zone
    추가 언어 지원 및 시간대 설정을 위한 화면이 표시됩니다. 대부분의 경우, 디폴트 설정을 그대로 사용하는 것이 권장됩니다.

    Set Root Password
    root 패스워드를 선택하고 [Next]를 클릭합니다.

    Package Group Selection
    스크린 하단으로 스크롤한 뒤 “Miscellaneous” 항목에서 [Everything]을 선택합니다. [Next]를 클릭하여 다음 단계로 진행합니다.

    오라클을 설치하기 전에 모든 Linux 패키지를 미리 설치해 두어야 하는 것은 아니라는 점을 참고하시기 바랍니다. 여기에서는 예제를 최대한 단순화하기 위해 모든 패키지를 한꺼번에 설치하는 방법을 사용했습니다. 오라클 소프트웨어를 성공적으로 설치하기 위해 필요한 패키지에 대한 상세한 정보는 Section 19("Oracle10g Release 2 설치 전 준비 작업")에서 확인하실 수 있습니다.

    일부 RHEL4 배포판의 경우, 디폴트로 “Package Group Selection” 스크린이 표시됩니다. 이 화면에서는 “Install default software packages” 또는 “Customize software packages to be installed” 중 하나를 선택해야 합니다. "Customize software packages to be installed" 옵션을 선택하고 [Next]를 클릭하여 다음 단계로 진행하면 "Package Group Selection" 스크린이 표시됩니다. 여기에서 스크린 하단으로 스크롤한 후 “Miscellaneous” 항목에서 [Everything]을 선택합니다. [Next]를 클릭하여 다음 단계로 진행합니다.

    About to Install
    설치 전 최종 확인을 위한 스크린이 표시됩니다. [Continue]를 클릭하여 설치 작업을 시작합니다. 설치 과정에서 Disk #2, Disk #3, Disk #4를 바꿔 넣으라는 프롬프트가 표시될 것입니다.

    CentOS 4.2의 경우, Disk #2, Disk #3, Disk #4, Disk #1, 그리고 다시 Disk #4의 순서로 디스크를 교환해 주어야 합니다.

    Graphical Interface (X) Configuration
    (CentOS 4.2를 제외한) 대부분의 RHEL4 배포판의 경우, 설치가 완료된 후 인스톨러에 의해 비디오 하드웨어의 인식이 시도됩니다. 인스톨러가 X Windows 서버 사용에 필요한 비디오 하드웨어(그래픽 카드와 모니터)를 올바르게 인식했는지 확인합니다. 그리고 다음 단계에서는 X Window 설정 작업이 수행됩니다.

    Congratulations
    이것으로 이제 첫 번째 노드(linux1)의 CentOS Enterprise Linux 운영체제 설치 작업이 성공적으로 완료되었습니다. 인스톨러가 CD-ROM 드라이브에서 CD를 자동으로 꺼냅니다. CD를 꺼낸 후 [Reboot]를 클릭하여 시스템을 리부트 합니다.

    Linux 시스템이 처음 부팅되면, 새로운 Welcome 스크린이 표시됩니다. 마법사를 이용하여 날짜와 시간을 설정하고, 사용자 계정을 추가하고, 사운드 카드를 테스트하고, CD를 이용한 추가 설치 작업을 수행할 수 있습니다 여기에서는 시간/날짜 확인 이외의 다른 작업에는 신경 쓰지 않아도 됩니다. (단 CentOS 4.x의 경우에는 모니터/디스플레이 설정도 확인해 주어야 합니다.)   모든 작업이 성공적으로 완료되었다면 로그인 스크린이 표시되는 것을 확인하실 수 있을 것입니다.

    두 번째 노드에서 동일한 설치 작업을 반복
    첫 번째 노드에서 Linux 운영체제의 설치를 완료한 후, 두 번째 노드(linux2)에서 같은 작업을 반복합니다. 이때 서버명과 네트워크 설정이 달라지는 점에 주의하시기 바랍니다. linux2의 설정 예가 아래와 같습니다:

    먼저, 각 NIC 카드에 대해 [Active on boot] 항목이 체크되어 있는지 확인합니다. (인스톨러가 eth1을 활성화하지 않았을 수도 있습니다.)

    두 번째로, eth0과 eth1에 대해 [Edit] 작업을 수행합니다:

    eth0:
    - [Configure using DHCP] 옵션의 체크를 해제합니다.
    - [Activate on boot]를 체크된 상태로 둡니다.
    - IP 주소: 192.168.1.101
    - 넷마스크: 255.255.255.0

    eth1:
    - [Configure using DHCP] 옵션의 체크를 해제합니다.
    - [Activate on boot]를 체크된 상태로 둡니다.
    - IP 주소: 192.168.2.101
    - 넷마스크: 255.255.255.0


    hostname은 수동으로 설정합니다. 필자는 두 번째 노드의 이름으로 "linux2"를 사용하였습니다. 마지막으로 게이트웨이와 DNS 서버를 설정하고 다음 단계로 넘어갑니다.

     


    7. 네트워크 설정

    아래 작업을 클러스터의 모든 Oracle RAC 노드에서 실행합니다 !

    참고: 이 섹션에서는 RAC 환경에 필수적인 설정 작업을 설명하고 있습니다. Linux 설치 과정에서 기본적인 네트워크 설정을 완료한 상태라 해도, 이 단계를 생략해서는 안됩니다.

    네트워크 설정 개요

    Linux OS의 설치 과정에서 각 노드의 IP 주소와 호스트네임 설정을 이미 완료한 상태입니다. 이제 /etc/hosts 파일을 설정하고 인터커넥트를 위한 네트워크 설정 작업을 수행할 차례입니다.

    Oracle RAC의 각 노드는 퍼블릭 네트워크를 위한 정적 IP 주소와 노드 간의 직접 연결(인터커넥트)을 위한 정적 IP 주소를 갖습니다. (절대로 퍼블릭 IP 주소 또는 인터커넥트를 위해 DHCP를 사용해서는 안됩니다!) 프라이빗 인터커넥트(private interconnect)의 사설 IP 주소는 오라클 데이터베이스가 Cluster Manager, Cache Fusion 데이터, 네트워크 스토리지 서버(Openfiler) 데이터를 전송하는 용도로만 사용됩니다. 인터커넥트에 퍼블릭 네트워크를 사용하는 것도 가능하지만, 데이터베이스 성능이 저하될 수 있으므로 권장되지 않습니다. (Cache Fusion과 Cluster Manager 트래픽을 위한 대역폭이 제약될 수 있습니다.) 운영 환경에서는 인터커넥트를 위해 최소한 기가바이트 급의 네트워크를 이용한 전용 네트워크를 구성해야 합니다. 네트워크 스토리지 서버(Openfiler)도 별도의 기가비트 네트워크에 구성해야 합니다.

     

    Public/Private 네트워크의설정

    퍼블릭 네트워크와 인터커넥트를 위한 사설 네트워크의 설정 방법이 아래와 같습니다.

    RHEL 4의 "Network Configuration" 프로그램을 사용하면 네트워크 설정을 쉽게 완료할 수 있습니다. Network Configuration 프로그램을 시작하려면 root 계정으로 로그인한 뒤 커맨드 라인에서 다음과 같이 실행합니다:

    # su -
    # /usr/bin/system-config-network &

    Network Configuration 프로그램을 통해 NIC 디바이스와/etc/hosts파일의 설정을 변경합니다. 두 가지 작업 모두 Network Configuration GUI를 통해 수행할 수 있습니다. 두 노드의/etc/hosts 설정은 동일합니다.

    아래와 같이 설정 작업을 수행합니다:

    Oracle RAC Node 1 - (linux1)
    디바이스 IP 주소 서브넷 게이트웨이 용도
    eth0 192.168.1.100 255.255.255.0 192.168.1.1 linux1 을 퍼블릭 네트워크에 연결
    eth1 192.168.2.100 255.255.255.0   linux1 (interconnect)과 linux2 (linux2-priv)의 직접연결
    /etc/hosts
    127.0.0.1 localhost loopback

    # Public Network - (eth0)
    192.168.1.100 linux1
    192.168.1.101 linux2

    # Private Interconnect - (eth1)
    192.168.2.100 linux1-priv
    192.168.2.101 linux2-priv

    # Public Virtual IP (VIP) addresses for - (eth0)
    192.168.1.200 linux1-vip
    192.168.1.201 linux2-vip

    Oracle RAC Node 2 - (linux2)
    디바이스 IP 주소 서브넷 게이트웨이 용도
    eth0 192.168.1.101 255.255.255.0 192.168.1.1 linux2를 퍼블릭 네트워크에 연결
    eth1 192.168.2.101 255.255.255.0   linux2 (interconnect)과 linux1 (linux1-priv)의 직접연결
    /etc/hosts
    127.0.0.1 localhost loopback

    # Public Network - (eth0)
    192.168.1.100 linux1
    192.168.1.101 linux2

    # Private Interconnect - (eth1)
    192.168.2.100 linux1-priv
    192.168.2.101 linux2-priv

    # Public Virtual IP (VIP) addresses for - (eth0)
    192.168.1.200 linux1-vip
    192.168.1.201 linux2-vip

    가상 IP 주소는 두 Oracle RAC 노드의 /etc/hosts 파일에만 정의된다는 점에 주의하시기 바랍니다. 퍼블릭 가상 IP 주소는 Oracle Universal Installer 실행 과정에서 Virtual Internet Protocol Configuration Assistant (VIPCA)에 의해 자동으로 설정됩니다. 모든 가상 IP 주소는 srvctl start nodeapps -n <node_name> 커맨드가 실행될 때 활성화됩니다. 바로 이 주소가 클라이언트 tnsnames.ora 파일에 Host Name/IP Address로 설정 됩니다(자세한 내용은 뒤에서 설명합니다).

    첫 번째 Oracle RAC 노드(linux1)를 위한 설정 화면이 아래와 같습니다. 양쪽 노드에 네트워크 설정을 해 주는 것을 잊지 마시지 바랍니다.



    그림 2 Network Configuration 스크린, Node 1 (linux1)



    그림 3 Ethernet Device 스크린, eth0 (linux1)



    그림 4 Ethernet Device 스크린, eth1 (linux1)



    그림 5: Network Configuration 스크린, /etc/hosts (linux1)

    네트워크 설정 작업을 완료한 뒤 ifconfig 커맨드를 이용하여 설정 내역을 확인할 수 있습니다. linux1에서 확인한 설정 정보가 아래와 같습니다: :

    $ /sbin/ifconfig -a
    eth0 Link encap:Ethernet HWaddr 00:0D:56:FC:39:EC
    inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    inet6 addr: fe80::20d:56ff:fefc:39ec/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:835 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1983 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:705714 (689.1 KiB) TX bytes:176892 (172.7 KiB)
    Interrupt:3
    eth1 Link encap:Ethernet HWaddr 00:0C:41:E8:05:37
    inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:41ff:fee8:537/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 b) TX bytes:546 (546.0 b)
    Interrupt:11 Base address:0xe400
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:5110 errors:0 dropped:0 overruns:0 frame:0
    TX packets:5110 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:8276758 (7.8 MiB) TX bytes:8276758 (7.8 MiB)
    sit0 Link encap:IPv6-in-IPv4
    NOARP MTU:1480 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

    가상 IP 대해

    10g에서 가상 IP(VIP, Virtual IP)가 필요한 이유는 무엇일까요?

    바로 애플리케이션의 가용성 보장을 위해서입니다. 노드에 장애가 발생하면, 노드에 할당된 VIP는 자동으로 다른 노드에 페일오버 됩니다. 이 과정에서 두 가지 작업이 진행됩니다.

    1. 새로운 노드가 arp 시그널을 브로드캐스트하고 IP 주소에 연관된 MAC 주소를 공개합니다. 서버가 직접 연결된 상황에서는, 이전의 주소로의 연결하는 과정에서 장애가 발생하게 됩니다
    2. 가상 IP를 주소로 하는 패킷이 새로운 노드로 전달되고, 새로운 노드는 클라이언트에 RST 패킷을 회신합니다. 따라서 클라이언트는 즉각적으로 에러를 수신하게 됩니다.

    다시 말해, 클라이언트가 다운된 노드에 대해 SQL 구문을 실행한 경우, TCP/IP 타임아웃이 발생할 때까지 오랜 시간 대기하지 않고 클라이언트가 TCP 리셋 신호를 즉각적으로 수신하게 됩니다. SQL 구문을 실행한 경우에는 ORA-3113 에러가 발생하며, 연결 과정에서 tnsnames.ora에 정의된 다른 주소가 사용됩니다.

    Transparent Application Failover(TAF)를 사용하는 경우에는 상황이 조금 달라집니다. TAF를 이용하면 ORA-3113에러를 완벽하게 방지하는 것이 가능합니다! TAF에 대해서는 Section 29("Transparent Application Failover - (TAF)")에서 자세히 설명합니다.

    VIP를 사용하지 않은 경우, 다운된 노드에 연결된 클라이언트는 10분의 TCP 타임아웃 기간이 완료된 후에야 에러를 확인할 수 있습니다. 따라서 VIP를 이용하지 않고는 효과적인 HA 솔루션을 구현하는 것이 불가능합니다(출처 - Metalink Note 220970.1).

    RAC Node Name Loopback Address 등록되지 않았음을 확인

    노드 네임 (linux1 or linux2)이 /etc/hosts 파일에 루프백 주소로 등록되지 않았음을 확인합니다. 루프백 주소 항목에 아래와 같이 서버 네임이 등록되어 있는 경우:

    127.0.0.1 linux1 localhost.localdomain localhost

    아래와 같이 제거되어야 합니다:

    127.0.0.1 localhost.localdomain localhost

    RAC node name이 루프백 주소에 포함되어 있으면, RAC 설치 과정에서 다음과 같은 에러가 발생합니다:

    ORA-00603: ORACLE server session terminated by fatal error

    또는

    ORA-29702: error occurred in Cluster Group Service operation

    네트워크 설정의 조정

    Oracle 9.2.0.1 및 이후 버전에서는, Linux의 IPC(inter-process communication, Cache Fusion, Cluster Manager의 RAC 클러스터 인스턴스 간 버퍼 전송 등)를 위한 디폴트 프로토콜로 UDP를 사용합니다.

    Oracle strongly suggests to adjust the default and maximum send buffer size (SO_SNDBUF socket option) to 256KB, and the default and maximum receive buffer size (SO_RCVBUF socket option) to 256KB.

    Receive buffer는 TCP/UDP에서 수신된 데이터를 (애플리케이션이 read 작업을 수행하기 전까지) 임시로 저장하는데 사용됩니다. TCP/UDP 프로토콜은 receive buffer의 오버플로우를 방지하기 위해 버퍼 사이즈 윈도우를 초과하는 전송을 허용하지 않습니다. 따라서 receive buffer의 용량을 초과하는 데이터그램은 폐기 처리 됩니다.

    Default/maximum window size는 /proc파일 시스템에서 변경 가능하며 리부팅하지 않고도 적용이 가능합니다.

    # su - root
    # sysctl -w net.core.rmem_default=262144
    net.core.rmem_default = 262144
    # sysctl -w net.core.wmem_default=262144
    net.core.wmem_default = 262144
    # sysctl -w net.core.rmem_max=262144
    net.core.rmem_max = 262144
    # sysctl -w net.core.wmem_max=262144
    net.core.wmem_max = 262144

    위는 OS가 실행 중인 상태에서 변경 내용을 적용한 예입니다. 영구적으로 변경사항을 적용하려면 모든 RAC 클러스터 노드의 /etc/sysctl.conf 파일에 다음 라인을 추가해야 합니다:

    # Default setting in bytes of the socket receive buffer
    net.core.rmem_default=262144

    # Default setting in bytes of the socket send buffer
    net.core.wmem_default=262144

    # Maximum socket receive buffer size which may be set by using
    # the SO_RCVBUF socket option
    net.core.rmem_max=262144

    # Maximum socket send buffer size which may be set by using
    # the SO_SNDBUF socket option
    net.core.wmem_max=262144

    UDP ICMP 필터링 설정의 확인 비활성화

    Linux 운영체제 설치 과정에서 방화벽 옵션을 선택하기 않는 것으로 설명하였습니다. 디폴트 상태에서 방화벽 옵션은 인스톨러에 의해 자동 설정됩니다. 이것 때문에 필자가 고생한 일이 한 두 번이 아니었습니다. 여기에서는 방화벽 옵션이 설정되어 있지 않으며 ICMP 필터링이 비활성화 되어 있음을 다시 한 번 확인해 보기로 합니다.

    UDP ICMP가 방화벽에 의해 거부되는 경우, Oracle Clusterware가 실행 후 몇 분 안에 크래시 되는 문제를 겪게 됩니다. Oracle Clusterware 프로세스가 실패하면 <machine_name>_evmocr.log

    파일에 아래와 같은 내용이 기록됩니다:

    08/29/2005 22:17:19
    oac_init:2: Could not connect to server, clsc retcode = 9
    08/29/2005 22:17:19
    a_init:12!: Client init unsuccessful : [32]
    ibctx:1:ERROR: INVALID FORMAT
    proprinit:problem reading the bootblock or superbloc 22

    이러한 문제가 발생하는 원인은 대부분 ICMP (iptables) Rejection Rule이 설정되어 있기 때문입니다. 이 룰을 비활성화하거나 방화벽을 아예 꺼버리면 문제의 재발을 방지할 수 있습니다. 이와 같이 하면 Oracle Clusterware 소프트웨어가 문제 없이 정상 실행될 것입니다. root 사용자 계정을 이용하여 아래 명령을 실행합니다:

    1. 방화벽 옵션이 비활성화 상태인지 확인합니다. 아래와 같이 방화벽 옵션이 사용되지 않고 있다면, 뒷부분에 설명되는 작업을 실행할 필요가 없습니다.
      # /etc/rc.d/init.d/iptables status
      Firewall is stopped.

    2. 방화벽 옵션이 실행 중이라면 먼저 UDP ICMP rejection을 수동으로 비활성화해야 합니다:
      # /etc/rc.d/init.d/iptables stop
      Flushing firewall rules: [ OK ]
      Setting chains to policy ACCEPT: filter [ OK ]
      Unloading iptables modules: [ OK ]

    3. 그런 다음, 아래와 같이 실행하여 서버가 리부트된 후에도 UDP ICMP rejection이 실행되지 않도록 설정합니다:
      # chkconfig iptables off

       


      8. Openfiler 설치

      아래설치작업을네트워크스토리지서버(openfiler1)대해실행합니다!

      양쪽 Oracle RAC 노드에 네트워크 설정 작업을 완료했다면, 다음 단계에서는 네트워크 스토리지 서버(openfiler1) 에 Openfiler 소프트웨어를 설치해야 합니다. 문서의 뒷부분에서 네트워크 스토리지 서버를 전체 Oracle 10g RAC 공유 스토리지 환경을 위한 iSCSI 스토리지 디바이스로 설정하게 될 것입니다.

      rPath Linux 를 기반으로 하는 Openfiler는 단일 프레임워크를 통해 파일 기반 NAS(Network Attached Storage)와 블록 기반 SAN(Storage Area Network)을 동시에 지원하는 무료 브라우저 기반 네트워크 스토리지 관리 유틸리티입니다. Openfiler의 전체 소프트웨어 스택은 Apache, Samba, LVM2, ext3, Linux NFS, iSCSI Enterprise Target 등의 오픈 소스 애플리케이션과 인터페이스하고 있습니다. Openfiler는 이러한 다양한 테크놀로지를 간결한 형태의 솔루션에 통합하고 강력한 웹 기반 관리 인터페이스를 통해 관리할 수 있게 합니다.

      Openfiler는 CIFS, NFS, HTTP/DAV, FTP 등을 지원합니다. 하지만 여기에서는 iSCSI 지원 기능만을 이용하여 Oracle 10g RAC에서 요구하는 SAN 기반 공유 스토리지 환경을 저렴하게 구성하기로 합니다. Openfiler 서버에는 USB 2.0 인터페이스를 통해 500GB 외장형 하드 드라이브가 연결됩니다. 본 문서에서는 Openfiler 서버를 이용하여 이 디스크를 iSCSI 기반 스토리지로 설정한 후, Oracle Clusterware와 Oracle ASM 볼륨이 요구하는 공유 파일을 저장하기 위해 사용합니다.

      Openfiler에 대한 자세한 설명은 Openfiler 웹사이트 http://www.openfiler.com/에서 확인하실 수 있습니다.

      Openfiler 다운로드

      아래 링크를 통해 Openfiler 2.1 x86(Final)을 다운로드할 수 있습니다. Openfiler를 다운로드한 다음에는 ISO 이미지를 CD로 구워야 합니다.

      MS Windows 머신에서 ISO 파일을 다운로드한 경우, 이미지를 CD로 굽기 위한 다양한 옵션을 활용할 수 있습니다. 본 문서에서는 ISO 이미지를 CD를 굽기 위한 소프트웨어와 사용 방법에 대해 여러분이 잘 알고 있는 것으로 가정하겠습니다. 방법을 잘 모르거나, 이미지를 CD로 굽는데 필요한 소프트웨어가 없다면 아래 두 가지 소프트웨어 패키지 중 하나를 사용할 것을 추천 드립니다:

      Openfiler 설치

      이 섹션에서는 Openfiler 소프트웨어를 설치하는 과정을 단계별로 설명합니다. 여기에서는 디폴트 설정을 그대로 사용하여 Openfiler를 설치하고 있습니다. 수작업을 통한 변경 작업이 필요한 부분은 로컬 네트워크 설정이 유일합니다.

      설치가 완료되면, 서버를 리부트한 뒤 모든 컴포넌트, 서비스, 드라이버가 정상적으로 실행, 인식되었는지 확인합니다. 리부트가 완료된 후 외장형 Maxtor 하드 드라이브는 Openfiler 서버에 의해 /dev/sda 디바이스로 인식되어야 합니다.

      좀 더 자세한 설치 방법은