redis sentinel

변주환·2024년 3월 3일

Radis

목록 보기
1/3

설치 in ubuntu ec2

  1. 업데이터 및 업그레이드 : 서버의 패키지 리스트를 업데이트하고 기존 패키지를 최신 버전으로 업그레이드한다.

    sudo apt update
    sudo apt upgrade
  2. redis 설치

    sudo apt install redis-server
    # redis 가 설치되는 곳은 cd /etc/redis 이 경로 아래로 설치된다.
  3. redis 설정 변경 : supervised 지시어를 찾아 no 대신 systemd로 변경합니다. 이렇게 하면 systemd가 Redis 서비스를 더 잘 관리할 수 있습니다.

    sudo nano /etc/redis/redis.conf
  4. redis 서버 시작 : 변경사항을 적용하고 redis 서버를 시작한다.

    sudo systemctl restart redis.service
  5. redis 서버 상태 확인

    sudo systemctl status redis
  6. redis 테스트

    redis-cli ping
  7. redis 서버 확인 : 어떤 ip 어떤 포트에 redis 가 떠있나 확인가능

    ps -ef | grep redis

Redis 설정

Sentinel 은 1대만 설치해도 되지만, 장애가 발생하면 monitoring 과 failover 가 불가능 하기 때문에 3대로 설치한다.

Sentinel 은 홀수 개로 설치해야하는데, 이유는 장애여부와 failover tl sentinel service 가 다수결로 의사를 결정 하기 때문이다.

이제 기존에 만들어서 ec2 에 띄운 인스턴스의 이미지를 복사해서 똑같이 새로하나 만들어준다.



별도의 작업 없이 그대로 이름만 바꿔서 생성해준다.

생성된 이미지는 외쪽 이미지 메뉴에서 확인 할 수 있다.

이제 생성된 두번째 인스턴스로 들어가서 replica(부계정) 설정을 해준다.

redis-cli
REPLICAOF {처음만든 인스턴스 프라이빗 IPv4} {포트(6379)}

이제 로그를 한번 봐보면

/home/ubuntu# tail -f /var/log/redis/redis-server.log

started 만 뜨고 동작은 되지 않고 있다. 이유는 보안설정을 하지 않았기 때문에 두 redis가 통신이 안되고 있다. 6379포트를 개방해야한다.

이게 포트 설정을 해도 잘 안될때가 있다 그럴때는 master redis 의 redis.conf 파일의 bind 를 bind {private 포트} 127.0.0.1 으로 변경 후 꼭 재시작 해주자

이후 확인해보면 정상적으로 replica 설정이 되어있는걸 확인 할 수 있다.

이제 테스트로 key 값 하나를 넘겨보면 잘 넘어오는걸 확인 할 수 있다.

set byeon byeon # 마스터에서 set 으로 넘김
get byeon #	replica 에서 받아오기

이제 프리티어에서 maxmemory 가 0으로 설정되어 있으므로 일단 500mb 로 설정한다.

# 그런데 이 방법은 서버를내렸다 올리면 0으로 다시 초기화 된다.
CONFIG SET maxmemory 500mb

/etc/redis vi redis.conf
maxmemory 부분이 주석처리되어있는데 바꿔 주도록 하지 500mb로

센티넬 설치

이제 mster, slave 레디스에 sentinel 을 설치한다

apt-get install redis-sentinel # 설치
ps -ef | grep sentinel # 확인

이제 센티넬은 홀수 즉 3대가 있어야 다수결로 판단하므로 ec2 한개를 다시 해서 여기도 sentinel을 설치를 해준다.

cd /ect/redis -> redis.conf # 파일의 bind 를 다시 맞춰준다 밥법은 위와 같다.

# 쭉 아래로 내려가면 이 설정이 있다 여기서 2는 다수결 결과이다.
sentinel monitor mymaster {master private 포트} 6379 2

위 설정을 ec2 서버 3대 전부다 해준다.
물론 보안설정도 다시 해줘야한다. 왜냐하면 sentinel 도 포트가 26379 포트이기 때문이다

제일 마지막에 설정해준 ec2에서 로그를 확인해본다

tail -f /var/log/redis/redis-sentinel.log

# 이때 master redis 를 내리면 slave로 redis가 바뀌는지 확인해본다.
# 만약 정상적으로 작동안하면 포트 및 설정 후 재시작을 안한거다.

이 로그가 뜨면 성공이다.

이렇게 한쪽 redis 에러가 발생하면 다른 slave redis가 master가 되어줄수있다.

0개의 댓글