适合人群:码农
现在都在搞高并发,高可用,那么缓存集群必不可少
测试项目地址:https://github.com/shaohuizhe/redis.git
1、下载 redis.conf下载地址:https://github.com/antirez/redis/blob/unstable/redis.conf
2、修改 redis.confcluster-enabled yes #开启集群功能port 6391 #设置节点端口cluster-node-timeout 5000 #集群节点超时时间,单位毫秒cluster-config-file "nodes-6391.conf" #集群内部配置文件cluster-announce-ip 192.168.1.102 #集群 ip 地址cluster-announce-port 6391 #集群数据端口cluster-announce-bus-port 16391 #集群总线端口,用于节点之间通信
3、编写 docker-compose.yml
version: "3.6"services: redis-master: # 基础镜像 image: redis:latest # 容器服务名 container_name: redis-master # 工作目录 working_dir: /config # 环境变量 environment: # 跟 config/nodes-6391.conf 里的配置一样的端口 - PORT=6391 # 映射端口,对外提供服务 ports: # redis 的服务端口 - "6391:6391" # redis 集群监控端口 - "16391:16391" # 标准输入打开 stdin_open: true # docker 网络设置 networks: redis-master: ipv4_address: 172.50.0.2 tty: true # 拥有容器内命令执行的权限 privileged: true # 映射数据卷,配置目录 volumes: ["/c/project/docker/redis/config:/config"] # 设置服务默认的启动程序 entrypoint: - /bin/bash - redis.sh redis-slave: image: redis:latest container_name: redis-slave working_dir: /config environment: - PORT=6392 ports: - "6392:6392" - "16392:16392" stdin_open: true networks: redis-slave: ipv4_address: 172.30.0.2 tty: true privileged: true volumes: ["/c/project/docker/redis/config:/config"] entrypoint: - /bin/bash - redis.shnetworks: redis-master: # 创建一个 docker 的桥接网络 driver: bridge ipam: driver: default config: - subnet: 172.50.0.0/16 redis-slave: driver: bridge ipam: driver: default config: - subnet: 172.30.0.0/16
4、编写 redis 默认的启动脚本
创建文件 config/redis.sh,内容如下:
redis-server /config/nodes-${PORT}.conf
目录结构: 这是一台宿主机部署两个节点的情况,六台机子则只需要一个 nodes-xx.conf 配置文件, docker-compose.yml 也只需要写一个节点就行
启动服务命令如下:
docker-compose up -d
查看服务运行:
docker ps
注意:搭建 redis 集群至少需要 6 个节点,这里一个虚拟机当两个用,将上面所有文件 copy 到另外两台虚拟机初始化集群(这一步开始命令须在 redis5.0 及以上版本运行)。
docker exec -it redis-master /bin/bashroot@f294962ac663:/config# redis-cli -a yourpassword --cluster create 192.168.1.102:6391 192.168.1.102:6392 192.168.1.104:6391 192.168.1.104:6392 192.168.1.106:6391 192.168.1.106:6392 --cluster-replicas 1
查看节点信息:
执行测试类:
查看 redis:
可以看到插入 6 个 key 第一台 redis 只插入了 3 条数据,第二台 2 条数据,根据哈希值来匹配槽位,redis 集群共有 16384 个槽位
阅读全文: http://gitbook.cn/gitchat/activity/5ea291ccc312a95b62b72e2b
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。