EC2에 redis 설치하기

노누리·2022년 5월 3일
2

이전에 로컬에 redis를 깔아서 실행했었다. 로컬에 깔아서 사용하는 것이다 보니 로컬에서 redis 서버를 꺼버리면 redis 또한 사용할 수 없다는 단점이 있다.

이를 해결하려고 방법을 찾아보니 대표적으로 AWS를 사용하는 방법이 있었다. 그 중에서도 두 가지 방법이 있었는데

1. AWS에 ElastiCache를 사용해서 redis 캐시 서버 만들기
2. AWS의 EC2에 직접 redis 설치하기

처음에 1번 방식을 이용해서 서버를 만들었는데 vscode로 연결하려고 하니 연결이 되지 않았다. 이유를 알아보니 보안상 ElastiCache는 AWS의 내부에서만 사용이 가능하다는 것이었다.

난 어떻게든 될 것이라며... 삽질을 몇 시간동안 했고 프로젝트 마감기한이 있어 포기할 수 밖에 없었다.

그러고 선택한 방법이 2번이다.

ssh로 EC2에 접속한 뒤 직접 redis를 설치하여 백그라운드로 돌려놓는 방식이었는데 그 과정에서 엄청난 실패와 삽질이 있었다....

잊지 않고 다음엔 바로 성공하기 위해 기록한다!

EC2 인스턴스 생성하기

우선 AWS의 EC2 인스턴스를 생성해준다. 생성하는 방법은 간단하니 생략한다.

이후 보안그룹을 설정해주어야 하는데 인스턴스를 생성할 때 ssh, https, http 를 체크해주면 기본적으로 이 세 포트는 접근이 가능하도록 보안그룹이 열려있다.

하지만 우리는 redis로도 접속을 해야하기 때문에 보안그룹에 들어가서 TCP에 6379번 포트를 열어준다.

캡쳐 사진 아래에 SSH 포트도 있다!

그리고 탄력적 IP에 들어가서 IP를 하나 생성해주고 위에서 만든 EC2 인스턴스를 연결해준다.

ssh -i EC2

이제 EC2 서버에 접속해보자.

인스턴스를 선택하고 오른쪽 위에 연결을 누르면 SSH로 연결할 수 있는 명령어가 뜬다.

  • ssh -i ~ 와 같은 형식으로 적혀있을 건데 그것을 복사해준다.

  • 인스턴스 생성 시 새로 발급받은 보안키 페어가 있는 곳으로 이동하여 명령어를 실행시켜 준다.

이제 EC2에 접속이 완료되었다!!

여기서 계속 실패한 점...

redis 설치시 안되서 인스턴스를 삭제하고 새로 생성한 뒤 원래 있던 보안키에 연결하니까 오류가 떴었다.
찾아보니 보안키 연결하는 과정에서 문제가 있었다. 그럴 때는 아래와 같은 명령어를 쳐주면 다시 접속이 가능하다.

ssh-keygen -R [EC2 ip]

그리고 또 다른 오류가 생겼었는데 자꾸 ssh 명령어가 실행되지 않고 Connection timeout이 떴었다. 그럴때는 여러 이유를 찾아보아야 하는데

  • 보안그룹에 22번 포트로 ssh 가 열려있는지
  • 인스턴스 상태를 재부팅 시키기
  • 혹은 인스턴스 상태를 중지했다가 다시 실행하기

등의 방법이 있다. 나는 22번 포트의 접근 ip를 내 ip로 바꾸고 인스턴스를 중지한 뒤 재부팅하니까 접속이 가능했다.

본론) EC2에 redis를 설치하자

<나의 삽질 일기>

제일 많은 시간 소모가 있었던 구간이다. 여러 블로그들을 확인하고 찾아봤었는데 다양한 오류가 있었다...

처음 들어간 블로그에서는

sudo apt-get install redis-server

명령어를 이용하길래 그대로 따라 치니 apt-get이 없다는 오류가 떴었다. 알고보니 yum 사용으로 바꼈다고 하여

sudo yum install redis-server

로 바꿨더니 계속 그런 패키지는 없다고 뜨는 것이다. 여기서 시간을 한참 잡아먹고 다른 포스팅을 보니 redis 파일을 직접 다운받아서 실행하는 방법이 있었다.

그 방법을 참고하여 그대로 따라했더니 성공했다!내가 접속할 때도 되고, 다른 팀원이 접속해도 연결이 됐다. 그런데 갑자기 연결이 끊기더니 이후로 계속 연결이 되지 않았다.

결국 인스턴스를 삭제하고 새로 생성해서 접속했다. << 이 과정을 여러 번 반복하다가 겨우 성공했다.!!!! 그때 내 기쁨이란...

정말로 시작하는 EC2에 redis 설치하는 법

https://mygumi.tistory.com/133

위의 블로그를 참고해서 설치했다!

EC2 서버에 접속한 상황에서

sudo yum update
sudo yum install gcc make

해준다. 본인은 yum update시에 이미 설치가 되어 있어서 더 이상 설치하지 않는다는 문구가 떠서 그냥 다음으로 넘어갔다.

sudo wget http://download.redis.io/redis-stable.tar.gz
sudo tar xvzf redis-stable.tar.gz
cd redis-stable
make

위의 명령어가 잘 실행된다면 설치가 끝난것이다!

혹시 make 시에 오류가 뜨거나 안된다면

sudo yum install tcl
make distclean
make

를 해주자.

src 폴더에서

./redis-server
redis-cli

를 한 뒤 ping을 치면 pong이 나오면 잘 된 것이다.

자세한 건 위의 사이트에 들어가면 설명이 잘 나와있으니 참고하자.

sudo nano /etc/redis/6379.conf

에서 설정을 바꿔주면 된다.

bind 0.0.0.0
daemonize yes
logfile /var/log/redis_6379.log
dir /var/redis/6379

bind 0.0.0.0을 해줘야 나 이외에도 redis에 접속이 가능하다.
daemonize yes를 해주면 백그라운드에서도 돌아간다.

위 사이트대로 설정을 마치고 나면 redis-server가 실행되고 있다.

sudo service redis-server start

를 했을 때 Starting redis-server 가 뜨고 별 다른 움직임이 없길래 또 잘못되었나 했는데 제대로 실행된것이니 안심하고 [ctrl]+C 누르자.

이렇게 하고나면 redis 설정이 모두 끝났다.

혹시나 vscode와 연결했을 때

이러한 오류가 생긴다면 이번 업데이트로 바뀐 보안 정책 때문이니 아래와 같이 따라해주면 된다.

1. 위에서 설정한 conf 파일에 들어가서 `protected-mode no`로 바꿔주거나
2. redis-cli에 접속하여 `config set protected-mode no` 해준다.

나는 1번 방법도 잘 안되서 2번 방식으로 성공했다.

이젠 정말 잘 실행될것이다!!!!

기억하기

  • EC2 보안그룹 잘 살펴보기 (6379번 포트, 22번 포트)
  • redis 설치후 conf 파일 설정하기
  • protected-mode no로 설정하기

참고
https://handr95.tistory.com/30
https://mygumi.tistory.com/133
https://bluexmas.tistory.com/1103
https://realmojo.tistory.com/183
https://velog.io/@ssoop/AWS-EC2에-Redis-설치

profile
백엔드 개발자입니다.

1개의 댓글

comment-user-thumbnail
2023년 1월 22일

많은 도움 받고 갑니다~~
당신 👍

답글 달기