Cubrid Inside 5th Session 2 Ha Implementation
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Cubrid Inside 5th Session 2 Ha Implementation

on

  • 2,240 views

 

Statistics

Views

Total Views
2,240
Views on SlideShare
2,235
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 Presentation Transcript

  • 1. CUBRID Heartbeat 구현
    작성자: 남창우
    소속팀 / 상위부서: DBMS 개발랩
    작성년월일: 2009-11-25
    문서범위(대외비)
  • 2. 목차
    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
  • 3. 1. 배경
  • 4. 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
    • 5. resource monitoring: resources can be automatically restarted or moved to another node on failure
    • 6. fencing mechanism to remove failed nodes from the cluster
    현재 resource manager는 pacemaker 프로젝트로 분리
  • 7. 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
  • 8. 1.2 CUBRID HA
    Linux Heartbeat에 의한 문제점
  • 9. 2. CUBRID Heartbeat 구현
  • 10. 2.1 개요
    목표 및 기대 효과
    CUBRID HA 동작에 필요한 heartbeat 기능을 CUBRID 내에 구현
    손쉬운 CUBRID HA 구성
    Heartbeat에 의한 문제 최소화
    OS 의존성 제거
  • 11. 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
  • 12. 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
    • 13. 새로 시작된 노드가 클러스터 멤버로 참여
    • 14. Registration
    • 15. 로컬 관리 대상 리소스 프로세스의 등록
  • 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
    로컬 관리 대상 프로세스 등록
  • 16. 2.3 시나리오 – Monitor
    Monitor
    • Cluster Node
    • 17. 클러스터 멤버 노드의 상태를 감시
    • 18. 마스터 노드의 상태가 비정상이면, 마스터 후보 노드가Failover 수행
    • 19. Resource Process
    • 20. 관리 대상 프로세스의 상태를 감시
    • 21. 관리 대상 프로세스의 장애가 감지되면, 해당 프로세스를 재 시작함
    • 22. HA mode
    • 23. Master/Slave 프로세스의 현재 HA 모드를 감시
    • 24. 노드와 프로세스의 모드가 불일치하면, 모드 변경 요청
  • 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
    로컬 리소스 프로세스 장애 감지 및 재 시작
  • 25. 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
    더 이상 관리대상에 포함되지 않는 로컬 프로세스의 종료 및 등록 해제
  • 26. 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
  • 27. 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
    • 28. 모든 로컬 리소스 프로세스 종료
    • 29. Leave Cluster
    • 30. 클러스터 멤버 탈퇴
    • 31. Stop Node
    • 32. 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
    모든 로컬 관리 대상 프로세스 종료
  • 33. 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 탈퇴 절차 수행
  • 34. Thank you.