docker-compose搭建redis集群一主两从三哨兵

准备如下:
三台服务器分别:172.25.10.89;172.25.10.126;172.25.11.126
docker docker-compose 镜像

一.主从模式:

1.1:docker-compose.yml

在三台服务器下分别创建.yml文件:
172.25.10.89为master:

version: '3'
services:
redis-slave2:
image: redis
container_name: redis-slave2
command: redis-server --slaveof 172.25.10.89 6379 --port 6379 --requirepass test1234 --masterauth test1234
ports:
- 6379:6379
privileged: true
volumes:
- /usr/local/docker/redis/data:/data
- /usr/local/docker/redis/conf/:/usr/local/etc/redis/

在这里插入图片描述
在这里插入图片描述

172.25.10.126为slave1:

version: '3'
services:
redis-slave1:
image: redis
container_name: redis-slave1
restart: always
command: redis-server --slaveof 172.25.10.89 6379 --port 6379 --requirepass test1234 --masterauth test1234 --appendonly yes
ports:
- 6379:6379
privileged: true
volumes:
- /usr/local/docker/redis/data:/data
- /usr/local/docker/redis/conf/:/usr/local/etc/redis/

在这里插入图片描述

172.25.11.126为slave2:

version: '3'
services:
redis-slave2:
image: redis
container_name: redis-slave2
restart: always
command: redis-server --slaveof 172.25.10.89 6379 --port 6379 --requirepass test1234 --masterauth test1234 --appendonly yes
ports:
- 6379:6379
privileged: true
volumes:
- /usr/local/docker/redis/data:/data
- /usr/local/docker/redis/conf/:/usr/local/etc/redis/

在这里插入图片描述
参数解释:
privileged: true 权限
requirepass test1234 访问本机需要的密码
masterauth test1234 作为从机访问主机的密码
appendonly yes 是否持久化

1.2 启动主从节点

docker-compose up 启动,查看是否会有启动问题,这样启动如果有报错会有日志打印

docker-compose up -d 后台启动
后面可以用docker ps查看容器是否正常启动
在这里插入图片描述
在这里插入图片描述
借助客户端工具可以得知:master可以set,get数据,但是作为slave只可以读不可写
在这里插入图片描述

docker-compose down 关闭

1.3客户端连接
借助Another Redis Desktop Manager来连接
[https://gitee.com/qishibo/AnotherRedisDesktopManager/releases]

输入ip跟密码:
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/615ff00e0b09412fa15fb426d631026d.png

至此借助docker-compose搭建一主两从完成。

哨兵模式实现

在三台服务器下面*/usr/local/docker/redis*

mkdir sentinel
cd sentinel 
touch sentinel.conf
touch docker-compose.yml

172.25.10.89的sentinel.conf编写:(其他;两台服务器也可以使用26379,因为从属不同的服务器)

port 26379
#保持no,千万不要yes 
daemonize no
#redis-master这个名字随便取,客户端访问时会用 到,IP 和 端口是主从Redis的主节点IP和端口,2是一个数字,指明当有多少个sentinel认为一个master失效时(值一般为:sentinel总数/2 + 1),master才算真正失效
sentinel monitor redis-master 172.25.10.89 6379 2 
#验证密码
sentinel auth-pass redis-master test234 
sentinel announce-ip "172.25.10.89"
#该端口号要跟该文件上面的端口号prot同步
sentinel announce-port 26379 

172.25.10.126;172.25.11.126的sentinel.conf跟上面的一样。
docker-compose.yml文件
172.25.10.89

version: '3'
services:
  redis-sentinel-1:
    image: redis
    container_name: redis-sentinel-1
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - 26379:26379
	privileged: true
    volumes:
      - /usr/local/docker/redis/sentinel:/usr/local/etc/redis/

172.25.10.126

version: '3'
services:
  redis-sentinel-2:
    image: redis
    container_name: redis-sentinel-2
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - 26379:26379
	privileged: true
    volumes:
      - /usr/local/docker/redis/sentinel:/usr/local/etc/redis/

172.25.11.126

version: '3'
services:
  redis-sentinel-3:
    image: redis
    container_name: redis-sentinel-3
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - 26379:26379
	privileged: true
    volumes:
      - /usr/local/docker/redis/sentinel:/usr/local/etc/redis/	

启动哨兵:docker-compose up -d
在这里插入图片描述
docker ps 查看
在这里插入图片描述
验证哨兵模式是否可以正常切换主从节点:
(大致的思想:这里可以关闭redis-master节点,看看sentinel是否会重新选举新的主节点出来,可以到节点中进行set 存储数据,如果节点可以进行存储就说明选举成功了,哨兵选举的前提是节点不能少于两个。主节点可读可写,从节点只读不写,如果主节点关闭后,其他从节点不能存储数据。)
在这里插入图片描述
现在停下master:docker stop redis-master
在这里插入图片描述
等待一会再次启动redis-master,查看节点关系

docker-compose up -d

在这里插入图片描述
进入容器查看

docker exec -it redis-master bash 
进入redis客户端
redis-server /usr/local/etc/redis/redis.conf
redis-cli
info replication

在这里插入图片描述
172.25.10.89已经变为slave。哨兵模式成功,主从关系发生变化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用docker-compose搭建Redis集群,你可以按照以下步骤进行操作: 1. 创建一个docker-compose.yml文件,并在其中定义Redis集群的服务。你可以使用以下示例作为参考: ``` version: '3' services: redis-6379: image: redis ports: - "6379:6379" volumes: - ./redis-6379:/data command: redis-server /data/redis.conf redis-6380: image: redis ports: - "6380:6379" volumes: - ./redis-6380:/data command: redis-server /data/redis.conf redis-6381: image: redis ports: - "6381:6379" volumes: - ./redis-6381:/data command: redis-server /data/redis.conf redis-6382: image: redis ports: - "6382:6379" volumes: - ./redis-6382:/data command: redis-server /data/redis.conf redis-6383: image: redis ports: - "6383:6379" volumes: - ./redis-6383:/data command: redis-server /data/redis.conf redis-6384: image: redis ports: - "6384:6379" volumes: - ./redis-6384:/data command: redis-server /data/redis.conf ``` 2. 在每个Redis服务的目录中创建一个redis.conf文件,用于配置Redis集群的参数。你可以使用以下示例作为参考: ``` port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 3. 运行docker-compose命令来启动Redis集群: ``` docker-compose up -d ``` 这将启动Redis集群的所有服务,并将它们连接在一起。 请注意,以上步骤中的示例仅适用于在本地搭建Redis集群。如果你需要在生产环境中搭建Redis集群,你可能需要进行更多的配置和安全性措施。 #### 引用[.reference_title] - *1* *2* *3* [docker(八)—docker-compose搭建redis集群](https://blog.csdn.net/xiaoqiang65/article/details/121011071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

方大拿拿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值