【浅谈】使用docker搭建Redis集群

#拉取镜像 
docker pull redis:5.0.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 

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

#开始组建集群 
#进入redis-node01进行操作 

docker exec -it redis-node01 /bin/bash 

#组建集群 
redis-cli --cluster create 172.17.0.1:6379 172.17.0.1:6380 172.17.0.1:6381 -- cluster-replicas 0
出现连接不到 redis 节点的问题:
 

【浅谈】使用docker搭建Redis集群_第1张图片

尝试使用容器的 ip 地址( 172.17.0.1 这个地址是 docker 容器分配给主机的地址):
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

搭建成功:

【浅谈】使用docker搭建Redis集群_第2张图片

查看集群信息:
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

docker的网络类型

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

使用host网络搭建docker集群

#创建容器 
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
搭建成功:
【浅谈】使用docker搭建Redis集群_第4张图片
 
查看集群信息:
 
$:redis-cli
 
【浅谈】使用docker搭建Redis集群_第5张图片
 

你可能感兴趣的:(基础应用,Redis,分布式,docker)