zoukankan      html  css  js  c++  java
  • Docker部署Redis集群

    # 创建网卡
    docker network create redis --subnet 172.38.0.0/16
    

    # 创建六个redis
    for port in $(seq 1 6); 
    do 
    mkdir -p /mydata/redis/node-${port}/conf
    touch /mydata/redis/node-${port}/conf/redis.conf
    cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
    port 6379
    bind 0.0.0.0
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-announce-ip 172.38.0.1${port}
    cluster-announce-port 6379
    cluster-announce-bus-port 16379
    appendonly yes
    EOF
    done
    

    # 启动
    docker run -p 6371:6379 -p 16371:16379 --name redis-1 
    -v /mydata/redis/node-1/data:/data 
    -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf 
    -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf 
    

    # 全部启动
    docker run -p 6372:6379 -p 16372:16379 --name redis-2 
    -v /mydata/redis/node-2/data:/data 
    -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf 
    -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
    # 依次启动
    

    # 进入容器
    [root@iz2zeaet7s13lfkc8r3e2kz home]# docker exec -it redis-1 /bin/sh
    /data # ls
    appendonly.aof  nodes.conf
    /data # 
    # 创建集群
    /data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15
    :6379 172.38.0.16:6379 --cluster-replicas 1
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
    Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
    Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
    M: f8b07c2dc2cbf74d9939fe62948a8e230f9de319 172.38.0.11:6379
       slots:[0-5460] (5461 slots) master
    M: fa4395001194f42d4b72252f47c9e6fea1e0cda3 172.38.0.12:6379
       slots:[5461-10922] (5462 slots) master
    M: b744ebd8a33916992fc5f8161ac9efdf4fe1cdcf 172.38.0.13:6379
       slots:[10923-16383] (5461 slots) master
    S: 1ad42e97941bc58f6234c711d5619029ef642696 172.38.0.14:6379
       replicates b744ebd8a33916992fc5f8161ac9efdf4fe1cdcf
    S: f96de63ed0a6f75774c1d99f281ca3f001d37932 172.38.0.15:6379
       replicates f8b07c2dc2cbf74d9939fe62948a8e230f9de319
    S: 1e6deeeeccaa0d80caa73fb91b0442849c0356da 172.38.0.16:6379
       replicates fa4395001194f42d4b72252f47c9e6fea1e0cda3
    Can I set the above configuration? (type 'yes' to accept): yes  #输入yes
    

    # 链接
    /data # redis-cli -c
    127.0.0.1:6379> cluster info	
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:339
    cluster_stats_messages_pong_sent:327
    cluster_stats_messages_sent:666
    cluster_stats_messages_ping_received:322
    cluster_stats_messages_pong_received:339
    cluster_stats_messages_meet_received:5
    cluster_stats_messages_received:666
    
    127.0.0.1:6379> cluster nodes	
    fa4395001194f42d4b72252f47c9e6fea1e0cda3 172.38.0.12:6379@16379 master - 0 1590634161065 2 connected 5461-10922
    b744ebd8a33916992fc5f8161ac9efdf4fe1cdcf 172.38.0.13:6379@16379 master - 0 1590634161000 3 connected 10923-16383
    f96de63ed0a6f75774c1d99f281ca3f001d37932 172.38.0.15:6379@16379 slave f8b07c2dc2cbf74d9939fe62948a8e230f9de319 0 1590634161567 5 connected
    f8b07c2dc2cbf74d9939fe62948a8e230f9de319 172.38.0.11:6379@16379 myself,master - 0 1590634160000 1 connected 0-5460
    1ad42e97941bc58f6234c711d5619029ef642696 172.38.0.14:6379@16379 slave b744ebd8a33916992fc5f8161ac9efdf4fe1cdcf 0 1590634159562 4 connected
    1e6deeeeccaa0d80caa73fb91b0442849c0356da 172.38.0.16:6379@16379 slave fa4395001194f42d4b72252f47c9e6fea1e0cda3 0 1590634160000 6 connected
    # 现在有三个主机master 三个从机slave
    

    测试,set一个值

    发现处理的是 12 ,吧 12 的这个容器关掉

    再去get这个值,看看能不能取到

    发现 这个值是在16 get到的,16 本是从机,12停掉后16就变为了主机

    docker 搭建redis集群完成!

    https://space.bilibili.com/95256449

  • 相关阅读:
    node.js 安装后怎么打开 node.js 命令框
    thinkPHP5 where多条件查询
    网站title中的图标
    第一次写博客
    Solution to copy paste not working in Remote Desktop
    The operation could not be completed. (Microsoft.Dynamics.BusinessConnectorNet)
    The package failed to load due to error 0xC0011008
    VS2013常用快捷键
    微软Dynamics AX的三层架构
    怎样在TFS(Team Foundation Server)中链接团队项目
  • 原文地址:https://www.cnblogs.com/yslss/p/12985791.html
Copyright © 2011-2022 走看看