Redis集群配置

redis-cluster 集群搭建

Redis集群配置

基于Docker容器进行安装,安装步骤如下

  1. 拉取Redis镜像

    docker pull redis
    
  2. 创建redis-cluster.tmpl配置Redis信息

  3. 创建redis.sh配置需要创建的redis信息

  4. 添加redis集群使用的网络

  5. 执行redis.sh创建redis

  6. 执行redis-cli创建集群

配置Redis信息
  1. 创建redis-cluster.tmpl配置redis信息

    #端口 
    port ${PORT} 
    #非保护模式 
    protected-mode no 
    #启用集群模式 
    cluster-enabled yes 
    cluster-config-file nodes.conf 
    #超时时间 
    cluster-node-timeout 5000 
    #集群各节点IP地址 
    cluster-announce-ip 192.168.4.11
    #集群节点映射端口 
    cluster-announce-port ${PORT} 
    #集群总线端口 
    cluster-announce-bus-port 1${PORT} 
    #开启aof持久化策略 
    appendonly yes 
    #后台运行 
    #daemonize yes 
    #进程号存储 
    pidfile /var/run/redis_${PORT}.pid 
    #集群加密 
    #masterauth 123456 
    #requirepass 123456
    
  2. 创建redis.sh

    #!/bin/bash
    #在/usr/local/server/redis-cluster下生成conf和data目标,并生成配置信息
    
    #输入信息
    read -p "请输入本机IP地址:" Native_IP
    
    # 创建文件夹
    # 下载redis配置模板
    echo "正在下载redis-cluster.tmpl配置模板,请手动下载redis-cluster.tmpl文件并复制到/usr/local/server/redis-cluster目录";
    # 文件下载地址 请手动下载redis-cluster.tmpl文件
    #wget -P /usr/local/server/redis-cluster https://srv-file22.gofile.io/download/RoGvVk/redis-cluster.tmpl
    
    echo "正在创建redis-net网络";
    #c创建网络
    docker network create redis-net
    
    echo "正在创建redis配置文件";
    for port in `seq 7001 7006`; 
    do 
      mkdir -p /usr/local/server/redis-cluster/${port}/conf && PORT=${port} Native_IP=${Native_IP}  envsubst < /usr/local/server/redis-cluster/redis-cluster.tmpl > /usr/local/server/redis-cluster/${port}/conf/redis.conf && mkdir -p /usr/local/server/redis-cluster/${port}/data;
    done
    echo "正在启动redis容器";
    #创建6个redis容器
    for port in `seq 7001 7006`;
    do
    	docker run -d -it -p ${port}:${port} -p 1${port}:1${port} -v /usr/local/server/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/server/redis-cluster/${port}/data:/data --privileged=true --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
    done
    #查找ip
    for port in `seq 7001 7006`;
    do
    	echo  -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port}" ";
    done
    #换行
    echo -e "\n"
    #输入信息
    read -p "请把输入要启动的docker容器名称,默认redis-7001:" DOCKER_NAME
    #判断是否为空
    if [ ! $DOCKER_NAME ]; 
    	then DOCKER_NAME='redis-7001'; 
    fi
    #进入容器
    docker exec -it redis-7001 /bin/bash
    
    
  3. 创建移除脚本

    创建stop.sh脚本,用于停止Redis容器,并移除相应的容器

    #!/bin/bash
    docker stop redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 redis-7006
    docker rm redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 redis-7006
    rm -rf 7001 7002 7003 7004 7005 7006
    
  4. 脚本授权

    redis.shstop.sh添加可执行权限

    chmod +x redis.sh
    chmod +x stop.sh
    
  5. 创建集群关联

    执行脚本创建

    ./redis.sh
    

    进入到任意一个安装好的redis节点的/usr/local/bin目录,执行redis-cli创建集群

    ./redis-cli --cluster create 192.168.4.11:7001 192.168.4.11:7002 192.168.4.11:7003 192.168.4.11:7004 192.168.4.11:7005 192.168.4.11:7006 --cluster-replicas 1
    

    创建结果如下:

    root@53641db0582e:/data# cd /usr/local/bin/
    root@53641db0582e:/usr/local/bin# ls
    root@53641db0582e:/usr/local/bin# ./redis-cli --cluster create 192.168.4.11:700
     192.168.4.11:7002 192.168.4.11:7003 192.168.4.11:7004 192.168.4.11:7005 192.16
    .4.11:7006 --cluster-replicas 1:7003 192.168.4.11:7004 192.168.4.11:7005 192.168.
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 192.168.4.11:7005 to 192.168.4.11:7001
    Adding replica 192.168.4.11:7006 to 192.168.4.11:7002
    Adding replica 192.168.4.11:7004 to 192.168.4.11:7003
    >>> Trying to optimize slaves allocation for anti-affinity
    [WARNING] Some slaves are in the same host as their master
    M: 4ef2f70857556008274c21a669e6930aaa39422f 192.168.4.11:7001
       slots:[0-5460] (5461 slots) master
    M: c21ada5c05b3356c41c937116d4b90362f689851 192.168.4.11:7002
       slots:[5461-10922] (5462 slots) master
    M: 6775a75e445dc10cc3e5966c3f6bf5114d95661f 192.168.4.11:7003
       slots:[10923-16383] (5461 slots) master
    S: 7e4dbe4871e7971488a6052764f7bf8b01ef318b 192.168.4.11:7004
       replicates 6775a75e445dc10cc3e5966c3f6bf5114d95661f
    S: 7a6d6eb3dbbf07ff37b3c5aa5194bcad185d28cb 192.168.4.11:7005
       replicates 4ef2f70857556008274c21a669e6930aaa39422f
    S: 7f58d08ecdc7dc5b13608dfe9a034ec134fc148f 192.168.4.11:7006
       replicates c21ada5c05b3356c41c937116d4b90362f689851
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join
    .
    >>> Performing Cluster Check (using node 192.168.4.11:7001)
    M: 4ef2f70857556008274c21a669e6930aaa39422f 192.168.4.11:7001
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    S: 7e4dbe4871e7971488a6052764f7bf8b01ef318b 192.168.4.11:7004
       slots: (0 slots) slave
       replicates 6775a75e445dc10cc3e5966c3f6bf5114d95661f
    M: 6775a75e445dc10cc3e5966c3f6bf5114d95661f 192.168.4.11:7003
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    S: 7a6d6eb3dbbf07ff37b3c5aa5194bcad185d28cb 192.168.4.11:7005
       slots: (0 slots) slave
       replicates 4ef2f70857556008274c21a669e6930aaa39422f
    S: 7f58d08ecdc7dc5b13608dfe9a034ec134fc148f 192.168.4.11:7006
       slots: (0 slots) slave
       replicates c21ada5c05b3356c41c937116d4b90362f689851
    M: c21ada5c05b3356c41c937116d4b90362f689851 192.168.4.11:7002
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值