FIF's 코딩팩토리

Oracle RAC(Real Application Cluster)란? 본문

Database(데이터 베이스)

Oracle RAC(Real Application Cluster)란?

FIF 2019. 5. 21. 14:55
반응형

[오라클] RAC(Real Application Cluster)란?

 

1. 일반적인 Oracle Server 구성방식

     A. Single Server 구성

         하나의 database에 하나의 instance가 할당되는 구성이다.

         일반적으로 DB서버 구현시 1개의 서버를 사용하게 되는데, 이런 경우 instance 역할을 하는 서버에 장애가

         발생했을 때 storage에 저장된 데이터를 사용할 수 없게 되는 위험이 존재한다.

 

2. HA 구성(High Availability) 방식

고가용성이란 뜻으로 이름 그대로 서버의 사용시간을 최대한 늘리는 것이 목표인 서버 구성방법 이다. 두 대의 서버를 동일하게 구성해서 서버 1대는 Active로 두고 다른 한대는 Standby로 설정해서 만약 Active 상태의 서버에서 장애가 발생할 경우, Standby 서버가 즉시 Active 상태로 바뀌면서 서비스 중단이 발생하지 않도록 하는 구성이다.

 

     A. HA 문제점

          i. 비용이 많이 든다.

 

          ii. 데이터 동기화 문제 : active 상태의 node에서 작업을 하다가 db가 죽으면 stanby상태의 node로 작업을 할                 수 있다 해도 데이터가 동기화 되지 않았으므로 데이터는 날아간 상태이다.

 

          iii. 미러링을 어떻게 해줄거냐에 따라 성능이 크게 결정된다.

 

3. OPS(Oracle Parellel Server-8i까지) 구성

평소에는 사용자들이 Instance1과 Instance2를 통해 데이터가 저장된 Storage에 접근해서 데이터를 조회, 변경 등의 작업을 수행하는데 Instance1에서 장애가 발생할 경우 남아 있는 Instance2를 통해 Storage에 접근 가능하게 하는 방식이다.

하나의 storage에 두 개의 instance가 연결되어 있어 사용자가 각각 다른 instance에 접속해도 storage가 하나이므로 같은 데이터를 조회, 변경 할 수 있다.

 

     A. RAC ping 문제점

           i. Instance1에서 변경 완료된 데이터를 Instance2로 가져오기 위해서는 우선 디스크에 저장을 한 후,

             해당 데이터를 Instance2로 복사해 오는작업을 거쳐야 한다.

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

 

           ii. [현재상황] storage에 저장된 홍길동 데이터를 A 사용자가 instance1로 접속해서 조회하고, B사용자는                         instance2에 접속한 후 조회했다. 이후에 A사용자가 홍길동을 일지매로 update한 후, commit까지 완료한

               상황이다.

 

            iii. [문제상황] 이때, instance2에 접속해 있는 B사용자가 홍길동 데이터를 조회할 경우 일지매라는 데이                         터가 보여야 하는데, instance1에서 변경완료 후, commit된 일지매 데이터를 instance2로 가져오기 위해서                   는 storage에 우선 저장한 후, instance2로 가져와야 한다.

 

            iv. [RAC PING현상 발생] instance1에서 변경 완료된 데이터를 instance2로 가져오기 위해서는 우선 디스크에                  저장 한 후, 해당 데이터를 instance2로 복사해와야 하는데, 디스크를 사용하므로 시간이 오래 걸린다.

 

