[Redis] Cluster 구성

이정훈·2023년 3월 24일
1

Redis

목록 보기
4/5
post-thumbnail
  • 3대 모두 동일하게 설정할 예정

master 설정

  • 설정
vi /etc/redis.conf
	bind 0.0.0.0
	daemonize yes
	cluster-enabled yes 
	cluster-config-file nodes.conf 	# nodes.conf는 redis 프로그램이 관리할 파일, 관리자가 건들 필요 X
	cluster-node-timeout 3000 
  • 확인
cat /var/log/redis/redis.log 확인
		Running in cluster mode

  • cluster 만들기
redis-cli --cluster create  [서버1_IP]:6379 [서버2_IP]:6379 [서버3_IP]:6379
	yes

  • cluster 확인
redis-cli
		cluster nodes

django 설정 (master만 사용했을 때)

  • 장고에서 누구에게 갈건지 설정해줘야한다

  • 마스터가 세개이니깐 설정도 변경해줘야한다.

  • 설치

pip install django-cluster-redis	
  • 설정
	CACHES = {
	    'default': {
	        'BACKEND': 'django_redis.cache.RedisCache',
	
	        'LOCATION': ['redis://[마스터 IP]:6379', 'redis://[마스터 IP]:6379', 'redis://[마스터 IP]:6379'],
	        'OPTIONS': {
	            'REDIS_CLIENT_CLASS': 'django_cluster_redis.cache.ClusterRedis',
	        },
	    }
	}

  • 로그인을 해보았 더니 여유로운 친구 한명에게만 세션이 저장된 것을 확인 했다.

slave 설정

  • 마스터 3대가 있는데 각자의 slave를 만들어 주고자 한다.
  • 설정
vi /etc/redis.conf
	daemonize yes
	cluster-enabled yes 
	cluster-config-file nodes.conf 	# nodes.conf는 redis 프로그램이 관리할 파일, 관리자가 건들 필요 X
	cluster-node-timeout 3000 
  • 확인
cat /var/log/redis/redis.log
		Running in cluster mode

  • cluster 만들기 (마스터랑 슬레이브 연결)
redis-cli --cluster add-node [슬레이브_IP]:6379 [마스터_IP]:6379 --cluster-slave

# 마스터나 슬레이브 아무 터미널에서 명령어를 실행해도 되지만 
# 한대의 마스터랑 한대의 슬레이브는 정확하게 입력해줘야한다
  • cluster 확인
redis-cli
		cluster nodes

django 설정 (master-slave 사용했을 때)

  • 설치
pip install django-cluster-redis	
  • 설정
	CACHES = {
	    'default': {
	        'BACKEND': 'django_redis.cache.RedisCache',
	
	        'LOCATION': ['redis://[마스터 IP]:6379', 'redis://[마스터 IP]:6379', 
            'redis://[마스터 IP]:6379', 'redis://[슬레이브 IP]:6379', 
            'redis://[슬레이브 IP]:6379', 'redis://[슬레이브 IP]:6379'],
            # 전부 적어주기! 
            # 슬레이브는 읽기전용 쓰이지는 않지만 마스터 대신? 내용을 사용할 수 있도록
            # 추가적인 작업은 sentinel 구성을 해줘야 한다.
	        'OPTIONS': {
	            'REDIS_CLIENT_CLASS': 'django_cluster_redis.cache.ClusterRedis',
	        },
	    }
	}

  • 로그인을 했을때 가장 여유로운 마스터에 로그인 세션 저장이 되고 그 슬레이브에도 저장되는 것을 확인!
  • 로그아웃하면 당연히 같이 지워진다!
profile
싱숭생숭늉

1개의 댓글

comment-user-thumbnail
2023년 5월 23일

저 위의 설정말고 다른 방법으로는 안하는지요?
우선 레디스에 접근을 하고 조회를 해서 데이타 존재 여부 확인하고,
없으면 마리아 디비에 접근해서 가져와서 레디스에 적재하는걸 생각하고 있는데
가능할까요?

답글 달기