이 글을 쓰게 된 계기
... 2023년 SSAFY의 자율프로젝트에서 채팅시스템 개발을 또 맡게 된 나.... 이번에는 클러스터 모드로 레디스를 운영해보기로 한다... 야심차게 EC2도 한 개 더 빌린 상황.. 그러나 제목과 같은 목표를 이뤄내는 글은 없었다...!!! 결국 내가 최초가 되기로 했다....
많은 이들에게 도움이 되길 바란다
당부의 말
구조

최종 목표와 같이 두 개의 EC2로 클러스터 모드를 구축할 것이다,
그러기 위해서는 총 6개의 *노드가 필요하며 master노드가 3개, slave노드가 3개가 될 것이다.
또한 master와 slave두 쌍은 하나의 EC2에 놓고 나머지 한 쌍은 남은 EC2에 놓을 것이다.
*노드란 클러스터에서 쓰이는 레디스 하나를 뜻함
.
.
..
사실 이 구조에는 취약점이 있다...!!!
만약에 그림 속에서 하나의 EC2가 다운돼버린다면...? (😨)
slave노드가 같이 사라진다. (slave노드는 master노드의 복제본이며, master노드가 다운됐을때 master로 승격된다.) 즉 EC2가 다운됐을 때는 복구 불가능한 상황
그렇다면 이 문제를 어떻게 해결해야 하는가? 정답은 바로 master노드와 slave노드를 같은 EC2에 두지 않는 것이다.

이미지 출처
결론적으로 이미지와 같은 구조를 그려야 한다. 세 개의 EC2가 필요한데... EC2 두개로 저렇게 구현한 데는 이유가 있다...
=> EC2 대여를 두 개만 신청한 바람에 프리티어 EC2로 해결하려 했는데 VPC가 달라서 통신이 안됐다...(ㅜㅜ) VPC Peering이라는 방법을 찾았었는데 Private IP로 통신하는 방식이라서, Public IP로 통신해야하는 클러스터 모드에선 불가능할 것 같아 포기했다.
(VPC Peering을 시도하려면 SSAFY측에 Peering 설정 허용해달라고 부탁해야했는데, 계정에 접근해야하는 일이라 안 될 것 같았다. 그렇다고 하나 더 대여하자니 예산에 안맞아서 프리티어로 될 줄 알고 두 개만 빌린 것.)
.
.
.
.
아무튼 여러 우여곡절이 있지만 개발이 끝나고 실제로 테스트했을 때 EC2가 다운되는 일은 없었다...^^;; 다만 아쉬움이 있을 뿐..
좀 더 실용적이고 전문적으로 구축하고 싶은 분들은 다음 글을 보고 실습할 때 slave를 다른 EC2에 있는 노드로 설정하면 된다. 그 방법 또한 설명할 것이니 문제는 없을 것이다.