Redis的集群搭建

文档背景

最近发现缓存机制很有意思,为了不让每次请求都直接请求到数据库,于是搭建Redis来加速和保护我们的数据。
所以,如何高效和可配置搭建Redis是学习的重点,是搭建单点服务还是集群分布呢?这是一个需要分析和思考的。
这里先记录一下使用Docker集群搭建Redis。

1、Docker的网络类型

Docker的网络类型有:

  • None:不为容器配置任何网络功能,没有网络 --net=none
  • Container:与另一个运行中的容器共享Network Namespace,–net=container:containerID
  • Host:与主机共享Network Namespace,–net=host
  • Bridge:Docker设计的NAT网络模型(默认类型)

重点关注下Host类型:
host模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机
的所有端口与IP。但是它将容器直接暴露在公共网络中,是有安全隐患的。

2、使用桥接(默认)搭建Redis集群

## 拉取镜像
docker pull redis:5.0.2

## 创建容器
#01节点
docker create --name redis-node01  -v /home/docker/redis-colony/data/node01:/data -p 6381:6379  redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf
#02节点
docker create --name redis-node02  -v /home/docker/redis-colony/data/node02:/data -p 6382:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf
#03节点
docker create --name redis-node03  -v /home/docker/redis-colony/data/node03:/data -p 6383:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf

##启动容器
docker start redis-node01 redis-node02 redis-node03

###开始组建集群

##进入redis-node01操作
docker exec -it redis-node01 /bin/bash

##组件集群 (172.17.0.1相当于localhost)
redis-cli --cluster create 172.17.0.1:6381 172.17.0.1:6382 172.17.0.1:6383 --cluster-replicas 0

在这里插入图片描述
可以看见Redis容器已经创建完毕,并且已经启动起来了。
在这里插入图片描述

这里搭建集群好像有点问题,出现连接不到Redis节点的问题。

尝试使用容器ip地址来连接Redis节点

## 查看容器ip地址
docker inspect redis-node01 -> 172.17.0.10
## 查看容器ip地址
docker inspect redis-node02 -> 172.17.0.9
## 查看容器ip地址
docker inspect redis-node03 -> 172.17.0.8

## 再次尝试连接
# 进入redis-node01进行操作
docker exec -it redis-node01 /bin/bash
#组件集群
redis-cli --cluster create 172.17.0.10:6379 172.17.0.9:6379 172.17.0.8:6379 --cluster-replicas 0

在这里插入图片描述

OK! 到这里Redis集群搭建就成功了

##进入node01
docker exec -it redis-node01 /bin/bash
#查看Redis配置信息
redis-cli
CLUSTER NODES

在这里插入图片描述

可以看出集群中节点的ip地址是docker分配的地址,那么在客户端(spring-data-redis)是没有办法访问的?如何解决?

3、使用Host网络搭建集群

## 创建容器
#01节点
docker create --name redis-node01 --net host  -v /home/docker/redis-colony/data/node01:/data -p 6381:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf
#02节点
docker create --name redis-node02 --net host  -v /home/docker/redis-colony/data/node02:/data -p 6382:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf
#03节点
docker create --name redis-node03 --net host  -v /home/docker/redis-colony/data/node03:/data -p 6383:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf

#启动容器 
docker start redis-node01 redis-node02 redis-node03

#进入redis-node01容器进行操作 
docker exec -it redis-node01 /bin/bash

#利用主机ip
redis-cli --cluster create 主机ip:6379 主机ip:6380 主机ip:6381 --cluster-replicas 0

这样就共享了宿主机的netspace,就不会出现连接不到的情况

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值