4. HA와 OPS 비교

     A. HA 구성

           i. 하나의 Active이고, 나머지 하나는 대기상태인 Standby다.

 

           ii. 만약 100명의 사용자가 접속할 경우, Active 상태인 서버로 모두 접속하게 되고, standby 상태의 서버는 장애                를 대비해 대기만 하고, 실제 서비스엔 전혀 도움을 주지 못한다.

 

           iii. 비용이 많이 들지만 가성비는 떨어진다.

 

           iv. Active 상태 서버에 장애가 발생할 경우 해당 서버에 접속해 있던 연결들은 모두 접속이 종료된 후, Standby                서버가 가동되면서 다시 접속되므로, Active 상태에서 작업하던 모든 작업들은 취소된다.

 

           v. 두 개의 서버로만 구성할 수 있다.

 

     B. OPS 구성

           i. 두 노드 모두 Active 상태로 동작하기엔 이론적으로 부하가 50% 분산될 수 있고, 서비스 속도도 두 배로 빨라               질 수 있다.

 

           ii. OPS의 경우, CTF나 TAF라는 설정이 걸려있다면, 기존 서버에 장애가 발생해도 다른 서버로 이전 시킬 수 있                다.

 

           iii. 한 개의 storage를 공유하므로 한 서버에서 변경된 작업을 다른 서버에도 그대로 반영시킨다.

 

           iv. OPS나 RACE는 이론적으로 서버 수 제한없이 확장 가능하다.

 

           v. RAC PING이라는 현상으로 심각한 성능저하가 발생할 수 있다.

 

5. RAC(Real Application Cluser-9i버전부터)

OPS의 RAC ping문제가 개선되어 성능이 크게 향상된 것으로, Oracle 9i 버전부터는 서로 다른 instance에서 변경된 데이터를 디스크에 거치지 않고 바로 instance로 가져올 수 있는 Cache Fusion(캐시 퓨전) 이라는 기능을 사용한다.

 

     A. Cache Fusion 개념

        물리적으로 떨어져 있어도 하나로 만들어주는 개념으로,

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

        이를 가능하게 해주는 RAC의 대표적인 두가지 서비스가 GES와 GC이다.

        Instance1에서 A User가 홍길동을 강감차으로 update후, commit을 수행했다.

        B User가 원래 홍길동이었던 deptno=10을 조회할 경우, Instance1에서 변경된 데이터를 디스크를 거치지 않고

        (RAC ping현상 없이) inter connect를 통해 즉시 Instance2로 전달 된다.

 

          i. GES(Global Enqueue Service)란 어느 Instance에서 데이터 변경작업(트랜잭션)을 하던지 간에 하나의

            Instance에서 데이터 변경 작업을 하는 것과 같이 관리하는 기능이다.

            A User가 Instance1에서 홍길동을 강감찬으로 변경작업을 하고 있을 경우, 해당 변경 작업이 종료될 때까지

            마치 하나의 서버에서 작업을 하는 것처럼 B User가 instance2에서 홍길동을 delete할 수 없도록 막아준다는                뜻이다.

 

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

             Inter connect(Instance1과 Instance2를 연결하는 망)를 통해서 데이터를 전달해주는 서비스를 말한다.

 

                    - Null (N) 모드 : 해당 블록을 사용중인 사용자가 없음.

 

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

 

                    - Exclusive (X) 모드 : 해당 블록을 누간가가 변경하고 있음.

                      만약 현재 select를 해서 S모드로 해당데이터를 가지고 있는데 update를

                      수행해야 한다면, update하기 전에 X모드로 변경해야 한다.

 

     B. Inter connect 개념

         RAC의 핵심 기능인 Cache Fusion때문에 블록들이 이동하는 길인 Inter connect가 RAC 전체 성능에 아주 중요한

         역할을 한다.

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

         실제 데이터 블록, Parellel Query와 관련된 정보들이 있다.

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

 

     C. 클러스터용 소프트웨어 개념

         CRS(10g R1) -> clusterware(10g R2) -> Grid(11g)

         10g R1버전부터 클러스트용 프로그램을 오라클에서 직접 만들어 제공하기 시작했고, 10g R2버전부터

         클러스터웨어 라는 용어로 부른다. 11g에서는 ASM 기능이 통합되어 grid라는 명칭으로 변경되었다.

 

           i. clusterware(10g R2)는 동일한 데이터를 동시에 변경할 때, 문제가 생기지 않도록 관리해준다.

 

           ii. Storage 구성 방식 : 9i RAC까지 storage는 Raw Device를 사용해 구성했으나, 10g부터는 ASM(Automatic                   Storage Management)라는 방식으로 Storage를 구성할 수 있게 되었고, ASM이 오라클에서 권장하는

              방법이다. 

              하지만, ASM으로 구성된 예가 거의 없어 10g RAC의 경우에도 대부분 Raw Device로 구성되어 사용                           한다.

반응형
Comments