本文是关于如何构建docker redis5.0集群的。桂哥网络觉得很实用,就分享给大家参考,跟着桂哥网络看了看。
系统环境:ubuntu16.04LTS
在本文中,六个docker容器用于构建一个单机集群测试。如果实际环境中有很多容器,容器的数量、端口号和集群ip地址可以相应地修改。每台机器都可以按照以下步骤进行相同的操作。
拉取redis官方镜像
创建配置文件和数据目录
创建目录
mkdir~/redis_cluster
Cd~/redis_cluster新建一个模板文件sudvim redis _ cluster.tmpl,填写以下内容:
#redis端口
port${PORT}
#关闭保护模式
受保护-modeno
#打开群集
成簇染料
#群集节点配置
cluster-config-filenodes.conf
#超时
群集-节点-timeout5000
#集群节点IPhost模式为主机IP
集群-公告-ip10.10.100.197
#集群节点端口7000-7005
集群通告端口${PORT}
集群-公告-总线-port1${PORT}
#打开仅附加备份模式
appendonlyyes是
#每秒备份
appendfsynceverysec
#压缩文件时是不是要同步
no-appendfsync-on-rewriteno
#当当前aof文件大小超过前一个aof文件大小的100%时,将再次重写
自动重写百分比100
#默认情况下,重写前AOF文件的最小大小为64mb
auto-aof-rewrite-min-size 5120 MB
#关闭快照备份
保存''批量创建配置文件和数据目录,终端运行以下命令:
for ortin ` seq 70007005 `;do
mkdir-p./${port}/conf
PORT=$ { port } envsubst。/redis _ cluster . tmpl ./$ { port }/conf/redis . conf
mkdir-p ./$ { port }/data;
完成批量启动 redis 容器
集装箱Ip地址采用主机模式:
for ortin ` seq 70007005 `;do
dockerrun-d-it - memory=1G
-v ~/redis _ cluster/$ { port }/conf/redis . conf :/usr/local/etc/redis/redis . conf
-v ~/redis _ cluster/$ { port }/data :/data
-restartalways-name redis-$ { port }-nethost
-sysctlnet . core . soma xconn=1024 redis 33605.0 redis-server/usr/local/etc/redis/redis . conf;
在这里完成,-memory=1G将单个docker容器占用的内存大小限制为1G,这将被进程杀死。警告.无交换时内存受限.可能在运行时出现,可以忽略。如果不需要限制内存,可以去掉memory参数。
创建集群
随意输入其中一个容器:
dockersec-it redis-7000 bash输入并执行以下命令来创建集群:
集群创建10.10.100,10.10.100,10.100,160700110 . 10。56060 . 6666666666
sudoaptinstallredis-tools输入yes后,创建集群,退出docker,然后登录其中一个节点以验证集群的可用性:
/p>redis-cli-c-p7000
输入cluster nodes查看集群状态
127.0.0.1:7000>clusternodes 06851aa134d50096d82a434eced9194233b5204e10.10.100.197:7003@17003slave8b33f273386c9504ef8bd10b005e24825b3b9596015676719010004connected a42297b65f7101fc9e4941ef8a0e65080d1b633810.10.100.197:7005@17005slave0aa20378d14e3ef0859815196cbafa67e1001d0e015676719015816connected e7b6a35b1e92f94c225c507ea19f7f0318f0d1c310.10.100.197:7002@17002master-015676719025823connected10923-16383 0aa20378d14e3ef0859815196cbafa67e1001d0e10.10.100.197:7000@17000myself,master-015676719010001connected0-5460 8b33f273386c9504ef8bd10b005e24825b3b959610.10.100.197:7001@17001master-015676719023832connected5461-10922 fe355eed99100197f43d1216d1de82643dd496a510.10.100.197:7004@17004slavee7b6a35b1e92f94c225c507ea19f7f0318f0d1c3015676719013805connected
设置集群密码
设置密码为啥不在上面的步骤,利用模板文件批量创建配置文件的时候就写进去?
无论是在 redis5.x 版本,还是以前的 redis 版本利用 ruby 创建集群的方式,在redis-cli --cluster create创建集群的环节没有密码参数配置,所以我们需要创建完集群再设置密码。
我们用config set方式分别为每一个节点设置相同的密码(不需要重启 redis,且重启后依然有效),在此之前先给所有 redis 配置文件加w权限,不然密码无法保存到文件。
注意当前路径依然是在~/redis_cluster/:
forportin`seq70007005`;do chmoda+w./${port}/conf/redis.conf; done
下面用一台做示例:
登录一个节点:
redis-cli-c-p7000
设置密码:
127.0.0.1:7000>configsetmasterauth123456 OK 127.0.0.1:7000>configsetrequirepass123456 OK 127.0.0.1:7000>auth123456 OK 127.0.0.1:7000>configrewrite OK
后面几台执行同样的操作即可。
集群写入数据简单测试
随便登录一个集群节点:
redis-cli-c-p7003-a123456
写入数据:
127.0.0.1:7003>setva1 ->Redirectedtoslot[7800]locatedat10.10.100.197:7001 OK 10.10.100.197:7001>getva "1" 10.10.100.197:7001>delva (integer)1
可以看到,集群中任意节点写入数据,在其他任意节点都能读到。
至此,redis 集群搭建完成。
其他注意事项
外网访问 redis,可能需要防火墙开放相应端口;
如果需要删除容器,可批量操作:
forportin`seq70007005`;do dockerstopredis-${port}; dockerrmredis-${port}; done
感谢各位的阅读!关于“如何搭建docker redis5.0 cluster集群”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!