Day 10: ELK Stack 安裝與多節點
Day 11: Logstash 配置與查詢系統日誌
Day 12: Redis 安裝與後台
Day 13: Redis Cluster 集群配置
Day 14: Prometheus 與 Grafana 安裝與監控
Day 15: 配置 Prometheus 監控 Kubernetes 叢集
Day 16: 使用 Grafana 進行數據視覺化及串接告警
Redis Cluster 是 Redis 的分佈式部署模式,通過將數據分片分佈到多個節點來提高可擴展性和高可用性。與單機版 Redis 相比,Redis Cluster 能夠自動在多個節點之間分配數據,並在某個節點故障時進行自動故障轉移,確保服務的持續可用。
單機版 Redis 只能依賴單個節點的資源和容量,而 Redis Cluster 則通過多個節點協同工作,支持更大的數據集和更高的吞吐量,同時減少單點故障的風險。
今天一樣採用bitnami提供的腳本搭建Redis cluster(再加上一些修改之處)
路徑:bitnami/containers/bitnami/redis-cluster/
建立一個docker-compose.yml文件
sudo nano docker-compose.yml
貼入以下內容
再用取代功能將<主機ip>替換為你的主機ip
參數說明:需要REDIS_CLUSTER_ANNOUNCE_IP並映射出port才能被其他節點找到
注意volumes將conf掛載出來方便修改
# Copyright Broadcom, Inc. All Rights Reserved.
# SPDX-License-Identifier: APACHE-2.0
version: '2'
services:
redis-node-0:
image: docker.io/bitnami/redis-cluster:7.2
restart : always
ports:
- 7001:7001
- 17001:17001
volumes:
- redis-cluster_data-0:/bitnami/redis/data
- ./redis-c0/redis.conf:/opt/bitnami/redis/etc/redis.conf
environment:
- 'REDIS_PASSWORD=bitnami'
- 'REDIS_CLUSTER_ANNOUNCE_IP=<主機ip>'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7001'
- 'REDIS_NODES=<主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006'
redis-node-1:
image: docker.io/bitnami/redis-cluster:7.2
restart : always
ports:
- 7002:7002
- 17002:17002
volumes:
- redis-cluster_data-1:/bitnami/redis/data
- ./redis-c1/redis.conf:/opt/bitnami/redis/etc/redis.conf
environment:
- 'REDIS_PASSWORD=bitnami'
- 'REDIS_CLUSTER_ANNOUNCE_IP=<主機ip>'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7002'
- 'REDIS_NODES=<主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006'
redis-node-2:
image: docker.io/bitnami/redis-cluster:7.2
restart : always
ports:
- 7003:7003
- 17003:17003
volumes:
- redis-cluster_data-2:/bitnami/redis/data
- ./redis-c2/redis.conf:/opt/bitnami/redis/etc/redis.conf
environment:
- 'REDIS_PASSWORD=bitnami'
- 'REDIS_CLUSTER_ANNOUNCE_IP=<主機ip>'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7003'
- 'REDIS_NODES=<主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006'
redis-node-3:
image: docker.io/bitnami/redis-cluster:7.2
restart : always
ports:
- 7004:7004
- 17004:17004
volumes:
- redis-cluster_data-3:/bitnami/redis/data
- ./redis-c3/redis.conf:/opt/bitnami/redis/etc/redis.conf
environment:
- 'REDIS_PASSWORD=bitnami'
- 'REDIS_CLUSTER_ANNOUNCE_IP=<主機ip>'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7004'
- 'REDIS_NODES=<主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006'
redis-node-4:
image: docker.io/bitnami/redis-cluster:7.2
restart : always
ports:
- 7005:7005
- 17005:17005
volumes:
- redis-cluster_data-4:/bitnami/redis/data
- ./redis-c4/redis.conf:/opt/bitnami/redis/etc/redis.conf
environment:
- 'REDIS_PASSWORD=bitnami'
- 'REDIS_CLUSTER_ANNOUNCE_IP=<主機ip>'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7005'
- 'REDIS_NODES=<主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006'
redis-node-5:
image: docker.io/bitnami/redis-cluster:7.2
restart : always
ports:
- 7006:7006
- 17006:17006
volumes:
- redis-cluster_data-5:/bitnami/redis/data
- ./redis-c4/redis.conf:/opt/bitnami/redis/etc/redis.conf
depends_on:
- redis-node-0
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
environment:
- 'REDIS_PASSWORD=bitnami'
- 'REDISCLI_AUTH=bitnami'
- 'REDIS_CLUSTER_REPLICAS=1'
- 'REDIS_CLUSTER_ANNOUNCE_IP=<主機ip>'
- 'REDIS_CLUSTER_DYNAMIC_IPS=no'
- 'REDIS_PORT_NUMBER=7006'
- 'REDIS_NODES=<主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006'
- 'REDIS_CLUSTER_CREATOR=no'
volumes:
redis-cluster_data-0:
driver: local
redis-cluster_data-1:
driver: local
redis-cluster_data-2:
driver: local
redis-cluster_data-3:
driver: local
redis-cluster_data-4:
driver: local
redis-cluster_data-5:
driver: local
再來運行
docker compose -f docker-compose.yml up -d
首先docker-compose建立的服務是在容器內對吧?
那我們需要從本機連入redis cluster的話就需要額外安裝redis-cli
#安裝工具
sudo apt-get install redis
#建立集群
redis-cli --cluster create <主機ip>:7001 <主機ip>:7002 <主機ip>:7003 <主機ip>:7004 <主機ip>:7005 <主機ip>:7006 --cluster-replicas 1 -a bitnami
#登入
redis-cli -h <主機ip> -p 7001 -a bitnami
#檢查
redis-cli -c -a bitnami --cluster check <主機ip>:7001
#修復
redis-cli -c -a bitnami --cluster fix <主機ip>:7001
關於redis.conf的配置這裡就不深入探討了
例如:最大連線數 maxclients 最大記憶體 maxmemory 等有很多優化空間