오라클 그리드 인프라스트럭처

오라클은 클러스터 기술에 관한 오래 역사를 가지고 있다.

  • Real Application Cluster를 떠받치는 근본적인 기술은 다음과 같다
    • 두 개 이상의 서버에서 공유 스토리지상에서 동일한 데이터 블럭에 대해 각 서버가 동일 액세스를 허용. 전통적으로 RAC에서 사용되는 스토리지는 SAN과 네트워크 파일 시스템을 사용.
    • 데이터를 저장하고 클러스터 내의 서버 간의 데이터 무결성을 보장하기 위해 클러스터 파일 시스템 사용. 대표적으로 ASM(오라클 자동 스토리지 관리)과 VxCFS(베리타스 클러스터 파일 시스템)과 NFS가 있다.
    • 클러스터 서버에서 사용되는 통신 네트워크는 이더넷을 사용하는 IP나 최근 들어 Infiniband 사용이 확대됨.

캐시 퓨전이라는 새로운 "diskless" ping 아키텍쳐는 블록을 소유한 인스턴스의 메모리 캐시로부터 요청한 인스턴스의 메모리 캐시로 디스크를 거치지 않고 직접적으로 블록의 
복사본을 전송해준다. 이 기능은 크게 인스턴스 간의 통신을 향상시져준다. 캐시 퓨전은 동일한 데이터에 대한 업데이트나 동일한 데이터에 대해서 쿼리가 동시에 실행하는 경우
 유용하다 또한 데이터와 유저가 특정한 노드에서만 모든 작업이 일어나지 않는 고립되지 않는 데이터베이스에 유리할 수 있다. 캐시 퓨전에서는 인스턴스를 유저나 데이터로 
파티션을 하는데 집중할 필요가 없어진다.

11G의 기본 아키텍쳐이다. 기본적인 2개 노드 클러스터를 보여주고 있다. 이 클러스터는 ASM 인스턴스, RDBMS 인스턴스와 두 개의 리스너로 실행되고 있다.

Flex Cluster

위에 그림 11g 클러스터의 각 노드들은 Membership과 기능에 대해서 동일하다. 각 노드는 동일한 클러스터 소프트웨어가 동작하고 리소스는 어떤 노드상에서도 동작할 수 있고 모든 노드는 스토리지에 직접 액세스할 수 있다.
12c의 그리드 인프라스트럭쳐에서는 허브와 리브라는 두 가지 타입의 노드로 구성된 Flex Cluster라는 새로운 타입의 기술이 소개되고 있다.

  • HUB : 공유 스토리지에 직접 액세스할 수 있는 전체 클러스터 소프트웨어 스택이자 기존의 RAC 노드와 동일한 역활을 수행하는 노드. 64개까지 존재할 수 있다.
  • LEAF : 공유 스토리지에 직접 액세스할 필요가 없는 노드이자 경량화 클러스터 소프트웨어 스택상에 구동되는 노드이다.

사용자가 Flex Cluster를 구축할지 여부를 결정할 때 다음 사항들을 고려해야 한다.

  • Flex 모드로 기존의 모드를 변경하면 클러스터를 중지해야 한다.
  • 기존의 클러스터 환경에서 Flex Cluster로 변경하는 것은 지원하지 않는다.
  • GNS(Grid Naming Service)가 Flex Cluster를 작동하는데 필요하다.

다음 예에서는 노드의 현재의 모드를 확인하고 허브 노드로부터 리프 노드를 변경한다. 변경이 완료되면 클러스터 소프트웨어를 재시작하고 변경 내용을 확인한다.


[root@node11] crsctl get node role config
Node 'node11' configured role is 'hub'

[root@node11] crsctl set node role lead
CRS-4408: Node 'node11' configured role successfully changed; restart Oracle High Availability Services for new role to take effect.

[root@node11] crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'node11'

[root@node11] crsctl start crs -wait
CRS-4123: Starting Oracle High Availability Services-managed resources

...
...

[root@node11] crsctl get node role config
Node 'node11' configured role is 'leaf'

[root@node11] crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

[root@node11] ps -ef | grep pmon
root    10865     6284  0 12:14 pts/0       00:00:00 grep pmon


Flex ASM

