1 Star 1 Fork 0

david / redis-cluster-docker

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

redis-cluster-docker

介绍

docker redis cluster 集群 一键启动 演示视频在video目录下

环境

  • docker 版本19.03.8

  • docker-compose 版本 1.25.5

  • redis 镜像版本 redis:5

集群搭建流程

  1. sh start.sh使用docker-compose 启动6个redis节点 并创建主从集群

    $ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    a60419c79b98        redis:5             "docker-entrypoint.s…"   54 minutes ago      Up 54 minutes                                redis8
    9414adc6f70a        redis:5             "docker-entrypoint.s…"   54 minutes ago      Up 54 minutes                                redis7
    08f645b19693        redis:5             "docker-entrypoint.s…"   About an hour ago   Up About an hour                             redis6
    ae7724ac6ddd        redis:5             "docker-entrypoint.s…"   About an hour ago   Up About an hour                             redis1
    48b015feb048        redis:5             "docker-entrypoint.s…"   About an hour ago   Up About an hour                             redis2
    8b6164fb4775        redis:5             "docker-entrypoint.s…"   About an hour ago   Up About an hour                             redis4
    33af9be60625        redis:5             "docker-entrypoint.s…"   About an hour ago   Up About an hour                             redis5
    a66526860dfc        redis:5             "docker-entrypoint.s…"   About an hour ago   Up About an hour                             redis3
    
  2. 使用redis-cli 查看集群信息

    $ sh cli.sh                                                                                                                                                                     
    127.0.0.1:7000> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:8
    cluster_size:4
    cluster_current_epoch:7
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:10105
    cluster_stats_messages_pong_sent:10071
    cluster_stats_messages_update_sent:10
    cluster_stats_messages_sent:20186
    cluster_stats_messages_ping_received:10064
    cluster_stats_messages_pong_received:10105
    cluster_stats_messages_meet_received:7
    cluster_stats_messages_update_received:1
    cluster_stats_messages_received:20177
  3. 使用jedis连接集群 测试

扩容

  1. 新启动两个redis节点

    docker run -d --net=host -v $PWD/conf/redis7.conf:/usr/local/etc/redis/redis.conf --name redis7 redis:5 redis-server /usr/local/etc/redis/redis.conf
    docker run -d --net=host -v $PWD/conf/redis8.conf:/usr/local/etc/redis/redis.conf --name redis8 redis:5 redis-server /usr/local/etc/redis/redis.conf
  2. 添加新的主节点到集群中

    docker exec -it redis1 sh -c 'redis-cli -p 7000 --cluster add-node 127.0.0.1:7010 127.0.0.1:7000'

  3. 分配slots

    docker exec -it redis7 sh -c 'redis-cli -p 7010 --cluster reshard 127.0.0.1:7010'

  4. 添加新的主节点的从节点

    docker exec -it redis7 sh -c 'redis-cli -p 7010 --cluster add-node 127.0.0.1:7011 127.0.0.1:7010 --cluster-slave --cluster-master-id 898a6abb5a2bf5f653ad204215354882c1d6a766' #选择实际的master节点id
  5. 查看结果

    127.0.0.1:7000> cluster slots
    1) 1) (integer) 0
       2) (integer) 998
       3) 1) "127.0.0.1"
          2) (integer) 7010
          3) "898a6abb5a2bf5f653ad204215354882c1d6a766"
       4) 1) "127.0.0.1"
          2) (integer) 7011
          3) "05a3439a6c3da793b00ad7a9bd628e83da252e2f"
    2) 1) (integer) 5461
       2) (integer) 6461
       3) 1) "127.0.0.1"
          2) (integer) 7010
          3) "898a6abb5a2bf5f653ad204215354882c1d6a766"
       4) 1) "127.0.0.1"
          2) (integer) 7011
          3) "05a3439a6c3da793b00ad7a9bd628e83da252e2f"
    3) 1) (integer) 10923
       2) (integer) 11921
       3) 1) "127.0.0.1"
          2) (integer) 7010
          3) "898a6abb5a2bf5f653ad204215354882c1d6a766"
       4) 1) "127.0.0.1"
          2) (integer) 7011
          3) "05a3439a6c3da793b00ad7a9bd628e83da252e2f"
    4) 1) (integer) 11922
       2) (integer) 16383
       3) 1) "127.0.0.1"
          2) (integer) 7002
          3) "4455484e5c121e6b63e64aa8521d9dfdac3a2fcc"
       4) 1) "127.0.0.1"
          2) (integer) 7005
          3) "e633625826d146058032953098a7eb11a3129085"
    5) 1) (integer) 6462
       2) (integer) 10922
       3) 1) "127.0.0.1"
          2) (integer) 7001
          3) "92073f679c75f3dba0d88049126b6eca1934d63d"
       4) 1) "127.0.0.1"
          2) (integer) 7004
          3) "e398c637da7ae1d2ec8b8990098a211f152cdc42"
    6) 1) (integer) 999
       2) (integer) 5460
       3) 1) "127.0.0.1"
          2) (integer) 7000
          3) "9a0fd32ec83414ba070f81fee31f8c05ad31bc8d"
       4) 1) "127.0.0.1"
          2) (integer) 7003
          3) "73bfc413b4902013354fb8ebb3abc8172a5bc6d0"
    

问题

  1. docker 网络问题 导致jedis cluster连接失败

mac 不支持docker使用host网络模式导致容器外无法访问。

https://redis.io/topics/cluster-tutorial#redis-cluster-and-docker

解决方式: 使用centOs搭建集群

空文件

简介

docker redis cluster 集群 一键启动 展开 收起
Java 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/wanghehan/redis-cluster-docker.git
git@gitee.com:wanghehan/redis-cluster-docker.git
wanghehan
redis-cluster-docker
redis-cluster-docker
master

搜索帮助