IT기술/Oracle

01 RAC 란 무엇일까?

dobbby 2021. 6. 18. 10:03
반응형

1. HA 와 OPS 그리고 RAC

- Database 데이터를 저장하고 있는 창고의 역할

- Instance : 창고의 데이터를 가져와 작업하는 작업장

 

하나의 Database 에 여러개의 Instance 로 구성하는 방식을 RAC (Real Application Cluster) 라고 합니다.

8i 까지는 OPS (Oracle Parallel Server) 라고 하였음

 

- HA 구성: High Availability , 서버의 사용 가능 시간을 최대로 늘리는 것이 목표인 서버 구성방법

  HA 는 하나는 Active, 나머지 하나는 Standby 상태

 

- OPS 는 하나의 Storage 를 공유해서 사용하며, Interconnect 가 없다

 

- RAC Ping 현상: Instance 1에서 변경 완료 된 데이터를 Instance 2 로 가져오기 위해 우선 디스크에 저장 후

해당 데이터를 Instance 2 로 복사해오는 작업

성능에 문제가 생긴다.

 

- Cache Fusion (캐쉬 퓨전): Interconnect 을 통해 Instance 1과 2 를 연결하여 디스크를 거치지 않고 데이터를 교환하는 것

클러스터용 소프트웨어: 캐쉬 퓨전을 해주는 것

오라클 10g R1 부터 오라클 사에서 만들어서 제공

10g R1 : crs

10g R2 부터 Clusterware (클러스터웨어) 라고 부름

11g : ASM 기능 통합으로 grid 라는 명칭으로 변경

무결성 유지 관리 기능

 

rac는 spfile 쓰는 걸 권장 (dynamic sga)

 

10g asm도 vote, ocr 는 반드시 raw device 에 넣어야 한다.

11g 부터는 asm 안에 ocr, vote 다 들어간다.

ocr 는 registry 같은 기능, 자원관리

vote 는 서버가 살아있나 죽었나 체크

 

- OCR (Oracle Cluster Repository) : RAC 구성 전체 정보 저장하고 있는 디스크

(11g 에서는 ASM 디스크 사용 가능)

별도의 Raw Device 구성해서 저장

오라클에서 권장하는 OCR 의 최소 크기는 100 MB

 

- Vote Disk : 각 Node 들이 장애가 있는지 없는지를 구분하기 위해서 사용하는 일종의 출석부 같은 역할

- cssd 프로세스 : 각 Node 들이 정상적으로 작동하고 있는지 Interconnect 를 통해 매 초마다 heartbit 를 보내고,

     각 Node 들은 그에 대한 응답을 보내어 자신이 정상적으로 작동하고 있다고 알려준다.

응답이 없다면 cssd 는 2차로 vote disk 를 확인한다.

오라클에서는 vote disk 의 최소 크기는 20 MB 로 3개로 다중화해서 구성하기를 권장한다.

 

 

 

2. Cache Fusion 이란?

RAC 에서는 어떤 Instance 에서 작업을 해도 마치 하나의 서버에서 작업을 하는 것과 같은 효과를 내게 되는데

이런 것을 가능하게 해주는 RAC 의 대표적인 서비스 두가지가

GES (Global Enqueue Service) ,

GCS (Global Cache Service) 입니다.

 

GES 란 어떤 Instance 에서 데이터 변경작업 (트랜잭션) 을 하던 하나의 Instance 에서 하는 것처럼 관리하는 기능

GCS 란 Cache Fusion 기능이 구현되기 위한 필수 서비스로서 어떤 사용자가 자신의 Instance 에서 원하는 데이터를 찾지 못해서

다른 Instance 에 있는 데이터를 요청했을 때 Interconnect 를 통해서 데이터를 전달해 주는 서비스를 의미

 

Interconnect 속도가 관건

gigabit

infiny band

 

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

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

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

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

 

Share 모드는 여러 Instance 에서 동시에 공유해서 사용 가능

1건의 데이터를 여러 Instance 에서 동시에 select 할 수 있다는 뜻

X 모드는 반드시 1개의 Instance 에서만 사용할 수 있습니다.

 

특정 데이터에 대한 모드를 관리하는 Instance 를 Master node 라고 부른다.

Hasing 알고리즘을 이용해서 랜덤으로 결정된다.

 

확인하는 방법

 

$ olsnodes -n

$ pwd

/home/oracle/product/10g/crs/log/rac1/crsd

 

$ grep MASTER crsd.log

 

블록 단위로 Master node 를 설정한다

 

GCS 서비스가 원활하게 운영되도록 요청된 블록을 전송하고 상태를 관리하는 백그라운드 프로세스는 Lock Monitor Services (LMS) 입니다.

GCS_SERVER_PROCESS 라는 파라미터를 사용해서 LMS 프로세스의 개수를 지정할 수 있음.

 

 

 

3. Interconnect

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

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

 

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

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

 

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

실제 데이터 블록은 DB_BLOCK_SIZE (10g/11g 기준으로 기본 크기는 8k) 나 NonStandard Block Size의 크기로 GCS/GES 정보에 비해 아주 큽니다.

 

그리고 Parallel Query 관련 정보는 Parallel_Execution_message_size에 의해 크기가 결정되는데 기본크기는 8k로 설정되어 있습니다.

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

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

 

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

 Interconnect를 사용하는 량을 줄이거나 혹은 Interconnect의 속도를 높이는 것 RAC튜닝에서 아주 중요하다는 뜻입니다.

반응형