使用docker部署redis集群的两种方式 并实现远程可连接

使用docker部署redis集群的两种方式 远程可连接

由于博主服务器有限,所以这里使用单个服务器采用docker部署redis集群,一共启动六个redis节点,三主三从。

在部署的过程中博主遇到了很多坑,尤其是桥接模式下的部署,希望看到这篇文章的人能避开这些坑。

部署前的准备

①服务器环境:腾讯云centos8
②安装docker: 其他博主写的很详细了,可以看看其他博主的安装步骤
③执行命令下载redis镜像:

 docker pull redis 

在这里插入图片描述

使用host模式部署redis集群

host模式部署redis集群是最直接的方式,docker的host模式下,docker容器和服务器共用一个IP和端口号,只需要使用服务器主机的IP和端口号就能直接搭建服务器的集群,这里推荐一篇文章,我觉得写得已经很不错了:

使用自定义的配置部署redis集群

不过要注意开放服务的对应的端口才能成功建立集群,否者就会一直wait for jion。例如将六个redis节点分别部署到了7001、7002 、7003 、7004 、7005 、7006。还要开放端口17001、17002 、17003 、17004 、17005 、17006端口,因为redis集群默认以监听端口号+10000作为redis集群内部通信的端口号。

centos8的开放方式之一如下:

 iptables -nL 查看系统开放的端口 iptables -I INPUT -p tcp --dport 8889 -j ACCEPT 开放8889端口 

服务器的安全组对应的端口号记得也要打开
在这里插入图片描述

使用桥接模式部署redis集群

桥接方式部署redis集群比较特殊,除了让docker容器启动的redis监听的端口号映射到主机上,还要求将redis集群内部用于通信的端口映射到主机对应的端口上,否则在搭建集群的过程中就会一直Waiting for the cluster to join
在这里插入图片描述

1、下载redis最新的镜像:

 docker pull redis 

2、官网下载redis配置文件redis.conf

 wget http://download.redis.io/redis-stable/redis.conf 

3、在/data/redis-cluster目录下创建六个节点的目录以及复制刚才下载的redis.conf文件六份,分别命名为redis-node1.conf…样式,当然,你也可以选择自己喜欢的路径。这个文件夹是用来挂载redis节点容器的数据文件和配置文件的地方。
在这里插入图片描述
4、配置文件的修改:
光复制配置文件还不够,我们还要配置一下信息:
使用vim修改六个配置文件一下信息:

1)# bind 127.0.0.1 -::1 注释掉,不注释只能本机访问 protected-mode no 关闭安全模式,方便我们远程连接redis集群 (2)port 7001 根据对应的reids-node端口修改,这里使用单个服务器的桥接模式部署redis集群,最好不要都使用6379端口,因为集群内部通信的16379可能会都占用阐述冲突 (3)daemonize no ,此处必须设置成no,不然docker容器一启动就停掉。设置成yes,redis进程就以守护进程运行,docker容器检测到没有前台进程,所以容器直接停掉 (4)requirepass "123456" redis的密码,根据实际情况进行设置 masterauth "123456" 如果是从节点,还要配置这个连接主节点的认证密码,否则就会疯狂被主节点拒绝认证,日志文件暴涨。 (5)appendonly yes 是否开启aof持久化配置,根据实际情况配置 (6)cluster-enabled yes 开启集群模式,设置成yes (7)cluster-config-file nodes-7001.conf 集群配置文件存放位置 (8)cluster-node-timeout 15000 节点通信超时时间 

这里有很多路径配置和一些数据日志文件名我采用默认方式,没有更改配置。docker容器中默认的/data目录,数据和集群配置文件都会被放在这个目录下。

5、启动六个redis节点:

docker run -it -d -p 7001:7001 -p 17001:17001 -v /data/redis-cluster/redis-node1.conf:/etc/redis/redis-node1.conf -v /data/redis-cluster/data-node1:/data --name redis-node1 redis:latest redis-server /etc/redis/redis-node1.conf docker run -it -d -p 7002:7002 -p 17002:17002 -v /data/redis-cluster/redis-node2.conf:/etc/redis/redis-node2.conf -v /data/redis-cluster/data-node2:/data --name redis-node2 redis:latest redis-server /etc/redis/redis-node2.conf docker run -it -d -p 7003:7003 -p 17003:17003 -v /data/redis-cluster/redis-node3.conf:/etc/redis/redis-node3.conf -v /data/redis-cluster/data-node3:/data --name redis-node3 redis:latest redis-server /etc/redis/redis-node3.conf docker run -it -d -p 7004:7004 -p 17004:17004 -v /data/redis-cluster/redis-node4.conf:/etc/redis/redis-node4.conf -v /data/redis-cluster/data-node4:/data --name redis-node4 redis:latest redis-server /etc/redis/redis-node4.conf docker run -it -d -p 7005:7005 -p 17005:17005 -v /data/redis-cluster/redis-node5.conf:/etc/redis/redis-node5.conf -v /data/redis-cluster/data-node5:/data --name redis-node5 redis:latest redis-server /etc/redis/redis-node5.conf docker run -it -d -p 7006:7006 -p 17006:17006 -v /data/redis-cluster/redis-node6.conf:/etc/redis/redis-node6.conf -v /data/redis-cluster/data-node6:/data --name redis-node6 redis:latest redis-server /etc/redis/redis-node6.conf 

docker ps查看运行的redis容器
在这里插入图片描述
6、建立redis集群:
在建立集群之前注意开放7001-7006以及17001-17006端口,包括打开云服务器的安全组,查看是否打开了这些端口可以使用命令:

 iptables -nL 查看系统开放的端口 

在这里插入图片描述
在这里插入图片描述
执行docker exec -it redis-node1 /bin/bash进入其中一个容器
在容器中执行以下命令,这里将你的服务器IP换上就行,如果你是要远程连接就是用公网IP,如果你是配置服务器自己本地连接的就用127.0.0.1。

redis-cli --cluster create 服务器IP:7001 服务器IP:7002 服务器IP:7003 服务器IP:7004 服务器IP:7005 服务器IP:7006 --cluster-replicas 1 -a 123456(这里是填写你的密码) 

随后会出现以下提示,直接yes就行
在这里插入图片描述
出现以下提示表示部署redis集群已经成功
在这里插入图片描述
7、客户端远程连接:
可以使用redis-desktop远程连接,也可以使用下载的reids文件下的redis-cli来远程连接,这里博主是将redis下载到了win10下,使用redis目录中的redis-cli来远程连接:

D:\redis> redis-cli -c -h 服务器IP -p 7001  

原文链接:https://blog.csdn.net/qq_42805782/article/details/124460227?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836884016800178512381%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836884016800178512381&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-25-124460227-null-null.nonecase&utm_term=docker%E9%83%A8%E7%BD%B2

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享