redis高可用部署(docker-compose)

哨兵模式

集群模式

1.创建YAML
cat > docker-compose-redis-cluster.yml << EOF
version: '3.1'
services:
  redis_cluster_node1:
    image: redis:5.0.5
    container_name: redis_cluster_node1
    restart: always
    user: root
    privileged: true  
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./redis/node1/etc/redis.conf:/redis/etc/redis.conf
    - ./redis/node1/data:/redis/data
    - ./redis/node1/log:/redis/log
    ports:
    - 7001:7001
    - 17001:17001
    command: redis-server /redis/etc/redis.conf
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis_cluster_node2:
    image: redis:5.0.5
    container_name: redis_cluster_node2
    restart: always
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./redis/node2/etc/redis.conf:/redis/etc/redis.conf
    - ./redis/node2/data:/redis/data
    - ./redis/node2/log:/redis/log
    ports:
    - 7002:7002
    - 17002:17002
    user: root
    privileged: true
    command: redis-server /redis/etc/redis.conf
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis_cluster_node3:
    image: redis:5.0.5
    container_name: redis_cluster_node3
    restart: always
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./redis/node3/etc/redis.conf:/redis/etc/redis.conf
    - ./redis/node3/data:/redis/data
    - ./redis/node3/log:/redis/log
    ports:
    - 7003:7003
    - 17003:17003
    user: root
    privileged: true
    command: redis-server /redis/etc/redis.conf
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis_cluster_node4:
    image: redis:5.0.5
    container_name: redis_cluster_node4
    restart: always
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./redis/node4/etc/redis.conf:/redis/etc/redis.conf
    - ./redis/node4/data:/redis/data
    - ./redis/node4/log:/redis/log
    ports:
    - 7004:7004
    - 17004:17004
    user: root
    privileged: true
    command: redis-server /redis/etc/redis.conf
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis_cluster_node5:
    image: redis:5.0.5
    container_name: redis_cluster_node5
    restart: always
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./redis/node5/etc/redis.conf:/redis/etc/redis.conf
    - ./redis/node5/data:/redis/data
    - ./redis/node5/log:/redis/log
    ports:
    - 7005:7005
    - 17005:17005
    user: root
    privileged: true
    command: redis-server /redis/etc/redis.conf
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis_cluster_node6:
    image: redis:5.0.5
    container_name: redis_cluster_node6
    restart: always
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./redis/node6/etc/redis.conf:/redis/etc/redis.conf
    - ./redis/node6/data:/redis/data
    - ./redis/node6/log:/redis/log
    ports:
    - 7006:7006
    - 17006:17006
    user: root
    privileged: true
    command: redis-server /redis/etc/redis.conf
    logging:
      options:
        max-size: '100m'
        max-file: '10'
EOF
2.创建集群创建脚本及配置文件
  • 集群配置文件创建
mkdir redis/{
    
    node1..node6}/{
    
    etc,data,log}
cat > redis/{
    
    node1..node6}/etc/redis.conf << EOF
# 监听端口
port 7001
# 绑定地址
bind 0.0.0.0
# Redis密码
requirepass Pwd@123
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file nodes.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 开启数据持久化(根据需求开启)
appendonly yes  
# 持久化文件存放目录
dir /redis/data
# 日志文件
logfile /redis/log/redis.log
# 让redis后台运行
daemonize no
# 注册的实例ip(避免多网卡时IP冲突)  #设置为本机IP
cluster-announce-ip 192.168.10.10
cluster-announce-port 7001
cluster-announce-bus-port 17001
# 关闭保护模式
protected-mode no
# 数据库数量
databases 16
# 内存限制
maxmemory  4G
masterauth Pwd@123
EOF
  • 修改配置文件
cat > redis/edietc.sh << EOF
localip=`ifconfig eth0|awk NR==2|awk '{print $2}'`
set -i 's/7001/7001/g' node1/etc/redis.conf
set -i 's/7001/7002/g' node2/etc/redis.conf
set -i 's/7001/7003/g' node3/etc/redis.conf
set -i 's/7001/7004/g' node4/etc/redis.conf
set -i 's/7001/7005/g' node5/etc/redis.conf
set -i 's/7001/7006/g' node6/etc/redis.conf
sed -i 's/192.168.10.10/${localip}/g' node1/etc/redis.conf
sed -i 's/192.168.10.10/${localip}/g' node2/etc/redis.conf
sed -i 's/192.168.10.10/${localip}/g' node3/etc/redis.conf
sed -i 's/192.168.10.10/${localip}/g' node4/etc/redis.conf
sed -i 's/192.168.10.10/${localip}/g' node5/etc/redis.conf
sed -i 's/192.168.10.10/${localip}/g' node6/etc/redis.conf
EOF
sh redis/edietc.sh
  • 创建集群创建脚本
cat > redis/createcluster.sh << EOF
localip=`ifconfig eth0|awk NR==2|awk '{print $2}'`
docker exec -it redis_cluster_node1 redis-cli -a Weihu12345  --cluster create --cluster-replicas 1  ${localip}:7001 ${localip}:7002 ${localip}:7003 ${localip}:7004 ${localip}:7005 ${localip}:7006
EOF
3.启动服务
docker-compose -f docker-compose-redis-cluster.yml up -d
4.创建集群
sh redis/createcluster.sh

猜你喜欢

转载自blog.csdn.net/weixin_49566876/article/details/132900181