NoSQL/Redis

Redis > 설치 > Docker Compose 기반 Replication, Sentinel, Cluster

Krevis 2024. 4. 3. 07:35

테스트를 위한 환경 준비

복제, 센티널을 테스트하려면 여러 대의 서버와 IP가 필요하다. 가장 먼저 VirtualBox 같은 가상화 프로그램을 사용하면 되겠다고 생각했다. 지금 사용하고 있는 컴퓨터가 맥북 M1인데 ARM 기반이기 때문에 흔히 알고 있는 가상화 프로그램이 정상 동작하지 않는다. 거기다 회사에서는 라이선스 이슈도 있다

 

참고: https://www.inflearn.com/questions/1176432/apple-m1-max-%EC%97%90%EC%84%9C%EB%8A%94-virtualbox-%EC%84%A4%EC%B9%98%EB%A5%BC-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C%EC%9A%94

 

찾아보니 맥용 가상화 프로그램인 UTM이라는 게 있어서 설치해보았으나 Ubuntu 설치 시 에러 발생하여 진행되지 않았다

 

참고: https://blog.naver.com/phoneplate/223032373793

 

게다가 아직도 가상화 머신을 통해서 불편하게 환경 준비를 해야하나라는 생각에, 혹시나 해서 Docker 기반으로 컨테이너를 여러 개 띄우고 사설 IP를 할당할 수 있다면 되지 않을까 했는데 역시나 가능했다

 

도커 컴포즈와 네트워크에 대해서 약간의 학습이 필요하다

도커 이미지 선정

공식 이미지

https://hub.docker.com/_/redis

 

환경변수를 제공하는 것이 없는 것 같다. 복제, 센티널 준비가 번거로울 것 같아서 중간에 사용 중단

Bitnami 이미지

https://hub.docker.com/r/bitnami/redis

 

환경변수를 제공하여 유지보수에 편할 것 같아 이걸로 중간에 갈아탔다

 

공식은 아니지만 VMware사에서 제공하니까 안심이 된다. 참고로 Spring Framework은 현재 VMware Tanzu에서 개발되고 있다

Sentinel 사용 시

https://hub.docker.com/r/bitnami/redis-sentinel

compose.yml

3대의 레디스, 복제 구성, 센티널의 정족수는 2

services:
  redis-1:
    image: bitnami/redis:7.2.1
    container_name: redis-1
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_REPLICATION_MODE=master
  redis-2:
    image: bitnami/redis:7.2.1
    container_name: redis-2
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-1
  redis-3:
    image: bitnami/redis:7.2.1
    container_name: redis-3
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-1
  redis-sentinel:
    image: bitnami/redis-sentinel:7.2.1
    environment:
      - REDIS_MASTER_HOST=redis-1
      - REDIS_SENTINEL_QUORUM=2

컨테이너 실행

$ docker compose up

레디스 센티널 3대로 늘리기

$ docker compose up -d --scale redis-sentinel=3

레디스 센티널에 접속하기

$ docker compose exec redis-1 redis-cli -h redis-sentinel -p 26379

Cluster 사용 시

https://hub.docker.com/r/bitnami/redis-cluster

compose.yml

services:
  redis-1:
    image: bitnami/redis-cluster:7.2.1
    container_name: redis-1
    ports:
      - 6371:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_NODES=redis-1 redis-2 redis-3 redis-4 redis-5 redis-6
      - REDIS_CLUSTER_CREATOR=yes
      - REDIS_CLUSTER_REPLICAS=1
  redis-2:
    image: bitnami/redis-cluster:7.2.1
    container_name: redis-2
    ports:
      - 6372:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_NODES=redis-1 redis-2 redis-3 redis-4 redis-5 redis-6
  redis-3:
    image: bitnami/redis-cluster:7.2.1
    container_name: redis-3
    ports:
      - 6373:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_NODES=redis-1 redis-2 redis-3 redis-4 redis-5 redis-6
  redis-4:
    image: bitnami/redis-cluster:7.2.1
    container_name: redis-4
    ports:
      - 6374:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_NODES=redis-1 redis-2 redis-3 redis-4 redis-5 redis-6
  redis-5:
    image: bitnami/redis-cluster:7.2.1
    container_name: redis-5
    ports:
      - 6375:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_NODES=redis-1 redis-2 redis-3 redis-4 redis-5 redis-6
  redis-6:
    image: bitnami/redis-cluster:7.2.1
    container_name: redis-6
    ports:
      - 6376:6379
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_NODES=redis-1 redis-2 redis-3 redis-4 redis-5 redis-6

컨테이너 실행

$ docker compose up

참고

읽을거리

 

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

Redis > 접속 및 명령  (0) 2024.02.02
Redis > 환경설정  (2) 2024.02.02
Redis > 설치 > 기본  (0) 2023.11.15