ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] Docker로 Redis Cluster, P3X Redis UI 설치(docker-compose.yml)
    Docker 2022. 11. 15. 14:35
    반응형

    1. Redis 컨테이너 이미지 가져오기

    docker pull redis

     

    2. P3X Redis UI 컨테이너 이미지 가져오기

    docker pull patrikx3/p3x-redis-ui

     

    3. docker-compose 파일 생성

    # compose 파일 버전
    version: "3"
    services: 
      # 서비스명 
      # Redis Cluster 설정
      redis-cluster:
        # 사용할 이미지
        image: redis:latest
        # 컨테이너명 설정
        container_name: redis-cluster
        # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
        ports:
          - "6001:6001"
          - "6002:6002"
          - "6003:6003"
        # 환경 변수 설정
        volumes:
          - ./config/redis/redis-cluster.conf:/usr/local/etc/redis.conf
        # 명령어 설정  
        command: redis-server /usr/local/etc/redis.conf
      
      # Redis Node1 설정  
      redis-node1:
        network_mode: "service:redis-cluster"
        image: redis:latest
        container_name: redis-node1
        volumes:
          - ./redis-node1.conf:/usr/local/etc/redis.conf
        command: redis-server /usr/local/etc/redis.conf
      
      # Redis Node1 설정    
      redis-node2:
        network_mode: "service:redis-cluster"
        image: redis:latest
        container_name: redis-node2
        volumes:
          - ./redis-node2.conf:/usr/local/etc/redis.conf
        command: redis-server /usr/local/etc/redis.conf
    
      # Redis Node1 설정  
      redis-node3:
        network_mode: "service:redis-cluster"
        image: redis:latest
        container_name: redis-node3
        volumes:
          - ./redis-node3.conf:/usr/local/etc/redis.conf
        command: redis-server /usr/local/etc/redis.conf
    
      # Redis Cluster Entry 설정  
      redis-cluster-entry:
        network_mode: "service:redis-cluster"
        image: redis:latest
        container_name: redis-cluster-entry
        command: redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 --cluster-yes
        depends_on:
          - redis-cluster
          - redis-node1
          - redis-node2
          - redis-node3
    
      # P3X Redis UI 설정
      registry:
        image: patrikx3/p3x-redis-ui:latest
        restart: always
        container_name: p3x-redis-ui
        ports:
          - "7843:7843"
        volumes:
          - ./settings:/settings

     

    4. redis.conf 파일 생성

    docker-compose.yml 파일과 동일한 위치에 redis-node마다 redis.conf 파일을 생성

     

    클러스터 설정 파일

    cluster-enabled <yes/no>

    • 클러스터 모드로 실행할지 여부를 결정

    cluster-config-file <filename>

    • 해당 노드의 클러스터를 유지하기 위한 설정을 저장하는 파일

    cluster-node-timeout <milliseconds>

    • 클러스터 노드가 다운되었는지 판단하는 시간
    • 해당 시간 동안 감지되지 않는 마스터는 레플리카에 의해 장애 조지(failover)를 진행

     

    redis-node1.conf

    port 6001
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 3000
    appendonly yes

    redis-node2.conf

    port 6002
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 3000
    appendonly yes

    redis-node3.conf

    port 6003
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 3000
    appendonly yes

     

    5. docker-compose 파일 실행

    5_1. docker-compose 파일이 저장된 위치로 이동

    cd 파일이 저장된 위치

    5_2. docker-compose 실행

    docker-compose up -d

    5_3. docker-compose 중지

    docker-compose stop

     

    6. PostgreSQL 컨테이너, 이미지 관련 명령어

    6_1. 컨테이너 시작

    docker start redis-cluster
    docker start redis-node1
    docker start redis-node2
    docker start redis-node3
    docker start redis-cluster-entry
    docker start p3x-redis-ui

    6_2. 컨테이너 중지

    docker stop redis-cluster
    docker stop redis-node1
    docker stop redis-node2
    docker stop redis-node3
    docker stop redis-cluster-entry
    docker stop p3x-redis-ui

    6_3. 컨테이너 재시작

    docker restart redis-cluster
    docker restart redis-node1
    docker restart redis-node2
    docker restart redis-node3
    docker restart redis-cluster-entry
    docker restart p3x-redis-ui

    6_4. 컨테이너 삭제

    docker rm redis-cluster
    docker rm redis-node1
    docker rm redis-node2
    docker rm redis-node3
    docker rm redis-cluster-entry
    docker rm p3x-redis-ui

    6_5. 이미지 삭제

    docker rmi redis
    docker rmi patrikx3/p3x-redis-ui

     

    7. Redis 컨테이너에 접속

    docker exec -it redis-cluster /bin/bash

     

    8. Redis 컨테이너에서 Redis-cli 실행

    redis-cli

     

    9. Redis 커맨드 사용

    set test_key test_value
    get test_key

     

    10. p3x-redis-ui 접속

    10_1. 브라우저에서 localhost:7843를 입력하면 p3x-redis-ui 화면이 출력

     

    10_2. SETTINGS > NEW CONNECTION을 선택한 접속 정보를 입력

    • HostName은 container_name을 입력
    • Port는 posts를 입력

     

    Docker 기본 명령어 - https://tychejin.tistory.com/359

    반응형

    댓글

Designed by Tistory.