본문 바로가기

IT관련

Oracle CTF, TAF, SCAN 에 대한 간략한 설명, 이해

오라클 RAC DB (이중화된 DB) 에서 Fail Over 를 얘기할 때 나오는 용어가 CTF, TAF, SCAN 입니다.

기본적으로 RAC(Grid 또는 Cluster 라고도 함)를 설치하게 되면 CTF 와 SCAN 은 기본으로 세팅되어 있습니다.

TAF 정도만 신경써서 추가적으로 세팅해주면 됩니다.

 

* CTF : Connection Time Failover

  - 클라이언트에서 RAC DB로 접속을 시도했으나, 해당 DB서버가 장애가 발생하여 접속이 안되는 경우,

    일단 에러를 받고, 다음 접속할 때 다른 살아있는 DB서버로 자동 접속시켜주는 기능.

 

* TAF : Transparent Application Failover

  - 위 CTF 설정에 추가적으로 몇줄 더 세팅해주면 되는데, CTF가 일단 에러를 받는 것과 달리 TAF는 에러를 받지 않고,

    다른 살아있는 DB서버로 Failover 해줍니다. 마치 장애가 발생하지 않은 것처럼...

  - TAF 는 Client Side 방식과 Server Side 방식이 있습니다.
    자세한건 여기 참조요 => 2가지 TAF 방식 (Client Side TAF, Server Side TAF)

 

* SCAN : Single Client Access Name

  - SCAN 도 CTF 처럼 동작하기는 하지만, 출생목적이 좀 다릅니다.

  - SCAN 은 여러 RAC 노드(DB서버)를 하나의 서버인양 느끼도록 공용(공통) Name (IP)을 사용하도록 해주는 기능입니다.

  - 그래서 사용자는 SCAN IP 로 접속하면 이걸 다시 1번 RAC Node 로 접속시켜주고, 1번노드에 문제가 생기면 2번노드로 접속시켜주는 방식입니다. 마치 위 CTF 와 비슷하죠~~

  - 차이점은 CTF는 클라이언트쪽에 RAC DB 노드의 모든 IP를 기술해줘야 하고, SCAN 의 경우는 클라이언트쪽에 Scan IP 한개만 기술해주면 됩니다. 즉, RAC 노드가 8개서버로 되어 있다면, CTF/TAF의 경우에는 Tnsnames.ora 파일에 8개의 IP Address 를 기술해줘야 하는데, SCAN의 경우에는 달랑 1개의 IP 만 기술해주면 되죠~ 참 편하죠~잉~~

 

 

백날 말로 얘기해봤자~ 잘 이해 안되죠~ 아래 예제를 보면 확실히 감이 올겁니다.

 

위는 3가지 방식을 tnsnames.ora 에 세팅한 샘플입니다.

맨위에 있는 세팅이 Scan IP 를 사용한 것입니다. (ol6rac-scan) 이라는 이름을 사용했죠~ 이건 도메인명(Domain Name) 입니다. 매칭되는 IP Address가 있죠~  /etc/hosts 파일에 있을 수도 있고, DNS 서버에 등록되어 있을 수도 있습니다.

 

두번째 CTF 라는 TNS명을 사용한 세팅은 CTF 세팅 샘플입니다.

앞서 얘기한대로 RAC의 모든 노드를 다 기술해줘야 합니다. 제껀 2노드 RAC 여서 2개를 세팅했습니다.

역시나 위 Scan 의 경우처럼, ol6rac1-vip, ol6rac2-vip 는 매칭되는 IP Address 가 있는 도메인명입니다.

위 CTF의 경우는 ol6rac1-vip 로 접속을 시도하고(해당 서버의 리스너를 찾아들어갑니다), 만약 접속이 안되면 그 다음 ol6rac2-vip 로 접속을 시도하는 형태로 Failover 가 되는 겁니다.

 

세번째 TAF 라는 TNS명을 사용한 세팅은 TAF 세팅 샘플입니다.

CTF와 똑같은데, 마지막에 FAILOVER_MODE 라는 것이 추가적으로 더 있을 뿐입니다.

 

 

SCAN 에 대해 좀더 이해를 돕기 위해 아래 그림을 참조하면 좋을듯 합니다.

 

(출처 : Oracle MOS 노트 #887522.1)

위 그림을 보면 오른쪽에 있는 4개의 DB서버들은 각각 로컬 리스너가 떠 있습니다.

CTF/TAF 는 이 4개의 로컬 리스너 각각을 다 클라이언트에 있는 tnsnames.ora 파일에 언급해줌으로써 Failover를 할 수 있도록 세팅하는 방식입니다.

SCAN 은 Scan Listener 라는 것이 추가적으로 뜹니다. 보통 3개의 Scan IP 를 DNS에 등록해서 사용하는 것을 오라클에서 권고하고 있습니다만, 1개만 사용해도 됩니다.

Scan Listener 는 모든 노드에 다 띄우는게 아니고 4개 노드중에 아무 노드에나 띄우면 됩니다.

그러니까 각 RAC DB서버들에는 Local Listener가 각각 1개씩 떠 있고, 이 위에 추가적으로 Scan Listener가 하나더 있는 구조입니다.

 

Scan Listener가 떠 있는 노드가 장애가 나서 서버가 다운되면, 자동으로 다른 쪽 살아있는 노드에 Scan Listener 가 자동으로 뜨게 됩니다.

 

 

좀더, 심화 학습을 해보려면, 아래 웹페이지,블로그 들에서 상세히 설명하고 있으니 참고하시기 바랍니다.

 

TAF 와 CTF 개념

TAF 란?

Oracle RAC SCAN 리스너 세팅관련 설명

SCAN 재구성 방법

 

이 외에도 구글에서 "오라클 TAF", "오라클 SCAN" 으로 검색하면 짜증날 정도로 많이 나옵니다. ㅋㅋ