Docker 搭建 Redis Cluster 集群

之前无论学什么东西,总感觉只要会写小 Demo 就完事了。但随着学习的深入,(内卷)接触的越来越多,集群、JVM、数据结构、算法、底层、Liunx 系统,任重而道远啊。
分享一句很喜欢的话:“八小时谋生活,八小时外谋发展”。
如果你也喜欢,那一起
共勉
😁😁
一、环境
阿里云服务器 CentOS 8
docker 版本为 20.10.7
redis 镜像 (拉取为默认最新镜像)


大致步骤:😜
下载 Redis 镜像
编写 Redis 配置文件
启动 Redis 容器
创建 Redis Cluster 集群。
进行实际测试
二、前期准备
2.1、搜索、拉取 redis 镜像


2.2、Docker 容器网络
创建虚拟网卡😄
创建虚拟网卡,主要是用于 redis-cluster 能于外界进行网络通信,一般常用桥接模式。
查看 Docker 网卡信息

3、查看 dockerr 网络详细信息

4、补充(删除网卡信息、帮助命令)
2.3、编写配置文件
此处用到了一点 shlle
编程中 的一些命令,让我们操作更加便利。😃
命令解释:😊
port
:节点端口;requirepass
:设置密码,访问时需要验证protected-mode
:保护模式,默认值 yes,即开启。开启保护模式以后,需配置bind ip
或者设置访问密码;关闭保护模式,外部网络可以直接访问;daemonize
:是否以守护线程的方式启动(后台启动),默认 no;appendonly
:是否开启 AOF 持久化模式,默认 no;cluster-enabled
:是否开启集群模式,默认 no;cluster-config-file
:集群节点信息文件;cluster-node-timeout
:集群节点连接超时时间;cluster-announce-ip
:集群节点 IP注意:
如果你想要你的 redis 集群可以供外网访问,这里直接填 服务器的 IP 地址即可如若为了安全,只是在服务器内部进行访问,这里还需要做一些修改。
cluster-announce-port
:集群节点映射端口;cluster-announce-bus-port
:集群节点总线端口。
redis 在官网上有说明为什么需要映射两个端口 :redis官网

执行命令完:

我们通过 tree 命令查看目录结构:(如果没有 tree
命令先安装 yum install -y tree
)

接下来就是启动容器拉
三、启动容器
3.1、启动 redis 容器
因为要启动六个容器,一个一个去启动,肯定是麻烦丫。就再次借助 shell 编程的力量。
解释:🤑
-it:交互
-d:后台运行,容器启动完成后打印容器
--privileged:是否让 docker 应用容器 获取宿主机 root 权限(特殊权限-)
-p :端口映射
-v:文件挂载
--sysctl 参数来设置系统参数,通过这些参数来调整系统性能
--restart always:在容器退出时总是重启容器
--name :给容器取名
--net myredis :使用我们创建的虚拟网卡 (想详细了解,可以去看看 Docker 网络方面知识)
执行完成:

亦可使用docker ps -a
查看运行中容器。

可以看到已全部启动成功。
👨🔧
3.2、创建 Redis Cluster 集群
可随意选择一个节点进入,创建 Redis 集群。
1、进入 redis-6379 容器

2、创建集群


显示这样的画面就表示已经成功拉。
3、查看节点相关信息
进入容器后,通过redis-cli -c -a 1234
,进入 redis。👼

输入cluster info
查看集群信息

也可输入cluster nodes
查看所有节点相关信息

👨💻下一步就是进入测试阶段拉。😀
四、测试
4.1、本机测试


我们在 6381 中 set 进去,同时在 6379 中能够取出来,这代表我们已经成功拉😁
4.2、外网测试
进入 windows 中 你 redis 下载的目录中,进入 cmd。

测试说明 我们已经可以连接拉。
那么我们就开启两个 cmd 窗口,用不一样的端口进入。


到此,可以证明我们的集群是已经搭建成功拉。
4.3、出错可能会用到的命令
批量停止容器
批量删除容器
4.4、可能会出的错
一直卡在 Waiting for the cluster to join ......
注
: 如果是阿里云或者腾讯云上的服务器 ,要记得打开安全组规则, 6379~6384 和 16379 ~16384 都要打开。
如果是虚拟机上,可能牵扯到防火墙,这个得注意一下。
五、博主自言
👩💻
如若存在错误,欢迎大家不啬赐教!!!
如若存在疑惑或执行错误,请大家评论或私信,定会第一时间回复。
一起继续努力,或者啊,咱们一起🛌 ☺。
版权声明: 本文为 InfoQ 作者【宁在春】的原创文章。
原文链接:【http://xie.infoq.cn/article/24095a699971ea9631739901a】。文章转载请联系作者。
评论