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

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,273
On Slideshare
2,268
From Embeds
5
Number of Embeds
3

Actions

Shares
Downloads
8
Comments
0
Likes
1

Embeds 5

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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.