일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개념
- mysql
- 이론
- 명령어
- dockerfile
- Javascript
- gns3
- nodejs
- PAT
- docker
- express
- node.js
- 네트워크
- RAPA
- Docker Swarm
- 용어정리
- 쿠버네티스
- 클라우드
- IaaS
- 실습
- MongoDB
- PaaS
- OpenStack
- worker
- network
- kubernetes
- 도커
- RAID
- git
- Docker-compose
- Today
- Total
융융이'Blog
[이론] 도커 스웜 - 뗏목 합의 알고리즘이란?(Raft consensus algorithm) 본문
[이론] 도커 스웜 - 뗏목 합의 알고리즘이란?(Raft consensus algorithm)
바로퇴장 2020. 6. 15. 17:46
여러 서버 중 일부에 장애가 생겨도 제 기능을 유지하도록 하는 합의 알고리즘이다.
합의 알고리즘(Conensus Algorithm)
합의 알고리즘이란 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘이다.
서버에서 명령을 실행하기 위해 다른 서버의 합의를 요청한다. 각 서버에 문제가 없는 경우 동일한 명령을 처리하고, 동일한 결과를 생성하고, 동일한 상태에 도달한다.
장애 허용 분산 시스템(fault-tolerance distributed system)
시스템 중 일부에 오류가 발생해도 정상적으로 작동할 수 있도록 하는 시스템이다. 마치 4발 자전거에서 바퀴 하나가 고장나도 굴러가는 것처럼 말이다.
뗏목 알고리즘의 진행
상태 시스템과 로그
각 서버에 상태 시스템과 로그가 있다.
여기서 상태 시스템은 오류를 허용하려는 특징을 지닌다. 여러 서버 중 특정 서버에 장애가 생겨도, 클라이언트는 정상 작동하는 다른 상태 시스템과 상호작용할 수 있다.
각 상태 시스템은 각 로그로부터 입력(input)을 받는다. 위에서 본 합의 알고리즘은 서버의 로그에 있는 명령을 합의하는 데에 사용된다.
합의 요청
서버가 명령을 실행할 때 다른 서버에게 합의를 구한다. 한 서버가 명령을 적용하면 다른 서버는 다시 그 명령을 적용할 필요 없다.
반면, 장애가 있는 서버가 소수가 아니라 다수라면 더 이상의 진행은 중단되나, 명령으로 인한 잘못된 결과는 반환하지 않는다.
뗏목이 완변한 경우
각각의 명령을 적용하고 다른 서버에게 합의를 요청한다. 잘 작동한다.
일부 뗏목에 문제가 생긴 경우
각각의 명령을 장애가 없는 서버에 대해서만 적용하고 남은 서버끼리 진행한다. 장애가 생긴 서버는 더이상 작동하지 않는다.
다수 뗏목에 문제가 생긴 경우
더 이상의 합의 요청이 의미가 없어져 명령이 진행되지 않는다.
자세한 내용 : https://raft.github.io/
'2022이전 > Docker&Kubernetes' 카테고리의 다른 글
[개념] DinD(Docker in Docker)와 DooD(Docekr out of Docker) (0) | 2020.06.16 |
---|---|
도커 vs 쿠버네티스 (0) | 2020.06.16 |
[실습+명령어] Docker Swarm (0) | 2020.06.15 |
[개념] 도커 스웜(Docker Swarm)이란? (0) | 2020.06.15 |
[명령어] Docker-Compose 사용한 컨테이너 운용 (0) | 2020.06.15 |