Redis集群搭建

常用命令

常用命令含义示例
info replication查询Redis当前库的集群信息
  1. 修改配置文件
    常用命令 | 含义 | 示例
    -------- | ---------- | ----------
    port | 服务绑定的端口 |
    daemonize | 服务是否后台运行 |
    pidfile | 进程文件 |
    logfile | 日志文件 |
    dbfilename| dump文件时输出的文件名|
    slaveof| | 主机只能写 从机只能读
  2. 启动3个单节点
  3. 想作为子节点的,使用 slaveof 指定 所属的master服务;这里的配置是暂时的,重启之后恢复默认单节点;如果想永久生效需要在配置文件中修改;配置上主机之后会全量复制master中的数据;之后为增量复制数据;如果 slaveof no one 将当前slaver变为 master;

Redis哨兵模式

哨兵进程的配置文件 sentinel.conf

# 最后的1表示 多少个哨兵投票认为该节点失联就是真的宕机了;投票阈值
sentinel  monitor RedisMaster服务名称 ip 端口 1

常用命令

常用命令含义示例
redis-sentinel sentinel.conf服务绑定的端口

主机如果宕机,会从slaver中选举出master,如果之前的master重新回来,会作为slave存在;

Redis高可用

1.缓存穿透和击穿如何解决? 设置
2.缓存雪崩如何解决?

redis.conf配置文件

不同文件的端口不一样 放在 /etc/redis/redis-cluster/redis-node0.conf

# 实例化多少个数据库
databases 1

# 监听的端口
port 7380

# 访问本机需要的密码 和 作为从机访问主机的密码
requirepass  root12300.
masterauth  root12300.

# 持久化文件的保存位置
dir /data

# 持久化文件名
dbfilename dump.rdb

# 指定存储至本地数据库时是否压缩数据
rdbcompression yes

# 持久化策略:一定时间内(S) 有多少条数据更新 就触发保存
# 如 第一条就是 900 秒内有 1 条数据更新 就触发保存
save 900 1
save 300 10
save 60  10000

# 日志文件的保存地址
logfile redis.log
# docker启动redis单节点
docker run -it --network mybridge -v /etc/redis/redis-cluster/redis-node1.conf:/etc/redis/redis.conf -v data-master:/data -p 7381:7381 -p 17381:17381 --name redis-node1 redis:5.0 redis-server /etc/redis/redis.conf
# 测试之后没有问题

docker-compose安装

#1)下载docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#2)授权
sudo chmod +x /usr/local/bin/docker-compose
#3)查看版本信息
docker-compose --version

docker-compose.yml文件

version: '3.1'
services:

  master:
    image: redis:5.0
    container_name: redis-node0
    ports:
      - 7380:7380
      - 17380:17380
    volumes:
      - /etc/redis/redis-cluster/redis-node0.conf:/etc/redis.conf
      - ./data-node0:/data
    command: redis-server /etc/redis.conf
    networks:
     mybridge:
       
  slave1:
    image: redis:5.0
    container_name: redis-node1
    ports:
      - 7381:7381
      - 17381:17381
    volumes:
      - /etc/redis/redis-cluster/redis-node1.conf:/etc/redis.conf
      - ./data-node1:/data
    command: redis-server /etc/redis.conf --slaveof redis-node0 7380
    networks:
     mybridge:
       
  slave2:
    image: redis:5.0
    container_name: redis-node2
    ports:
      - 7382:7382
      - 17382:17382
    volumes:
      - /etc/redis/redis-cluster/redis-node2.conf:/etc/redis.conf
      - ./data-node2:/data
    command: redis-server /etc/redis.conf --slaveof redis-node0 7380
    networks:
     mybridge:
      
networks:
 mybridge:
  external: true

启动redis

cd /usr/local/docker/redis
docker-compose up -d    # docker-compoe 启动命令
docker ps               # 查看容器是否正常启动

sentinel配置文件

# 禁止保护模式
protected-mode no

# 端口
port 27380

# 工作目录
dir "/data"

# 日志文件名
logfile "sentinel.log"

# 配置需要监听的 redis 集群,并起一个名称,这里只需要配置主机的地址即可
# redis-node0 该位置ip一定要外网可以访问!!
sentinel monitor mymaster redis-node0 7380 2

# 访问 redis 的密码
sentinel auth-pass mymaster root12300.

sentinel的compose文件

version: '3.1'
services:

  sentinel0:
    image: redis:5.0
    container_name: redis-sentinel-0
    ports:
      - 27380:27380
    volumes:
      - /etc/redis/redis-cluster/sentinel-node0.conf:/etc/sentinel.conf
    command: redis-sentinel /etc/sentinel.conf
    networks:
     mybridge:

  sentinel1:
    image: redis:5.0
    container_name: redis-sentinel-1
    ports:
      - 27381:27381
    volumes:
      - /etc/redis/redis-cluster/sentinel-node1.conf:/etc/sentinel.conf
    command: redis-sentinel /etc/sentinel.conf
    networks:
     mybridge:
     
  sentinel2:
    image: redis:5.0
    container_name: redis-sentinel-2
    ports:
      - 27382:27382
    volumes:
      - /etc/redis/redis-cluster/sentinel-node2.conf:/etc/sentinel.conf
    command: redis-sentinel /etc/sentinel.conf
    networks:
     mybridge:

汇总

mkdir -p /etc/redis/redis-cluster
#  将3个redis服务和3个sentinel服务配置文件放在该目录;redis-node0.conf  redis-node1.conf  redis-node2.conf  sentinel-node0.conf  sentinel-node1.conf  sentinel-node2.conf

mkdir -p /usr/local/docker/redis
# 将docker-compose.yml文件放到该路径

# 所有配置文件中的所有ip都需要修改为本地电脑的ip

# 编排容器
docker-compose up -d

# 查询运行状态
docker ps | grep redis

特别注意

sentinel配置的监控ip如果是容器名称,sentinel获取的master或slaver地址也将会是docker局域网ip。其他宿主机访问不了。所以这个ip一般会配置成宿主机ip。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳大博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值