>데이터 베이스 >Redis >Docker-Compose가 Redis 클러스터를 구축하는 방법

Docker-Compose가 Redis 클러스터를 구축하는 방법

PHPz
PHPz앞으로
2023-05-30 16:46:221824검색

1. 클러스터 구성

  • 마스터 3개 + 슬레이브 3개

  • 테스트용이므로 여기서는 시뮬레이션용으로 서버 1개만 사용합니다

redis list

Docker-Compose가 Redis 클러스터를 구축하는 방법

2.

redis 클러스터 배포 파일을 저장할 디렉터리를 서버에 만듭니다. 여기에 입력한 경로는 /root/redis-cluster

/opt/docker/redis-cluster 디렉터리에 redis-1, redis-2, redis-3, redis-4, redis-5, redis-6 파일을 생성합니다. Folder

mkdir -p /opt/docker/redis-cluster/{redis-1,redis-2,redis-3,redis-4,redis-5,redis-6}
 
#创建持久化目录
mkdir -p /opt/docker/redis-cluster/redis-1/data
mkdir -p /opt/docker/redis-cluster/redis-2/data
mkdir -p /opt/docker/redis-cluster/redis-3/data
mkdir -p /opt/docker/redis-cluster/redis-4/data
mkdir -p /opt/docker/redis-cluster/redis-5/data
mkdir -p /opt/docker/redis-cluster/redis-6/data

3. 각 redis-* 폴더 아래에 redis.conf 파일을 생성하고 다음 내용을 작성합니다.

cluster-enabled yes # 开启集群
cluster-config-file nodes.conf # 集群配置文件
cluster-node-timeout 5000 # 集群节点多少时间未响应视为该节点丢失
appendonly yes
port 6379 # redis监听端口
masterauth passwd123  #设置master节点密码
requirepass passwd123 #设置密码

참고: 포트 값은 모두 6379일 수 없습니다. 위의 redis 목록에 설정된 포트 번호에 따라 , redis-1 ~ redis-6 포트 번호 6379~6384

를 차례로 지정합니다. docker-compose.yml 파일을 작성합니다

여기에서 redis 이미지 주소 daocloud.io/library/redis:6.0.4를 직접 사용합니다.

in/ root/redis-cluster 폴더에 docker-compose.yml 파일을 생성합니다.

docker-compose.yml 파일 내용은 다음과 같습니다.

version: '3.1'
services:
  # redis1配置
  redis1:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-1
    restart: always
    network_mode: "host"
    volumes:
      - /opt/docker/redis-cluster/redis-1/data:/data
      - /opt/docker/redis-cluster/redis-1/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis2配置
  redis2:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-2
    restart: always
    network_mode: "host"
    volumes:
      - /opt/docker/redis-cluster/redis-2/data:/data
      - /opt/docker/redis-cluster/redis-2/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis3配置
  redis3:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-3
    restart: always
    network_mode: "host"
    volumes:
      - /opt/docker/redis-cluster/redis-3/data:/data
      - /opt/docker/redis-cluster/redis-3/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis4配置
  redis4:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-4
    restart: always
    network_mode: "host"
    volumes:
      - /opt/docker/redis-cluster/redis-4/data:/data
      - /opt/docker/redis-cluster/redis-4/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis5配置
  redis5:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-5
    restart: always
    network_mode: "host"
    volumes:
      - /opt/docker/redis-cluster/redis-5/data:/data
      - /opt/docker/redis-cluster/redis-5/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis6配置
  redis6:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-6
    restart: always
    network_mode: "host"
    volumes:
      - /opt/docker/redis-cluster/redis-6/data:/data
      - /opt/docker/redis-cluster/redis-6/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]

컨테이너를 시작하고 다음 명령을 실행합니다.

#启动容器
docker-compose -f xxx.yaml up -d

Docker-Compose가 Redis 클러스터를 구축하는 방법

5. 클러스터를 엽니다.

여기서 입력할 컨테이너를 찾습니다. 입력하다. 컨테이너에 들어간 후 다음 명령을 입력하여 클러스터를 시작합니다.

redis-cli --cluster create 192.168.66.180:6379 \
192.168.66.180:6380 \
192.168.66.180:6381 \
192.168.66.180:6382 \
192.168.66.180:6383 \
192.168.66.180:6384 \
--cluster-replicas 1

Docker-Compose가 Redis 클러스터를 구축하는 방법

다음 그림은 성공을 나타냅니다.

Docker-Compose가 Redis 클러스터를 구축하는 방법

6. Test

redis-cli 명령을 사용하여 클러스터의 모든 노드에 연결합니다. 방금 클러스터의 IP 주소를 ping할 수 있는 컴퓨터에서 테스트했습니다. 여기서는 로컬 컴퓨터

6.1을 사용하여 노드 속성

redis-cli -c -h 192.168.66.180 -p 6379
192.168.66.180:6379> cluster info

을 확인했습니다. 디스플레이는 아래와 같으며 이는 클러스터 상태

Docker-Compose가 Redis 클러스터를 구축하는 방법입니다.

6.2 노드 정보 보기

cluster nodes

Docker-Compose가 Redis 클러스터를 구축하는 방법

그림 속 슬레이브, 마스터, 나 자신 등의 키워드를 주목해주세요.

Docker-Compose가 Redis 클러스터를 구축하는 방법

6.3 값 삽입

192.168.66.180:6379> set test 'hello world'
-> Redirected to slot [6918] located at 192.168.66.180:6380
OK
192.168.66.180:6380>

Docker-Compose가 Redis 클러스터를 구축하는 방법

참고: 여기서는 슬라이싱을 기준으로 데이터 샤드가 위치한 노드로 자동 전환되므로 연결된 노드가 192.168로 변경된 것을 아래에서 확인할 수 있습니다. 1.4:6380

get test

168.66.180:6379> set test 'hello world'
-> Redirected to slot [6918] located at 192.168.66.180:6380
OK
192.168.66.180:6380> get test
"hello world"
192.168.66.180:6380>

데이터가 위치한 샤드에서 쿼리를 수행하기 때문에 연결 노드는 변경되지 않았습니다.

7. 비밀번호 추가:

7.1 redis.conf 파일 편집

#为redis.conf文件添加如下配置。这里设置密码为123456
masterauth 123456
requirepass 123456

7.2 docker-compose.yml 파일 편집

#为docker-compose.yml中每个容器添加如下配置:
environment:
  - REDISCLI_AUTH=123456

7.3 클러스터에 연결

redis-cli -c -h 192.168.66.180 -p 6379 -a 123456

위 내용은 Docker-Compose가 Redis 클러스터를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제