본문 바로가기

개발중/Redis

k8s Redis 구성방식에 대해서 고민하는 중입니다.

728x90
반응형

k8s Redis 메니페스트

아래와 같이 구성하면 초간단 Redis 는 구축됨

  • 로컬 세션 스토리지를 레디스로 옮겼다.
  • 근데 문제가 있다.
  • 파드에 있는 노드가 죽어버리면 .. ?
  • 로컬 스로리지에서 인증 정보를 저장할 때랑 별 다른게 없는것이 아닌가 ?
  • 그래서 사람들이 master 와 slave 로 구성을 하는 것 같다.

ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: lucy3-redis-config
  namespace: lucy3  
data:
  redis-config: ""

Service

apiVersion: v1
kind: Service
metadata:
  name: lucy3-redis-service
  namespace: lucy3
spec:
  selector:
    app: lucy3-redis
  ports:
    - protocol: TCP
      port: 6379 
      targetPort: 6379

Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: lucy3-redis-deployment
  namespace: lucy3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: lucy3-redis
  template:
    metadata:
      labels:
        app: lucy3-redis
    spec:
      containers:
        - name: lucy3-redis
          image: redis:5.0.4
          command:
            - redis-server
            - "/redis-master/redis.conf"
          env:
            - name: MASTER
              value: "true"
          ports:
            - containerPort: 6379
          resources:
            limits:
              cpu: "0.1"
          volumeMounts:
            - mountPath: /redis-master-data
              name: data
            - mountPath: /redis-master
              name: config
      volumes:
        - name: data
          emptyDir: {}
        - name: config
          configMap:
            name: lucy3-redis-config
            items:
              - key: redis-config
                path: redis.conf

참고 자료

쿠버네티스에 레디스 캐시 클러스터 구축기

컨피그 맵을 사용해서 Redis 설정하기

 

p.s. Redis Pod 에 대해 어떤 관리 방식이 있는지 알아보고 팀원과 논의 하라고 하셨다.

웹파드 Redis 목적

  • 버전 업그레이드에 따른 파드 재기동시 인증 정보를 레디스에 보존하기 위함.
    • AS-IS : 웹 로컬 스토리지에서 세션 관리를 진행하기 때문에 서버 재기동시 인증정보가 초기화 되기 때문에 모든 사용자가 다시 로그인을 해야하는 사태가 벌어집니다.
    • TO-BE : 레디스에서 세션 관리를 진행하기 때문에 파드가 재기동되더라도 인증정보는 보존될 수 있습니다.

1 Redis Cluster

  1. 분산 확장성 (Scalability):
    • Redis Cluster는 여러 마스터 노드와 슬레이브 노드를 조합하여 구성합니다.
    • 데이터베이스를 여러 개의 슬롯으로 분할하고, 각 슬롯은 마스터 노드에 할당됩니다.
    • 이 구성을 통해 Redis는 데이터베이스의 분산 확장성을 제공하고, 높은 가용성과 데이터 복제를 지원합니다.

2) Sentinel with Master-Slave

  1. 고가용성과 모니터링 (High Availability and Monitoring):
    • 마스터 노드와 슬레이브 노드 사이의 데이터 복제로 데이터 손실을 최소화하고 가용성을 향상시킵니다.
    • Redis Sentinel은 마스터-슬레이브 구성을 모니터하고, 마스터 노드의 상태를 지속적으로 확인합니다.
    • 마스터 노드가 다운되는 경우 자동으로 슬레이브 노드 중 하나를 마스터로 승격시킵니다.
    • Sentinel은 높은 가용성을 유지하고 서비스의 중단을 최소화합니다.
    • 또한 모니터링 및 알림을 제공하여 Redis 클러스터의 상태를 관리할 수 있습니다.

3 Redis with Persistence

  1. 데이터 보존 (Data Persistence):
    • Redis는 메모리 기반 데이터베이스로 기본적으로 데이터를 메모리에 저장합니다.
    • 데이터의 보존을 위해 RDB (Redis DataBase) 및 AOF (Append-Only File)와 같은 옵션을 활용할 수 있습니다.
    • RDB는 주기적으로 스냅샷을 생성하여 디스크에 저장하고, AOF는 변경된 데이터를 로그 형식으로 기록합니다.
    • 이를 통해 Redis는 데이터 보존과 복구를 지원합니다.

4 Redis as Cache

  1. 캐싱 (Caching):
    • Redis는 빠른 읽기 및 쓰기 연산을 제공하므로 캐싱 레이어로 사용하기에 적합합니다.
    • 주로 데이터베이스나 다른 백엔드 서비스의 부하를 줄이고 응답 시간을 개선하기 위해 사용됩니다.
    • 데이터 만료 및 자동 삭제 기능을 활용하여 캐싱 전략을 구성할 수 있습니다.

아마 Sentinel with Master Slave 방식이 우리 상황에 어울리는 것 같다. (?)

으 어려워

728x90
반응형