RAC 기본개념에서 몇가지 질의사항이 있습니다 0 3 4,940

by 섬광 [Oracle Admin] RAC L4 스위치 [2013.04.26 13:56:27]



1. Oracle RAC 개념을 공부하다가 인스턴스에 IP가 3개가 필요하다고 하는데
    Public Network는 DBA가 접근하는 IP
    Private Network는 인스턴스가 정보를 공유하는 IP라는 것 까지는 이해했습니다.
    그럼 나머지 한개는 무엇인지 궁금합니다.

2. RAC를 구성하게 되면 로드밸런싱이 된다고 하는데 
    스위치 없이 현재 부하가 적게 걸린 인스턴스를 가지고 오는 것이 맞나요?
    또한, 스위치 없이 인스턴스에 접근하면 대표로 지정된 인스턴스를 구성한 서버에
    로드가 많이 걸려 로드밸런싱이 의미가 없지 않나요?

3. RAC는 failover시에 connection이 종료하지 않고 사용자를 다른 서버로 이관시킬 수 있다고 알고 있는데
    이에 대해서 간략한 설명 부탁드립니다.
    논리적으로는 하나의 DB이지만 물리적으로 독립적인 하드웨어에 정보를 이관하는데 connection이 끊기지 않고
정보가 이전된다는게 조금은 이해가 되지 않아서요.

이제 막 Oracle을 공부하는 입장이라 두서 없이 질문을 드렸습니다.

질문의 개념이 뜬금없는건 아닌지는 모르겠네요.

고수님들의 많은 관심 부탁드립니다.





   
by 발로차는새 [2013.04.26 16:38:30]
1. 나머지 한개는 AP와 같은 클라이언트에서 들어오는 USER SESSION 이 접속할 Virtual IP 입니다, 노드 별로 가지고 있는 VIP 는 노드가 다운 되었을 경우 다른 노드로 넘어가게 됩니다.

2. 서버의 서비스/리스너 설정에 따라 다르지만, 일반적으로 서버의 부하 상태에 따라서 1번 노드로 접속을 시도 했어도 오라클의 판단에 의해서 2번 노드에 접속하게 될 수 있습니다. (Reason for Redirect Packets [ID 758145.1] 참조)

3. 내부적 으로는 (다운된노드로부터) DISCONNECT & (다른노드로) CONNECT 처리 이지만, 사용자가 느낄 수 없도록 처리되는것 입니다.

by 신이만든짝퉁 [2013.04.26 16:46:06]
1. 나머지 IP 하나인 VIP는 실제 서비스하는 데 사용됩니다. 클라이언트의 접속, failover 등에 사용됩니다.

2. RAC에서 지원하는 로드밸런스는 클라이언트 사이드 로드밸런스, 서버 사이드 로드밸런스가 있습니다.

   - 클라이언트 사이드 로드밸런스 : 클라이언트 쪽 tnsnames.ora 쪽에 load_balance=on 해놓고, address_list에 여러개의 노드주소를 등록하여 오라클 접속 시 랜덤하게 노드에 선택하여 부하를 분산(CPU 등의 부하율은 고려하지 않음)
  
   - 서버사이드 로드밸런스 : 서버쪽 init.ora에 remote_listener 들을 지정하고 pmon이 CPU부하를 계산하여 모든 노드 리스너에 관련정보 배포, 리스너는 부하정보를 토대로 커넥션을 수락하거나 리다이렉트 하는 식으로 접속을 분산

3. 지금 말씀하신 방법은 TAF(Transparent Application Failover)인 것 같습니다.
  
   동작방식은 예를 들어 설명합니다.

   환경 : RAC1, RAC2 2개의 노드로 구성된 RAC가 서비스중
    ㄱ. 클라이언트가 RAC1에 접속하여 100개의 row를 가져오는 select를 실행
    ㄴ. 50개 fetch 도중 RAC1 노드가 abort됨
    ㄷ. RAC2에 새로운 서버 프로세스 생성
    ㄹ. 클라이언트 세션정보 전달 및 트랜잭션 복구(일시적인 지연현상 발생)
    ㅁ. 나머지 50건 fetch

   RAC1와 맺은 세션은 끊어지고, RAC2와 새로운 세션이 맺어졌지만 사용자는 알수가 없습니다.


고수님들 잘못된 점이 있으면 알려주세요~

by 섬광 [2013.04.29 11:10:01]

답변주신

발로차는새님, 신이만든짝퉁님

정말 감사합니다.

오라클을 이제 처음 시작하는데 있어서
개념들이 조금 이해가 안됐는데
예제까지 주셔서 지금은 감이 잡힐것 같습니다.

공부 열심히 해야겠네요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입