ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 RAC 개념
    Oracle 2017. 1. 13. 09:30

    RAC의 등장과 개념

    도입, 기본용어

    • DBMS : 데이터를 저장하고 사용자가 원하는 자료를 조회, 수정, 삭제 등의 작업을 해주는 프로그램이다.
    • Instance  : 데이터를 가져와서 작업하는 작업장 
    • Database : 데이터를 저장하고 있는 창고
    • Instance 와 Database : 데이터베이스에 저장된 자료는 서버가 꺼져도 안전하게 저장되어야하므로 HDD에 저장되어 있고, 인스턴스는 여러 사용자가 접속해서 빠른 서비스를 제공해야 하므로 RAM에 저장된다. 데이터베이스에 자료를 저장해 두고 필요할때마다 자료를 인스턴스에 가져와서 작업을 수행하고 작업이 끝나면 그 내용을 다시 데이터베이스에 저장하는 원리로 작동된다. 이때 Instance와 Database를 왔다갔다하면서 작업을 해주는 것을 프로세스f라고 한다. 프로세스에는 서버프로세스와 백그라운드 프로세스가 있다.
    • single server : 데이터베이스 하나에 하나의 인스턴스를 할당하여 구성하는 것. 즉 하나의 창고에 하나의 작업장으로 연결된 방식이다.
    • OPS (Oracle Parallel Server) : 하나의 데이터베이스에 여러개의 인스턴스를 구성하는 방식으로 8i 까지는 OPS라고 불렀고 9i부터는 RAC(Real Application Cluster) 라고 부른다.

    지금부터 single server , OPS , RAC 알아보자.

     

    single server 구성

    single server는  하나의 Storage에 하나의 Instance 서버 로 구성되고 instance sever에 여러 사용자가 접속하여 서비스를 받게된다.
    그런데 문제는 이러한 구성에서 instance sever에 장애가 발생하게되면 Storage 에 저장된 데이터를 모두 사용할 수 었는 위험이 존재한다.

    비유하자면 은행에 돈을 맡기는데 은행 금고하나에 창구가 하나 밖에 없는 상황이다.
    은행에 고객들이 자신의 소중한 돈을 맡겼지만 은행 창구가 문을 닫으면 또는 은행 창구에 문제가 생기면 자신이 맡겼던 돈을 찾을 수도 없고, 대출을 받을 수 없는 상황이 발생하게된다.

    이러한 문제를 보완하기 위하여 HA구조가 등장하게 된다.

     

    HA (High Availability - 고가용성)
    서버의 사용가능 시간을 최대한으로 늘리는 것이 목표인 서버 구성방법이다.
    서버를 동일하게 두대를 구성하되 하나는Active로 실제 사용하는 서버, 다른 하나는 Stanby로 설정한다.
    Active서버에 장애가 발생할 경우 Stanby 서버가 그 즉시 Active상태로 바뀌어서 서비스 중단이 발생하지 않도록 하는 구성이다.
    오라클에서는 Dataguard 방식이 HA 구성 방식이다.

    은행비유를 다시적용하자면 HA방식은 기존의 1번 창구 하나를 두고, 보조 창구인 2번 창구를 하나더 만들어 둔다. 은행 금고 하나에 창구하나 이런 세트를 하나더 만들어서 두 세트를 준비둔다. (즉 1번창구 - 1번 금고, 2번창구- 2번금고) 

    평소에는 1번 창구에서 업무를 보다가 1번 창구에 문제가 생기면 2번 창구로 업무를 넘기는 방법이다. 1번에서 업무를 보다가 장애가 생기면 2번 창구로 가서 처음부터 다시시작해야 한다. 또한 1번창구에 연결된 1번 금고의 잔고가 바뀌면 2번 창구에 연결된 2번 금고잔고도 바꾸어 주어야 한다.

     HA 방법에도 문제점이 존재한다. 발전시킨 OPS 방식이 도입된다

     

    OPS

     OPS (Oracle Parallel Serve)는 앞서 언급한 HA의 문제점을 보완한 방식이다.
    stanby 로 준비해둔 서버는 장애가 발생하지 않는한 이용률은 제로에 가깝다. Stanby는 한가로운데 비해 Active 서버는 부하가 발생한다. 이런 비효율적인 부분을 개선하였다.
    OPS방식은 하나의 Storage 서버에 두개의 Instance Server를 두는데 두 서버를 모두 Active로 만들어서 부하를 분산시킨다.

    HA방식에서 Active에서 장애가 발생하면 기존의 서비스는 모두 취소되고 Stanby로 서비스를넘긴다. 그러나 OPS 에서는 CTF, TAF 라는 설정을 통해 기존서버에 장애가 발생할 경우 해당 작업을 그대로 다른 서버로 넘길수 있다.

    HA 방식의 문제점은 각 서버별로 Storage를 가지고 있기 때문에 데이터의 동기화 문제도 발생한다. 즉 Active sever에 의해 변경된 작업이 Stanby sever에 반영되지 못한 경우 데이터의 불일치 문제가 생길수 있다. 따라서 OPS는 1개의 Storage를 공유해서 사용하기 때문에 데이터의 동기화 문제는 발생하지 않는다.

    HA는 두개의 서버로 구성되나 OPS나 RAC는 이론적으로 서버수의 제한이 없고 확장이 가능하다는 장점이 있다.

    OPS 에서도 RAC Ping 이라는 현상으로 인한 심각한 성능저하라는 또 다른 문제가 발생한다.

     은행비유 - 은행 창구를 두개로 운영하는데 금고를 하나로 두고 두 창구를 동시에 운영하는 방식이다.창구 하나에서 하던일을 나눠가지므로써 빨리 빨리 손님을 응대할 수 있다. 창구하나에서 문제가 생기면 담당자가 옆 창구에 이를 알리면서 업무를 처리하던 손님을 옆으로 넘기는 방식이다. 하나의 금고를 쓰기때문에 이중으로 금고를 관리했던 이전 방법에 비해 단순하다.

     

    RAC

    OPS에서도 RAC ping이라는 문제가 발생해서 심각한 성능저하가 발생한다.
    인스턴스 1에서 데이터를 변경하고 완료 했을때 그 내용을 인스턴스2가 조회한다면 인스턴스1의 변경내용은 반드시 디스크(storage)에 저장한 후에  인스턴스2로 복사해 올수 있다. 이 과정에서는 디스크를 사용하기 때문에 시간이 오래 걸린다. 이를 RAC ping 이라고 한다.

    어떤 Instance 에서 변경된 데이터를 다른 Instance 에서 참조하기 위해서는 Disk 로 저장 한 후 다시 불러와야 하는 것이다. 이때 지연이 발생한다.

    이러한 RAC ping 현상을 해결한 것이 9i 부터 등장한 RAC(Real Application Cluster)이다.

    Oracle 9i 버전부터는 서로 다른 Instance 에서 변경된 데이터를 디스크를 거치지 않고 바로 Instance 로 가져올 수 있는 기능인 Cache Fusion (캐시 퓨전) 이라는 기능이 사용된다.
    캐시퓨전은 서로 독립적인 인스턴스를 마치 하나의 인스턴스인것 처럼 데이터의 교환이 이루어지면서 섞여 있다라는 의미로 해석할 수 있을것 같다. 캐시퓨전 기능은 각 인스턴스를 하나의 서버처럼 만들어 주기 때문에 사용자는 어떤 서버에 접속했는지는 별로 중요하지 않다.

    • interconnect
      인스턴스간의 데이터 교환을 직접적으로 할 수 있도록 연결해 준다.
      interconnet가 있어서 cache fusion이 가능하다

    클러스터용 소프트웨어
    캐시퓨전 기능을 가능하게 해주는 프로그램을 클러스터용 소프트웨어라고 한다.
    여러 인스턴스에서 데이터가 조회되고 변경되어도 무결성이 유지되도록 관리해주며 각 인스턴스간에 생기는 변동사항을 조정하고 관리해주는 역할을 한다.
    이전에는 클러스터 프로그램을 오라클이 직접 만들지 않았다 10g R1버전부터 클러스터용 프로그램을 오라클에서 직접 만들어 제공하기 시작하였다.
    10g R1에서는 CRS (Cluster Ready Service)
    10g R2 버전부터는 Clusterware
    11g 에서는 ASM기능이 통합되어 grid라는 명칭으로 변경되었다.

     

     

     

    출처 : http://seandb.tistory.com/entry/RAC%EC%9D%98-%EA%B0%9C%EB%85%90

Designed by Tistory.