• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cubrid Inside 5th Session 2 Ha Implementation
 

Cubrid Inside 5th Session 2 Ha Implementation

on

  • 2,077 views

 

Statistics

Views

Total Views
2,077
Views on SlideShare
2,072
Embed Views
5

Actions

Likes
1
Downloads
8
Comments
0

3 Embeds 5

http://www.slideshare.net 3
http://www.techgig.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cubrid Inside 5th Session 2 Ha Implementation Cubrid Inside 5th Session 2 Ha Implementation Presentation Transcript

    • CUBRID Heartbeat 구현
      작성자: 남창우
      소속팀 / 상위부서: DBMS 개발랩
      작성년월일: 2009-11-25
      문서범위(대외비)
    • 목차
      1. 배경
      1.1 Linux Heartbeat
      1.2 CUBRID HA
      2. CUBRID Heartbeat 구현
      2.1 개요
      2.2 구조
      2.3 시나리오 – Start Node
      – Monitor
      - Deregister
      – Change Node
      – Stop Node
    • 1. 배경
    • 1.1 Linux Heartbeat
      Linux Heartbeat
      The Heartbeat program is one of the core components of the Linux-HA (High-Availability Linux) project.
      • no fixed maximum number of nodes - Heartbeat can be used to build large clusters as well as very simple ones
      • resource monitoring: resources can be automatically restarted or moved to another node on failure
      • fencing mechanism to remove failed nodes from the cluster
      현재 resource manager는 pacemaker 프로젝트로 분리
    • 1.2 CUBRID HA
      Linux Heartbeat을 이용한 CUBRID HA 구성
      Slave Node
      Master Node
      copylogdb
      copylogdb
      Heartbeat
      Heartbeat
      ccm
      ccm
      lrm
      lrm
      applylogdb
      applylogdb
      cub_server
      cub_server
      heartbeat
      start/stop/monitor
      start/stop/monitor/promote/demote
    • 1.2 CUBRID HA
      Linux Heartbeat에 의한 문제점
    • 2. CUBRID Heartbeat 구현
    • 2.1 개요
      목표 및 기대 효과
      CUBRID HA 동작에 필요한 heartbeat 기능을 CUBRID 내에 구현
      손쉬운 CUBRID HA 구성
      Heartbeat에 의한 문제 최소화
      OS 의존성 제거
    • 2.2 구조
      cub_master내 heartbeat 기능 구현
      cub_master
      local resource manager
      cluster node
      manager
      heartbeat receiver
      local resource receiver
      cluster node entries
      local resource entries
      Heartbeat
      /UDP
      TCP or Unix Domain Socket
    • new node
      node #n
      node #1
      other cluster node #1
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      1. Join
      2. Registration
      2.3 시나리오 – Start Node
      Start Node
      • Join
      • 새로 시작된 노드가 클러스터 멤버로 참여
      • Registration
      • 로컬 관리 대상 리소스 프로세스의 등록
    • new node
      node #n (Slave)
      node #1 (Master)
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      1. start
      2. heartbeat
      join timeout
      [ hello, slave]
      2. heartbeat
      [ hello , slave]
      3. score calculation
      2.3 시나리오 – Start Node
      Join
      클러스터 멤버로 참여
      • 클러스터 내 마스터 노드가 이미 있는 경우
    • new node
      node #n (unknown)
      node #1 (unknown)
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      1. start
      2. heartbeat
      join timeout
      [ hello , slave]
      2. heartbeat
      [ hello , slave ]
      3. score calculation
      2.3 시나리오 – Start Node
      Join
      클러스터 멤버로 참여
      • 클러스터 내 마스터 노드가 없거나, 클러스터 내에서 최초로 시작된 노드인 경우
    • local process
      cub_master
      1. startup
      2. HA_REGISTER request
      [ process arguments, PID, UID, GID, … ]
      3. HA_REGISTER response
      [ resource-id ]
      4. start monitor
      2.3 시나리오 – Start Node
      Registration
      로컬 관리 대상 프로세스 등록
    • 2.3 시나리오 – Monitor
      Monitor
      • Cluster Node
      • 클러스터 멤버 노드의 상태를 감시
      • 마스터 노드의 상태가 비정상이면, 마스터 후보 노드가Failover 수행
      • Resource Process
      • 관리 대상 프로세스의 상태를 감시
      • 관리 대상 프로세스의 장애가 감지되면, 해당 프로세스를 재 시작함
      • HA mode
      • Master/Slave 프로세스의 현재 HA 모드를 감시
      • 노드와 프로세스의 모드가 불일치하면, 모드 변경 요청
    • node #n (slave)
      node (slave)
      node #1 (master)
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      exchange heartbeat interval
      1. exchange heartbeat
      2. heartbeat
      [ monitor / current-status ]
      2. heartbeat
      score calculation interval
      [ monitor / current-status ]
      3. score calculation
      2.3 시나리오 – Monitor
      Cluster Node
      자체 Heartbeat 을 이용한 클러스터 멤버 노드 상태 감시
      • 마스터 노드의 상태가 정상인 경우
    • node #n (slave)
      node (slave)
      node #1 (master)
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      exchange heartbeat interval
      1. exchange heartbeat
      2. heartbeat
      [ monitor / current-status ]
      2. heartbeat
      [ monitor / current-status ]
      score calculation interval
      3. score calculation
      2.3 시나리오 – Monitor
      Cluster Node
      자체 Heartbeat 을 이용한 클러스터 멤버 노드 상태 감시
      • 마스터 노드에 장애가 발생한 경우
    • local process
      cub_master
      registration
      2. detect process failure
      close
      1. process
      down
      fork and execute
      4. process started
      3. start process
      registration
      confirm process start timer
      5. confirm start
      2.3 시나리오 – Monitor
      Resource Process
      로컬 리소스 프로세스 장애 감지 및 재 시작
    • local process
      cub_master
      check HA-mode interval
      1. check HA-mode
      2. HA_CHANGEMODE request
      [ mode ]
      3. HA_CHANGEMODE response
      [ current-mode ]
      2.3 시나리오 – Monitor
      HA mode
      HA 모드가 설정된 프로세스의 상태 감시
      • 마스터 노드에서 관리 대상 프로세스의 HA 모드가 ‘standby’ 인 경우
    • local process
      cub_master
      registration
      1. execute stop process command
      2. remove process entry and kill process
      3. SIGTERM
      dereg timeout
      4. confirm dereg process
      5. SIGKILL
      2.3 시나리오 – Deregister
      Deregister Local Process
      더 이상 관리대상에 포함되지 않는 로컬 프로세스의 종료 및 등록 해제
    • node
      node #1
      node #n
      other cluster node #1
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      2.3 시나리오 – Change Cluster
      Reconfigure Nodes
      클러스터 멤버 노드의 설정을 변경
      1. reconfigure cluster
      2. reload cluster configuration
    • node
      node #n
      node #1
      other cluster node #1
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      1. Stop all local process
      2. Leave cluster
      3. Stop node
      2.3 시나리오 – Stop Node
      Stop Node
      • Stop all local processes
      • 모든 로컬 리소스 프로세스 종료
      • Leave Cluster
      • 클러스터 멤버 탈퇴
      • Stop Node
      • cub_master프로세스 종료
    • local process
      cub_master
      registration
      1. stop process
      2. SIGTERM
      dereg timeout
      3. confirm dereg process
      4. SIGKILL
      2.3 시나리오 – Stop Node
      Stop all resource processes
      모든 로컬 관리 대상 프로세스 종료
    • node
      node #n
      node #1
      other cluster node #1
      cub_master
      local process
      cub_master
      cub_master
      cub_master
      1. leave cluster
      2. heartbeat
      [ bye, unknown ]
      2. heartbeat
      [ bye, unknown ]
      2.3 시나리오 – Stop Node
      Leave Cluster
      Cluster 탈퇴 절차 수행
    • Thank you.