본문 바로가기
Database/Redis

[Redis] 레디스 Relplicaof 가 안될 때 bind port 허용하기

by daisy035510 2023. 5. 25.
반응형

Redis에서 2개의 EC2 서버로 Replication을 진행하려고 했는데

서비스가 떠있음에도 불구하고 통신이 안되는 문제점이 있었다

 

상황



1. AWS EC2 2개의 인스턴스를 사용하고 각각 인스턴스에 Redis 설치 후 Replication 을 사용하려고 했음
2. 같은 보안그룹 설정하고 6379 port를 열였는데 EC2 <-> EC2 끼리 통신이 안되는 현상 -> Replication 실패

 

 

 

점검


 

첫번째 EC2 와 두번째 EC2는 같은 보안그룹을 사용하고 아래와 같이 6379 포트를 허용해줬다

 

 

첫번째 EC2 인스턴스(my-first-redis)에서 

ps -ef | grep 6379

명령어로 redis 프로그램 실행 확인

 

 

두번째 EC2 인스턴스(my-second-redis)에서

ps -ef | grep 6379

명령어로 redis 프로그램 실행 확인

 

my-first-redis, my-second-redis에 redis가 둘 다 프로세스가 떠 있지만

telnet 을 사용해 확인해보니 my-first-redis ->  my-second-redis 로 6379 통신이 실패한 것을 알 수 있다.

 

 

해결


원인은 redis 자체의 bind 된 IP 때문

 

vi /etc/redis/redis.conf

를 실행하여 redis config 파일을 열어준다

 

<before>

 

 

 

 

 

 

 

 

<after>

bind 부분을 찾아 127.0.0.1 -> 0.0.0.0 으로 위의 이미지 처럼 수정한다

  • 127.0.0.1 : 자기 자신(my-second-redis)
  • 0.0.0.0 : 모든 IPv4 주소 의미

0.0.0.0으로 바꾸는 이유는 다른 서버와 통신하기 위해서!

 

 

위의 과정을 첫번째 EC2, 두번째 EC2 모두 적용 후 재시작을 한다

service redis restart

 

다시 첫번째 EC2 -> 두번째 EC2 로 telnet 을 시도한다

telnet 172.31.39.103 6379

 

 

위의 이미지처럼 정상 통신되는 것을 확인할 수 있다

 

 

첫번째 EC2(my-first-redis)가 master, 두번째 EC2(my-second-redis) 가 slave 역할이기 때문에 두번째 EC2(my-second-redis) 에서 replication 을 설정한다

 

redis-cli

를 입력 후 

 

replicaof 172.31.47.242 6379

-> replicaof master private IP 6379

 

처럼 정상으로 설정된 것을 확인할 수 있다.

반응형

'Database > Redis' 카테고리의 다른 글

[Redis] Redis의 구조  (0) 2023.05.30
[Redis] Redis란? Redis의 기본 개념  (0) 2023.05.30