본문 바로가기

RAC/RAC 이론

01. RAC란 무엇일까요

1 HA 와 OPS 그리고 RAC

일반적으로 DB서버를 구현 할 때는 1개의 서버를 사용. 그러나 이런 방식은 Instance  역할을 하는 서버에 장애가 발생했을 때 Storage 에 저장된 데이터를 사용할 수 없게 되는 위험이 늘 존재함

이런 문제를 대비하기 위해 HA 구조가 등장

HA 구성이란 High Availability 의 약자로 고 가용성이란 뜻, 이름 그대로 서버의 사용 가능시간을 최대한 늘이는 것이 목표인 서버 구성방법. 두 대의 서버를 동일하게 구성해서 서버 1대는 Active 로 두고 서버 1대는 Standby 로 설정해서 만약 Active 상태의 서버가 장애가 발생 할 경우 Srandby 상태의 서버가 즉시 Active 상태로 바뀌여서 투입되어 서비스 중단이 발생하지 않도록 조치되는 구성

오라클에서는 Dataguard  방식이 위 설명과 같은 HA 구성 방식


그러나 이런 HA 방식이 가지는 다양한 문제가 있어서 Oracle에서는 HA 방식을 한 단계 더 발전시킨 OPS 라는 방식을 도입

OPS 라는 방식이란 평소에는 사용자들이 Instance 1과 Instance 2 를 통해서 데이터가 저장된 Storage 에 접근해서 데이터를 조회, 변경 등의 작업을 수행하는데 Instance 1에서 장애가 발생할 경우 남아 있는 Instance 2 를 통해서 Storage 에 접근 가능하기 때문에 서비스가 중단되는 경우를 예방. 서비스의 중단시간을 획기적으로 개선한 HA 을 구현하는 대표적인 방법

HA 와 OPS 의 차이점 :  HA 는 Active 상태와 Srandby 상태로 구분되어 하나의 서버만 구동되는 반면 OPS 는 모든 노드가 Active 상태로 동작하기 때문에 이론적으로 부하기 분산됨으로 속도가 빨라질 수 있음

또 HA 방식은 각 서버 별로 Storage 를 별도로 가지고 있기 때문에 데이터의 동기화문제가 발생 할 수 있지만 OPS 방식은 하나의 Storage 를 사용하기 때문에 이런 문제가 발생하지 않음

* RAC Ping 

PAC Ping 이란 Instance 1 에서 변경 완료 된 데이터를 Instance 2로 가져오기 위해서 우선 디스크에 저장을 한 후 해당 데이터를 Instance 2 로 복사해 오는 작업

이런 과정이 디스크를 사용해서 시간이 오래 걸리기 때문에 OPS 환경에서 RAC Ping 작업은 성능 저하의 주요 원인으로 지적됨

8i 까지는 OPS 9i 부터는 RAC 


RAC는 Instance 1 과 Instance 2 를 연결하는 Interconnnect 라는 특징이 생김. Interconnnect 는 디스크를 거치지 않고 메모리의 데이터를 Interconnnect 를 통해서 즉시 서로 교환하는 구조로 설정됨

그래서 Instance 1 에 있는 데이터와 Instance 2 에 있는 데이터를 서로 즉시 볼 수 있기 때문에 이 기능을 Cache Fusion ( 캐쉬 퓨전 ) 이라고 부름 

Cache Fusion 기술이 도입되면서 사용자가 어떤 물리적인 Instance 에서 작업하는가는 중요하지 않게 됨

여러 Instance 를 마치 하나의 서버처럼 만들어버리기 때문에 이것이 가능한데 이런 역할을 해 주는 것이 클러스터용 소프트웨어. 9i 버전까지는 이 클러스터용 프로그램을 오라클 사가 아닌 별도의 회사에서 만들어서 제공함



2. Cache Fusion 이란?


1) Cache Fusion 개념

RAC 에서는 어떤 Instance 에서 작업을 해도 하나의 서버에서 작업을 하는 것과 같은 효과를 내게 되는데 이런 것을 가능하게 해 주는 RAC의 대표먹인 서비스 두가지가 GES , GCS 

GES (Global Enqueue Service) 란 어떤 Instance 에서 데이터 변경작업 ( 트랜잭션 ) 을 하든 하나의 Instance 에서 데이터 변경 작업을 하는것과 같이 관리하는 기능

GCS (Global Cache Fusion) 란 Cache Fusion 기능이 구현되기 위한 필수 서비스로서 어떤 사용자가 자신의 Instance 에서 원하는 데이터를 찾지 못해서 다른 Instance 에 있는 데이터를 요청했을 때 Insterconnect 를 통해서 데이터를 전달해 주는 서비스를 말함

GCS 에서는 데이터 블록을 전송하고 관리할 때 아래의  3가지 모드로 구분함 

  - Null (N) 모드 : 해당 블록을 사용중인 사용자가 없다는 것을 뜻함

  - Share (S) 모드 : 해당 블록을  select 하고 있는 세션이 있다는 뜻함

  - Exclusive (X) 모드 : 해당 블록을 누군가가 변경하고 있다는 뜻함


3. Interconnnect ( 인터커넥트 ) 란?

앞에서 살펴본 예에서 알 수 있듯이  RAC의 핵심 기능인 Cache Fusion이라는 특징 때문에 블록들

이 이동하는 길인  Interconnect 가 RAC 전체 성능에 아주 중요한 역할을 하게 됩니다. 

Interconnect  를 통해 이동하는  정보는  크게  Clusterware  가  Cluster 를  유지하고  운영하기 위해 

사용하는 정보와 실제 데이터 블록  , Parallel Query 관련 정보들이 있습니다. 

일반적으로  Cluster 를 유지하고 운영하는 정보인  GCS/GES 관련 정보는  256 bytes 정도로 아주 

작지만  실제  데이터  블록은  DB_BLOCK_SIZE ( 10g/11g  기준으로  기본  크기는  8k )  나  Non-

Standard Block Size 의 크기로 GCS/GES 정보에 비해 아주 큽니다. 

그리고  Parallel Query 관련 정보는  Parallel_Execution_message_size 에 의해 크기가 결정되는 데 

기본크기는  8k 로 설정되어 있습니다. 

이런 내용들이 얼마나 자주 왕래하느냐가 성능에 아주 중요한 영향을 주게 되며 당연히 가급적이

면 이동하는 양을 줄이는 것이 튜닝에 아주 핵심적인 관점이 되겠죠? 

그래서  RAC 튜닝에서  Interconnect 의 사용량을 측정하여 튜닝하는 것이 아주 자주 언급이 됩니

다. 

 

즉  Interconnect 를 사용하는 량을 줄이거나 혹은  Interconnect 의 속도를 높이는 것이  RAC 튜닝

에서 아주 중요하다는 뜻입니다. 

'RAC > RAC 이론' 카테고리의 다른 글

04. RAC 운영하기  (0) 2015.04.30
03. RAC 기반에서의 Load Balancing 과 Application Failover  (0) 2015.04.30
02. CRS 설명  (0) 2015.04.30