使用Docker搭建Redis集群

一、创建容器

1、拉取镜像

docker pull redis:5.0.2

2、创建容器

docker create --name redis-node01 -v /data/redis-data/node01:/data -p 6379:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf
docker create --name redis-node02 -v /data/redis-data/node02:/data -p 6380:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf
docker create --name redis-node03 -v /data/redis-data/node03:/data -p 6381:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf

3、启动容器

docker start redis-node01 redis-node02 redis-node03

二、开始组建集群
1、进入redis-node01进行操作

docker exec -it redis-node01 /bin/bash

2、组建集群
 

redis-cli --cluster create 172.17.0.1:6379 172.17.0.1:6380 172.17.0.1:6381 --cluster-replicas 0

3、出现连接不到redis节点的问题:

尝试使用容器的ip地址(172.17.0.1这个地址是docker容器分配给主机的地址):

#查看容器的ip地址 
docker inspect redis-node01  ->  172.17.0.4
docker inspect redis-node02  ->  172.17.0.5
docker inspect redis-node03  ->  172.17.0.6
#删除容器
docker stop redis-node01 redis-node02 redis-node03
docker rm redis-node01 redis-node02 redis-node03
rm -rf /data/redis-data
#进入redis-node01进行操作
docker exec -it redis-node01 /bin/bash
#组建集群(注意端口的变化)
redis-cli --cluster create 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 
--cluster-replicas 0

发现,搭建成功:

查看集群信息:

root@91df3e5228b1:/data# redis-cli
127.0.0.1:6379> CLUSTER NODES
207a4d90dce0857e26a2add4ed9fd07464ab02d5 172.17.0.5:6379@16379 master - 0
1543765218866 2 connected 5461-10922
eaaf2895fde3422c522defe6751e3de88d54a553 172.17.0.6:6379@16379 master - 0
1543765217856 3 connected 10923-16383
7eb19b3a82216880b61593e59bebefa5edc247a0 172.17.0.4:6379@16379 myself,master - 0
1543765218000 1 connected 0-5460

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

三、docker的网络类型
1、docker的网络类型有:
         None:不为容器配置任何网络功能,没有网络 --net=none
         Container:与另一个运行中的容器共享Network Namespace,--net=container:containerID
         Host:与主机共享Network Namespace,--net=host
         Bridge:Docker设计的NAT网络模型(默认类型)
2、重点关注下Host类型:
host模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机
的所有端口与IP。但是它将容器直接暴露在公共网络中,是有安全隐患的。

四、使用host网络进行搭建集群

#创建容器
docker create --name redis-node01 --net host -v /data/redis-data/node01:/data redis:5.0.2 
--cluster-enabled yes --cluster-config-file nodes-node-01.conf --port 6379
docker create --name redis-node02 --net host -v /data/redis-data/node02:/data redis:5.0.2 
--cluster-enabled yes --cluster-config-file nodes-node-02.conf --port 6380
docker create --name redis-node03 --net host -v /data/redis-data/node03:/data redis:5.0.2 
--cluster-enabled yes --cluster-config-file nodes-node-03.conf --port 6381
#启动容器
docker start redis-node01 redis-node02 redis-node03
#进入redis-node01容器进行操作
docker exec -it redis-node01 /bin/bash
#172.16.55.185是主机的ip地址
redis-cli --cluster create 172.16.55.185:6379 172.16.55.185:6380 172.16.55.185:6381
--cluster-replicas 0

搭建成功:

查看集群信息:

root@itcast:/data# redis-cli
127.0.0.1:6379> CLUSTER NODES
46e5582cd2d96a506955cc08e7b08343037c91d9 172.16.55.185:6380@16380 master - 0
1543766975796 2 connected 5461-10922
b42d6ccc544094f1d8f35fa7a6d08b0962a6ac4a 172.16.55.185:6381@16381 master - 0
1543766974789 3 connected 10923-16383
4c60f45d1722f771831c64c66c141354f0e28d18 172.16.55.185:6379@16379 myself,master - 0
1543766974000 1 connected 0-5460

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
通过docker搭建Redis集群的步骤如下: 1. 创建容器:使用docker命令创建多个Redis容器,每个容器代表一个节点。例如,可以使用以下命令创建一个名为redis-node-1的节点容器: ``` docker run --name redis-node-1 -p 6381:6379 -d redis ``` 2. 进入容器:使用docker exec命令进入容器内部,例如,可以使用以下命令进入redis-node-1容器: ``` docker exec -it redis-node-1 /bin/bash ``` 3. 构建集群关系:在容器内部,使用Redis命令行工具,将新增的节点作为master节点加入原集群。例如,可以使用以下命令将节点redis-node-7加入集群: ``` redis-cli -p 6381 cluster add-node <new_node_ip:port> <existing_node_ip:port> ``` 4. 查看集群状态:使用Redis命令行工具查看集群的状态。例如,可以使用以下命令在节点redis-node-1上查看集群信息: ``` redis-cli -p 6381 cluster info ``` 通过以上步骤,你可以使用docker搭建Redis集群,并查看集群的状态。请根据实际情况进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [阿昌教你通过docker搭建Redis集群](https://blog.csdn.net/qq_43284469/article/details/122458602)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值