12c ASM 인스턴스와 RDBMS 인스턴스가 동일한 서버에 상주하지 않아도 되는 선택적인 Flex ASM 기술이 도입.
2가지 장점

  • 대규모 클러스터에 대해 ASM 인스턴스의 개수를 줄어든다.
  • 실행하는 RDBMS 인스턴스의 노드에서 구동되는 ASM 인스턴스가 갖는 종속성을 제거
    Default는 클러스터에 구동되는 Flex ASM 구성은 모든 노드에서 구동되는 ASM 인스턴스의 개수는 3개 또는 그보다 적다.
    다음 예는 단일 2 node 클러스터로 구성되는 데이터베이스가 한 개의 ASM 인스턴스가 Shutdown 이후에도 여전히 작동되고 있음을 보여준다.

$ ps -ef | grep pmon
oracle    9999    1   0 Apr29  ?       00:00:01 ora_pmon_a056_1
grid      1234    1   0 00:01  ?       00:00:01 asm_pmon_+ASM1  
grid      3434 2431   0 00:02  pts/0   00:00:01 grep pmon

$ srvctl stop asm -n node10 -f

$ ps -ef | grep pmon
oracle    9999    1   0 Apr29  ?       00:00:01 ora_pmon_a056_1  
grid      3434 2431   0 00:02  pts/0   00:00:01 grep pmon

$ sqlplus / as sysdba

SQL> selet open_mode from v$database;

OPEN_MODE
----------------------------
READ WRITE


Flex ASM 구성

구동되는 ASM 인스턴스가 없는 서버에서 실행되는 RDBMS 인스턴스와 클러스터를 보여준다. 개별적으로 동작한다.
RDBMS는 원격 ASM 인스턴스와 통신하고 RDBMS와 ASM 두 인스턴스는 둘 다 공유 스토리지에 액세스 해야 한다.

Flex ASM 설치와 구성

설치 중 OUI에서 ASM 클라이언트가 원격 ASM 인스턴스와 통신하는데 사용되는 네트워크 구성을 물어볼 것이다. 원격 ASM의 연결을 이용하기 위해서는 리스너가 ASM 네트워크상에서 실행하기 위해 반드시 필요하다.



$ $ crsctl stat res ora.ASMNET1LSNR_ASM.lsnr -n node10
NAME=ora.ASMNET1LSNR_ASM.lsnr
TYPE=ora.asm_listener.type
TARGET=ONLINE
STATE=ONLINE


Flex ASM을 구동되도록 선택했다면 SCAN 리스너, 로컬 리스너, ASM 리스너를 가진다.



$ asmcmd showclustermode
ASM cluster : Flex mode enabled

$ srvctl status asm -datail
ASM is running on node10,node11
ASM is enabled.

$ srvctl modify asm -count ALL
$ srvctl config asm
ASM home: /u01/app/12.1.0/grid
Password file: +OCR/orapwASM
ASM listener: LISTENER
ASM instance count : ALL
Cluster ASM listener : ASMNET1lSNR_ASM


다음은 각 노드가 ASM 인스턴스를 실행하도록 다시 SRVCTL를 사용한다.



$ srvctl modify asm -count 3
$ srvctl config asm
ASM home: /u01/app/12.1.0/grid
Password file: +OCR/orapwASM
ASM listener: LISTENER
ASM instance count : 3
Cluster ASM listener : ASMNET1lSNR_ASM


ASM 개선사항

패스워드 파일

사용자 인증은 OS나 패스워드 파일에 위해 이루어진다.
기본 위치는 $ORACLE_HOME/dbs에 있다.
12c 그리드 인프라스터럭쳐에서는 클러스터의 모든 노드가 단일 ASM 패스워드 파일을 공유할 수 있도록 ASM 디스크 그룹에 패스워드 파일을 저장할 수 있다.



$ srvctl config asm
ASM home : /u01/app/12.1.0/grid
Password file: +OCR/orapwASM
ASM listener: LISTENER
ASM instance count : 3
Cluster ASM listener : ASMNET1LSNR_ASM


ASM Rebalance Resync

12c에서는 한 인스턴스 내의 복수 개의 디스크 그룹에서 동시에 Rebalance 작업을 할 수 있다.

ACFS 개선사항

