首页 > 其他 > 详细

Redis——集群搭建记录 docker方式

时间:2021-05-08 22:48:39      阅读:30      评论:0      收藏:0      [点我收藏+]

redis集群模式,为去中心化结构。

共16384个孔位。0~16383

集群中各个节点分别负责一部分孔位。

每个节点都有全部的元数据,具备路由功能。

客户端请求到达任一节点,是本节点孔位就直接处理,否则就hash转到相应节点。

集群搭建完成后,尚需用predixy等工具,实现负载均衡。集群对客户端透明。

 

在单台宿主,用docker启6个redis实例,实现redis集群。

此方式仅供学习,单台宿主,只能算是伪集群。

docker搭建redis集群。

拉出可用的镜像

docker pull redis:5.0.8

docker pull redis:6.2.3

1、方式一,能布署成功,但在宿主之外的机器无法跨节点访问。

启动6个redis实例

docker run -d --name redis1               --hostname redis1_host               -v /root/data/soft/redis/ins-cluster/redis1_data:/data               -p 6321:6379 redis:5.0.8               --cluster-enabled yes               --cluster-config-file redis1_cluster.conf

docker run -d --name redis2               --hostname redis2_host               -v /root/data/soft/redis/ins-cluster/redis2_data:/data               -p 6322:6379 redis:5.0.8               --cluster-enabled yes               --cluster-config-file redis2_cluster.conf

docker run -d --name redis3               --hostname redis3_host               -v /root/data/soft/redis/ins-cluster/redis3_data:/data               -p 6323:6379 redis:5.0.8               --cluster-enabled yes               --cluster-config-file redis3_cluster.conf

docker run -d --name redis4               --hostname redis4_host               -v /root/data/soft/redis/ins-cluster/redis4_data:/data               -p 6324:6379 redis:5.0.8               --cluster-enabled yes               --cluster-config-file redis4_cluster.conf                       

docker run -d --name redis5               --hostname redis5_host               -v /root/data/soft/redis/ins-cluster/redis5_data:/data               -p 6325:6379 redis:5.0.8               --cluster-enabled yes               --cluster-config-file redis5_cluster.conf

docker run -d --name redis6               --hostname redis6_host               -v /root/data/soft/redis/ins-cluster/redis6_data:/data               -p 6326:6379 redis:5.0.8               --cluster-enabled yes               --cluster-config-file redis6_cluster.conf

查询容器的ip地址

docker exec -it redis1  cat /etc/hosts | grep host
docker exec -it redis2  cat /etc/hosts | grep host
docker exec -it redis3  cat /etc/hosts | grep host
docker exec -it redis4  cat /etc/hosts | grep host
docker exec -it redis5  cat /etc/hosts | grep host
docker exec -it redis6  cat /etc/hosts | grep host

docker inspect redis1

docker inspect redis1 | grep IPAddress
docker inspect redis2 | grep IPAddress
docker inspect redis3 | grep IPAddress
docker inspect redis4 | grep IPAddress
docker inspect redis5 | grep IPAddress
docker inspect redis6 | grep IPAddress

docker exec -it redis1 bash

配置集群
(此种方式,能成功配好集群,但是从外部访问时若存在跨节点访问,因不识别172.17.0.*的ip导致无法访问)

docker exec -it redis1     redis-cli --cluster create     172.17.0.5:6379     172.17.0.6:6379     172.17.0.7:6379     172.17.0.8:6379     172.17.0.9:6379     172.17.0.10:6379     --cluster-replicas 1


查看集群状态

docker exec -it redis1 redis-cli -p 6321 cluster info
docker exec -it redis1 redis-cli -p 6321 cluster nodes
docker exec -it redis1 redis-cli -p 6321 info replication

测试集群

docker exec -it redis1 redis-cli -p 6321 -c set "name" "zhangsan"
docker exec -it redis5 redis-cli -p 6325 -c get "name"
docker exec -it redis4 redis-cli -p 6324 -c set "name" "wangliu"
docker exec -it redis5 redis-cli -p 6325 -c get "name"

非宿主机连接测试

redis-cli -h 172.31.140.161 -p 6326 -c set "name" "liuqi"
redis-cli -h 172.31.140.161 -p 6326 -c get "name"
redis-cli -h 172.31.140.161 -p 6321 -c get "name"
redis-cli -h 172.31.140.161 -p 6323 -c get "name"

[root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 172.31.140.161 -p 6326 -c
172.31.140.161:6326> get name
-> Redirected to slot [5798] located at 172.31.140.161:6322
"liuqi"
172.31.140.161:6322> 

其它命令

docker stop redis1 redis2 redis3 redis4 redis5 redis6
docker rm redis1 redis2 redis3 redis4 redis5 redis6
rm -rfv redis*_data

 

2、方式二,用host模式创建。

docker使用 host模式 的网络连接类型,Docker在使用host模式下创建的容器是没有自己独立的网络命名空间的,是跟物理机共享一个网络空间,进而可以共享物理机的所有端口与IP,这样就可以让公共网络直接访问容器了,尽管这种方式有安全隐患,但目前来说还没找到其他可行性模式。

docker run -d --name redis1               --hostname redis1_host               --net host               -v /root/data/soft/redis/ins-cluster/redis1_data:/data               redis:5.0.8               --port 6321               --cluster-enabled yes               --cluster-config-file redis1_cluster.conf

docker run -d --name redis2               --hostname redis2_host               --net host               -v /root/data/soft/redis/ins-cluster/redis2_data:/data               redis:5.0.8               --port 6322               --cluster-enabled yes               --cluster-config-file redis2_cluster.conf

docker run -d --name redis3               --hostname redis3_host               --net host               -v /root/data/soft/redis/ins-cluster/redis3_data:/data               redis:5.0.8               --port 6323               --cluster-enabled yes               --cluster-config-file redis3_cluster.conf

docker run -d --name redis4               --hostname redis4_host               --net host               -v /root/data/soft/redis/ins-cluster/redis4_data:/data               redis:5.0.8               --port 6324               --cluster-enabled yes               --cluster-config-file redis4_cluster.conf                       

docker run -d --name redis5               --hostname redis5_host               --net host               -v /root/data/soft/redis/ins-cluster/redis5_data:/data               redis:5.0.8               --port 6325               --cluster-enabled yes               --cluster-config-file redis5_cluster.conf

docker run -d --name redis6               --hostname redis6_host               --net host               -v /root/data/soft/redis/ins-cluster/redis6_data:/data               redis:5.0.8               --port 6326               --cluster-enabled yes               --cluster-config-file redis6_cluster.conf

配置集群

配置集群,用宿主的ip进行配置

docker exec -it redis1 redis-cli --cluster create 172.31.140.161:6321 172.31.140.161:6322 172.31.140.161:6323 172.31.140.161:6324 172.31.140.161:6325 172.31.140.161:6326 --cluster-replicas 1

用host模式创建集群,在非宿主机测试没问题。

Redis——集群搭建记录 docker方式

原文:https://www.cnblogs.com/xingchong/p/14746151.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!