docker compose搭建redis-cluster集群(三master+三备份)

搭建环境:一台阿里云服务器,安装了docker,docker-compose

1.准备docker-compose.yml文件

运行6个redis的容器,三个master,三个replicas

version: '3.1'
services:
  redis1: 
    image: daocloud.io/library/redis:5.0.4
    container_name: redis1
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6379:6379
      - 16379:16379
    volumes:
      - ./conf/redis1.conf:/usr/local/etc/redis/redis.conf
      - ./data/:/data/
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]
  redis2: 
    image: daocloud.io/library/redis:5.0.4
    container_name: redis2
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6380:6379
      - 16380:16379
    volumes:
      - ./conf/redis2.conf:/usr/local/etc/redis/redis.conf
      - ./data/:/data/
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]
  redis3: 
    image: daocloud.io/library/redis:5.0.4
    container_name: redis3
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6381:6379
      - 16381:16379
    volumes:
      - ./conf/redis3.conf:/usr/local/etc/redis/redis.conf
      - ./data/:/data/
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]
  redis4: 
    image: daocloud.io/library/redis:5.0.4
    container_name: redis4
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6382:6379
      - 16382:16379
    volumes:
      - ./conf/redis4.conf:/usr/local/etc/redis/redis.conf
      - ./data/:/data/
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]
  redis5: 
    image: daocloud.io/library/redis:5.0.4
    container_name: redis5
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6383:6379
      - 16383:16379
    volumes:
      - ./conf/redis5.conf:/usr/local/etc/redis/redis.conf
      - ./data/:/data/
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]
  redis6: 
    image: daocloud.io/library/redis:5.0.4
    container_name: redis6
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6384:6379
      - 16384:16379
    volumes:
      - ./conf/redis6.conf:/usr/local/etc/redis/redis.conf
      - ./data/:/data/
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]

2.准备6份redis.conf文件

1)注释bind 127.0.0.1
在这里插入图片描述
2)关闭保护机制. protected-mode no
在这里插入图片描述
3)开启集群模式. cluster-enabled yes
在这里插入图片描述
4)指定集群文件的名称. cluster-config-file nodes-{端口号}.conf
在这里插入图片描述
5)映射容器的ip+端口
在这里插入图片描述

最后可以简化为如下内容
bind 0.0.0.0
protected-mode no
port 6379
cluster-enabled yes
cluster-config-file nodes_6379.conf  
cluster-announce-ip 47.105.103.217
cluster-announce-port 6379
cluster-announce-bus-port 16379

其他的redis.conf就是修改如下部分的端口号就行了
cluster-config-file nodes_6379.conf
cluster-announce-port 6379
cluster-announce-bus-port 16379

3.将文件放入linux

文件目录如下,做好数据卷的映射
在这里插入图片描述

4.运行docker-compose文件

在docker-compose.yml文件的目录下执行 docker-compose up -d
在这里插入图片描述
成功后会有如下6个redis的容器
在这里插入图片描述
随便进入一个容器看是否开启了集群
docker exec -it redis1 redis-cli
info
滑到最下面看是否开启集群
在这里插入图片描述

5.建立好redis之间的集群关系

随便进去一个容器内部
docker exec -it redis1 bash
执行如下命令(写好每个容器的ip+端口,–cluster-replicas 1 是每一个master的备份数量)
redis-cli --cluster create 服务器ip:6379 服务器ip:6380 服务器ip:6381 服务器ip:6382 服务器ip:6383 服务器ip:6384 --cluster-replicas 1
在这里插入图片描述

6.测试是否搭建完成

redis-cli -c
1)存储数据
set a a
set b b
set c c
会分配到不同的redis,同时会告诉你分配到了哪一个hash槽
在这里插入图片描述
2)查询数据
get a
在这里插入图片描述
会从所有的redis集群中查数据,同时会告诉你从哪一个槽查询出来的

这样redis的三个master+三个replicas集群搭建成功!!!

7.springboot连接redis集群

1)注入依赖

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <version>2.1.12.RELEASE</version>
    </dependency>

2)配置文件的修改

spring:
  redis:
    cluster:
      nodes: 47.105.103.217:6379,47.105.103.217:6380,47.105.103.217:6381,47.105.103.217:6382,47.105.103.217:6383,47.105.103.217:6384

3)代码测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void myTest(){
        redisTemplate.opsForValue().set("name","帅哥");
        System.out.println(redisTemplate.opsForValue().get("name"));
    }
}

控制台能打印出值,说明成功!!!

配置多台服务器的话,注意修改对应的服务器ip地址就好了

注意开放服务器端口的安全组规则

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值