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

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

  • 部署前的准备
  • 使用host模式部署redis集群
  • 使用桥接模式部署redis集群

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

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

部署前的准备

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

// 下载最新的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的开放方式之一如下:

// 下载最新的redis镜像
   iptables -nL 查看系统开放的端口
   iptables -I INPUT -p tcp --dport 8889 -j ACCEPT 开放8889端口

服务器的安全组对应的端口号记得也要打开
使用docker部署redis集群的两种方式 并实现远程可连接_第1张图片

使用桥接模式部署redis集群

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

1、下载redis最新的镜像:

// 下载最新的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容器
使用docker部署redis集群的两种方式 并实现远程可连接_第2张图片
6、建立redis集群:
在建立集群之前注意开放7001-7006以及17001-17006端口,包括打开云服务器的安全组,查看是否打开了这些端口可以使用命令:

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

使用docker部署redis集群的两种方式 并实现远程可连接_第3张图片
使用docker部署redis集群的两种方式 并实现远程可连接_第4张图片
执行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集群已经成功
使用docker部署redis集群的两种方式 并实现远程可连接_第5张图片
7、客户端远程连接:
可以使用redis-desktop远程连接,也可以使用下载的reids文件下的redis-cli来远程连接,这里博主是将redis下载到了win10下,使用redis目录中的redis-cli来远程连接:

D:\redis> redis-cli -c -h 服务器IP -p 7001
//-c 表示一集群方式连接

你可能感兴趣的:(docker,redis,linux)