redis集群多主

小白搭建redis集群,一直在听别人说单节点redis不靠谱,但redis你们存啥呢,一直都是简单的key/value进行存储,随着业务的复杂性,分布式系统等,单节点缓存并不可靠,今天尝试了进行redis集群搭建

simon/docker-redis-cluster (gitee.com)

准备工作,docker redis镜像, redis.conf配置文件

redis.conf文件,可以从github中下载,选择适合的版本。
我这里选择的是7.0 https://github.com/redis/redis/tree/7.0

ip: 192.168.1.105是我宿主机器的IP

redis集群,以下为三个master节点

这里新生成3个

mkdir redis1
mkdir redis2
mkdir redis3

分别修改redis.conf文件

port 7001
requirepass 123456
masterauth 123456
appendonly yes
# 将bind注释掉,不然后面执行会报 节点不是cluster的错误
# [ERR] Node 192.168.1.105:7003 is not configured as a cluster node.
#bind 127.0.0.1 -::1
# 开启集群功能
cluster-enabled yes
# 集群配置文件
cluster-config-file nodes.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 集群对外访问ip.port
cluster-announce-ip 192.168.1.105
cluster-announce-port 7001
# 集群内部通信接口
cluster-announce-bus-port 17001
# 持久化目录存放位置
dir ./
# 绑定地址
bind 0.0.0.0
# 主从实例的IP地址
replica-announce-ip 192.168.1.105
# 保护模式,关闭则不会校验用户名密码的校验
protected-mode no
# redis后端运行,当为yes时,看不到日志,可以配置日志的输入文件
#daemonize yes
# 日志文件
#logfile /tmp/redis/run.log

对应关系

  • redis1 7001 17001
  • redis2 7002 17002
  • redis3 7003 17003

docker 直接启动

# redis1
docker run -d --name redis1 -p 7001:7001 -p 17001:17001 -v /e/docker/redis-cluster/redis1/redis.conf:/usr/local/etc/redis/redis.conf -v /e/docker/redis-cluster/redis1/data:/data redis:7.0 redis-server /usr/local/etc/redis/redis.conf
# redis2
docker run -d --name redis2 -p 7002:7002 -p 17002:17002 -v /e/docker/redis-cluster/redis2/redis.conf:/usr/local/etc/redis/redis.conf -v /e/docker/redis-cluster/redis2/data:/data redis:7.0 redis-server /usr/local/etc/redis/redis.conf
# redis3
docker run -d --name redis3 -p 7003:7003 -p 17003:17003 -v /e/docker/redis-cluster/redis3/redis.conf:/usr/local/etc/redis/redis.conf -v /e/docker/redis-cluster/redis3/data:/data redis:7.0 redis-server /usr/local/etc/redis/redis.conf

形成集群

# 进入任意一个节点
docker exec -it redis1 bash
# 执行redis-cli 创建集群
# -a 指定密码,
redis-cli --cluster create 192.168.1.105:7001 192.168.1.105:7002 192.168.1.105:7003 --cluster-replicas 0 --cluster-yes -a 123456

docker-compose启动方式
编写docker-compose.yml

version: '3.1'
services:
  redis-cluster:
    image: redis:7.0
    command: redis-cli --cluster create 192.168.1.105:7001 192.168.1.105:7002 192.168.1.105:7003 --cluster-replicas 0 --cluster-yes -a 123456
    depends_on:
      - redis-1
      - redis-2
      - redis-3
  # redis1配置
  redis-1:
    image: redis:7.0
    container_name: redis-1
    restart: always
    ports:
      - 7001:7001
      - 17001:17001
    volumes:
      - ./redis1/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis2配置
  redis-2:
    image: redis:7.0
    container_name: redis-2
    restart: always
    ports:
      - 7002:7002
      - 17002:17002
    volumes:
      - ./redis2/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis3配置
  redis-3:
    image: redis:7.0
    container_name: redis-3
    restart: always
    ports:
      - 7003:7003
      - 17003:17003
    volumes:
      - ./redis3/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]

其他配置应该一看就明白,没啥好说的。

这里对命令进行说明
redis-cli --cluster create 192.168.1.105:7001 192.168.1.105:7002 192.168.1.105:7003 --cluster-replicas 0 --cluster-yes

# 进行创建集群后面跟着节点ip:port
redis-cli --cluster create

--cluster-replicas 是说从节点数量,0,标识没有从节点

其他命令

  • redis-cli --cluster check 192.168.1.105:7001 查看节点状态
# redis-cli --cluster check 192.168.1.105:7001
192.168.1.105:7001 (07d6af9b...) -> 0 keys | 5461 slots | 0 slaves.
192.168.1.105:7002 (e00c3db2...) -> 0 keys | 5462 slots | 0 slaves.
192.168.1.105:7003 (03cebc43...) -> 0 keys | 5461 slots | 0 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.1.105:7001)
M: 07d6af9bbfb316e6ba3f82ed5a810177a4fc033e 192.168.1.105:7001
   slots:[0-5460] (5461 slots) master
M: e00c3db2bd8410ddab7c018ead595a23233f6626 192.168.1.105:7002
   slots:[5461-10922] (5462 slots) master
M: 03cebc437c87ebda4839d70d487518706359faf8 192.168.1.105:7003
   slots:[10923-16383] (5461 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
  • redis-cli --cluster info 192.168.1.105:7001
# redis-cli --cluster info 192.168.1.105:7001
192.168.1.105:7001 (07d6af9b...) -> 0 keys | 5461 slots | 0 slaves.
192.168.1.105:7002 (e00c3db2...) -> 0 keys | 5462 slots | 0 slaves.
192.168.1.105:7003 (03cebc43...) -> 0 keys | 5461 slots | 0 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

启动
docker-compose up -d

使用redis-cli -c -p 任意节点端口 -c是集群模式管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容