Your SlideShare is downloading. ×
0
CUBRID Heartbeat 구현<br />작성자: 남창우<br />소속팀 / 상위부서: DBMS 개발랩<br />작성년월일: 2009-11-25<br />문서범위(대외비) <br />
목차<br />1. 배경<br />1.1  Linux Heartbeat<br />1.2  CUBRID HA<br />2. CUBRID Heartbeat 구현<br />2.1 개요<br />2.2  구조<br />2.3 ...
1. 배경<br />
1.1  Linux Heartbeat<br />Linux Heartbeat <br />The Heartbeat program is one of the core components of the Linux-HA (High-...
 resource monitoring: resources can be automatically restarted or moved to another node on failure
 fencing mechanism to remove failed nodes from the cluster</li></ul>현재 resource manager는 pacemaker 프로젝트로 분리<br />
1.2 CUBRID HA<br />Linux Heartbeat을 이용한 CUBRID HA 구성<br />Slave Node<br />Master Node<br />copylogdb<br />copylogdb<br />H...
1.2 CUBRID HA<br />Linux Heartbeat에 의한 문제점<br />
2. CUBRID Heartbeat 구현<br />
2.1  개요<br />목표 및 기대 효과<br />CUBRID HA 동작에 필요한 heartbeat 기능을 CUBRID 내에 구현<br />손쉬운 CUBRID HA 구성<br />Heartbeat에 의한 문제 최소화<...
2.2 구조<br />cub_master내 heartbeat 기능 구현<br />cub_master<br />local resource manager<br />cluster node <br />manager<br />h...
new node<br />node #n<br />node #1<br />other cluster node #1<br />cub_master<br />local process<br />cub_master<br />cub_...
새로 시작된 노드가 클러스터 멤버로 참여
 Registration
로컬 관리 대상 리소스 프로세스의 등록</li></li></ul><li>new node<br />node #n (Slave)<br />node #1 (Master)<br />cub_master<br />local pro...
2.3  시나리오 – Monitor<br />Monitor<br /><ul><li> Cluster Node
클러스터 멤버 노드의 상태를 감시
마스터 노드의 상태가 비정상이면, 마스터 후보 노드가Failover 수행
 Resource Process
관리 대상 프로세스의 상태를 감시
관리 대상 프로세스의 장애가 감지되면, 해당 프로세스를 재 시작함
 HA mode
 Master/Slave 프로세스의 현재 HA 모드를 감시
노드와 프로세스의 모드가 불일치하면, 모드 변경 요청</li></li></ul><li>node #n (slave)<br />node (slave)<br />node #1 (master)<br />cub_master<br...
Upcoming SlideShare
Loading in...5
×

Cubrid Inside 5th Session 2 Ha Implementation

1,487

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,487
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Cubrid Inside 5th Session 2 Ha Implementation"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×