ASM은 빠르고 사용하기 쉬운 클러스터 파일 시스템인 반면 ASM에 저장된 데이터를 액세스하거나 표준 파일 시스템 도구를 사용할 수 없는 단점이 있다.

ADVM은 클라이어튼의 I/O 요청을 받아 해당 ASM 디스크 그룹에 요청을 매핑한다. ADVM 또한 ADVM 볼륨에 대해 구성된 ASM 스토리지에 디스크 드라이버 인터페이스를 제공하여 ASM을 확장한다. ACFS는 ASM 과 일반 파일 시스템의 최종 링크를 제공한다. ACFS를 통해 관리자와 DBA는 cp나 df 등의 명령을 사용하여 일반 파일 시스템과 동일하게 ACFS 파일 시스템상에서 상호작업을 할 수 있다.

파일 지원

오라클 DB 11.2.0.4 버전까지는 데이터 펌프 익스포트 파일, 아카이브 로그 파일, RMAN 백업 파일과 같이 데이터 파일이 아니거나 2차(Control File, ocr file 등)이 아닌 파일은 ACFS에서는 지원되지 않았다.
12c에서는 모든 DB 파일(Windows Flatform 제외)에서 ACFS 지원한다.



$ acfsdriverstate supported
ACFS-9200: Supported


Unsupport 가 지원하는 플랫폼인지 확인한다.
다음으로 Kernel 모듈이 Install 되었는지 또는 구동되었는지 확인한다.



$ acfsdriverstate installed
ACFS-9203: true

$ acfsdriverstate loaded
ACFS-9204: false


다음 명령을 통해서 모듈을 기동한다.



$ acfsload start
..............
..............
..............
..............
..............
..............
..............
..............


$ acfsdriverstate loaded
ACFS-9204: true


다음으로 ACFS 파일 시스템으로 마운트하고자 하는 위치의 디렉토리를 생성한다.



$ mkdir /acfs




ASMCMD> volcreate -G data -s 3G vol1
ASMCMD> volinfo -F data vol1
Diskgroup Name : DATA


   Volume Name : VOL1
   Volime Device : /dev/asm/vol1-249
   State: ENABLED
   Size (MB) : 3072
   Resize Unit : UNPROT
   Stripe Columns: 4
   Stripe Width (K): 128
   Usage:
   Mountpath:




$ mkfs -t acfs /dev/asm/vol1-249
mkfs.acfs: version           = 12.1.0.1.0
mkfs.acfs: on-disk version   = 39.0
mkfs.acfs: volume            = /dev/asm/vol1-249
mkfs.acfs: volume size       = 32458921
mkfs.acfs: Format complete

$ acfutil registry -a /dev/asm/vol1-249 /acfs/

$ mount -t acfs /dev/asm/vol1-249 /acfs


고가용 NFS

Network File System(NFS)은 원격 시스템에서 파일에 액세스하는 방법이다.
사용방법은 다음과 같다.

  • ACFS는 이미 호스트상에 구성된 기존 NFS 서버에 의존적이다.
  • 적용시 Oracle Restart 기능에서는 지원하지 않는다.
  • 윈도우 플랫폼에서는 지원하지 않는다.
  • VIP를 위한 고정 IP가 필요하다.
  • NFS 프로토콜 버전은 2와 3이 지원된다
ACFS 스냅샷

ACFS 스냅샷이란 온라인이나 또는 읽기 전용, 읽기-쓰기 모드인 ACFS 파일 시스템의 Point-in-time 복제본이다.

용도는 다음과 같다.

  • DB에 대한 즉각적인 Thin Clone을 만드는 작업이다.
    12c에서는 스냅샷의 스냅샷을 수행하는 것이 가능하고 최대 63개의 스냅샷이 특정 ACFS 파일 시스템에 존재할 수 있다. 기능을 사용하기 위해서는 ADVM 디스크 그룹 호환성을 12.1로 설정해야 한다.
기타 개선사항
  • IPv6과 호환성을 가지는 부분이다.
  • 오라클 레지스트리 백업 위치 : OCR에 따라서 OCR의 백업을 단순화시켜 ASM 디스크 그룹에 백업할 수 있다.
  • SCAN의 장점을 얻을 수 있는 단일 클러스터상에 복수 개의 서브넷 설정을 위해 하나 이상의 SCAN 주소를 가질 수 있다.