반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • nextjs
  • 나의 해방일지
  • 전공 요약 #운영체제
  • 전공 요약 #네트워크
  • 백준
  • 공간복잡도
  • 전공 요약 #데이터베이스
  • 언어
  • 알고리즘
  • C++
  • GraphQL
  • 티스토리챌린지
  • 삼성SW역량테스트
  • A형
  • 기계식키보드 #nuphy
  • 전공요약
  • 삼성SDS
  • 면접
  • 오블완
  • Next.js #graphql #tailwind.css

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

인프라 지식 - Database RAC Node Eviction(추방)
인프라/Database

인프라 지식 - Database RAC Node Eviction(추방)

2021. 6. 2. 23:18
728x90
반응형

OCSS (Oracle Cluster Synchronization Service)


소개

Clusterware의 OSSD 프로세스는 CSS 서비스를 제공한다.
여러 Hearbeat 매커니즘을 통해 실시간으로 클러스터 상태 모니터링

역할

  • 클러스터 기본 서비스 (클러스터 그룹 서비스, 클러스터 locking)
  • 여러 Hearbeat 매커니즘을 통해 실시간으로 클러스터 상태 모니터링
  • 프로세스 상태, 특히 DB 인스턴스 상태를 모니터링 함

 

Background Processes

  • ocssd.bin (CSSD)
    스레드 하나는 Network Hearbeat를 모니터링, 하나는 Disk Hearbeat를 모니터링 함.
    다중 스레드 프로세스, 높은 우선순위로 실행됨.
    CPU 사용률이 100%일 때 다른 프로세스도 선점해버린다.
    시작 순서 : INIT → init.ohasd → ohasd → ohasd.bin → cssdagent → ocssd → ocssd.bin

  • cssdmonitor (CSSD Monitor)
    CSSD 모니터링의 중복성 제공
    다중 스레드 프로세스, 루트 사용자로 높은 우선 순위로 실행
    시작 순서 : INIT → init.ohasd → ohasd → ohasd.bin → cssdmonitor

  • cssdagent (CSSD Agent)
    ocssd.bin 생성 담당, 노드 모니터링 및 Hang에 대한 CSSD 프로세스
    다중 스레드 프로세스, 루트 사용자로 높은 우선 순위로 실행
    시작 순서 : INIT → init.ohasd → ohasd → ohasd.bin → cssdagent

 

 

Heartbeat 매커니즘 소개

10g R2 (10.2.0.X) 이후로 Cluster를 구성하는 Node의 상태를 체크하기 위해 2가지 방법을 순차적으로 사용한다.
비정상 상태로 판단되면 Split-Brain 현상 방지하기 위해 서버를 Reboot 시킨다.

  1. Network Hearbeat (NHB)
    inter-connect 네트워크를 통한 Heartbeat (CSS Misscount)
    inter-connect 네트워크에 문제가 생기면 정의된 Misscount 동안 Network 복구되기를 기다린다.
    이때 DB 관련 Service 는 Hang-Up 발생.
    misscount 동안 Network 복구 되지 않으면 양 Node간 Data 정합성을 위한 Split-Brain 현상 방지하기 위해
    비정상 노드를 Evict(추방) → I/O Fencing → System Rebooting

    Oracle 10g R1 : 최대 600s (10m)
    Oracle 10g R2 : 최대 120s (2m)

    운영체제 별 Default 값
    OS Oracle10g(R1 & R2) Oracle11g
    Linux 60s 30s
    Unix 30s 30s
    VMS 30s 30s
    Windos 30s 30s


  2. Local Hearbeat (LHB)
    CSSD 와 두 모니터 (cssdagent, cssdmonitor) 사이에 1초마다 ocssd.bin의 전송 스레드는 NHB, LHB를 동시에 전송한다.
    두 모니터 (cssdagent, cssdmonitor) 가 css misscount-3초 = 27초 동안 LHB를 받지못하면 모니터 데몬이 노드 Rebooting 시킴.

  3. Disk를 통한 Hearbeat (Voting Disk Check)
    Voting Disk 에 노드별로 I/O를 성공하면 살아있다고 Marking 한다. 실패하면 Offline으로 표기
    이 시간동안 Voting Disk에 I/O를 실패한 노드를 Reboot 시킨다.

    Oracle 10g R2 부터 여러 개 즉, n개 (최대 31개)의 Voting Disk 를 가질 수 있다.
    → 어디서는 최대 15개라는데 버전별로 차이 있는듯 함. (최소 3~5개 권장)
    Voting Disk 는 홀수 개 존재하며, 과반 수 이상 I/O 성공해야 성공으로 인정

    1) short disktimout (SDTO) : 긴급상황
       Network hearbeat 실패 시 디스크 검사는 짧게만 수행한다.
       (Default) css misscount - reboottime = 30초-3초 = 27초


    2) Long disktimeout (LDTO)
       Network hearbeat 성공 시 디스크 검사를 길게 수행한다.
       (Default) 200초

  4. reboottime
    CSS 데몬이 추방(제거)된 후에 노드 Reboot이 완료되기까지 걸리는 시간
    (Default) 3초


Eviction 을 위한 조건

1차 : Network Ping 2차 : Disk Ping Reboot 여부
misccount 이내 성공 (30s) misccount 이내 성공 (30s) N
misccount 이내 성공 (30s) misccount 이내 실패 (30s)
Long disktimeout (LDTO) 이내 성공 (200s)
N
misccount 이내 성공 (30s) Long disktimeout (LDTO) 이내 성공 (200s) Y
misccount 이내 실패 (30s) misccount 이내 실패 (30s)

→ 이건 short disktimout (SDTO) 를 의미하는 것인가? 찾아봤지만 확인이 어려움..
Y

 

 

용어 정리

    • Split-Brain
      클러스터 노드들이 private interconnect 를 통해 상호 연결 실패했을 경우 발생
      개별 노드가 잘 동작하는 상태에서, 각각 유저 커넥션을 받아들이고 독립적으로 작업을 하는 것이다.
      (뇌가 두개가 되어버린 상태) 이렇게 되면 데이터 무결성에 대한 문제가 생긴다.

    • Cluster Interconnect
      클러스터의 노드만 액세스 가능한 스위치이다.
      인스턴스 간 통신을 위해 Cache Fusion 사용함.
      Clusterware는 1-4 개의 HAIP 주소를 생성함.
      로드 밸런싱

    • Node Eviction
      클러스터 일관성 유지하기 위해
      Critical Issue가 생겼거나 정의된 시간 내 응답 없는 노드를 강제로 내보내는 것이다.

    • I/O Fencing / Node Fencing
      노드에서 클러스터 기능이 실패했지만, OS Level에서는 여전히 실행중인 것.
      복구 프로세스가 시작된 후 실패한 DB 인스턴스에서 남아있는 Write 작업이 스토리지에 도달함.
      이러한 Write 작업은 더 이상 올바른 serial order 이 아니므로, 데이터 일관성 손상시킬 수 있음.
      따라서 클러스터 노드가 실패하면 실패한 노드는 모든 공유 디스크 장치/디스크 그룹에서 차단됨.



반응형
저작자표시 동일조건 (새창열림)

'인프라 > Database' 카테고리의 다른 글

인프라 지식 - Database HA Cluster, RAC  (0) 2021.05.31
    '인프라/Database' 카테고리의 다른 글
    • 인프라 지식 - Database HA Cluster, RAC
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바