테스트를 위한 환경 준비
복제, 센티널을 테스트하려면 여러 대의 서버와 IP가 필요하다. 가장 먼저 VirtualBox 같은 가상화 프로그램을 사용하면 되겠다고 생각했다. 지금 사용하고 있는 컴퓨터가 맥북 M1인데 ARM 기반이기 때문에 흔히 알고 있는 가상화 프로그램이 정상 동작하지 않는다. 거기다 회사에서는 라이선스 이슈도 있다
찾아보니 맥용 가상화 프로그램인 UTM이라는 게 있어서 설치해보았으나 Ubuntu 설치 시 에러 발생하여 진행되지 않았다
참고: https://blog.naver.com/phoneplate/223032373793
게다가 아직도 가상화 머신을 통해서 불편하게 환경 준비를 해야하나라는 생각에, 혹시나 해서 Docker 기반으로 컨테이너를 여러 개 띄우고 사설 IP를 할당할 수 있다면 되지 않을까 했는데 역시나 가능했다
도커 컴포즈와 네트워크에 대해서 약간의 학습이 필요하다
- https://docs.docker.com/compose/compose-application-model/
- https://docs.docker.com/compose/networking/
- https://www.daleseo.com/docker-compose-networks/
도커 이미지 선정
공식 이미지
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
참고
- https://sup2is.github.io/2020/07/22/redis-replication-with-sentinel.html
- https://breezymind.com/redis-cluster-docker-compose/
- https://crazy-horse.tistory.com/entry/%EB%A0%88%EB%94%94%EC%8A%A4-%EB%A0%88%EB%94%94%EC%8A%A4-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A5%BC-%EB%8F%84%EC%BB%A4%EC%97%90%EC%84%9C-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90
읽을거리
'NoSQL > Redis' 카테고리의 다른 글
| Redis > 접속 및 명령 (0) | 2024.02.02 |
|---|---|
| Redis > 환경설정 (2) | 2024.02.02 |
| Redis > 설치 > 기본 (0) | 2023.11.15 |