系统环境:ubuntu16.04LTS
本文是使用 6 个 docker 容器搭建单机集群测试,实际环境如果是多台,可对应修改容器数量、端口号和集群 ip 地址,每台机器都按下面步骤同样操作即可。
拉取redis官方镜像
docker pull redis:5.0
创建配置文件和数据目录
创建目录
mkdir ~/redis_cluster cd ~/redis_cluster
新建一个模板文件sudo vim redis_cluster.tmpl,填入如下内容:
# redis端口 port ${PORT} # 关闭保护模式 protected-mode no # 开启集群 cluster-enabled yes # 集群节点配置 cluster-config-file nodes.conf # 超时 cluster-node-timeout 5000 # 集群节点IP host模式为宿主机IP cluster-announce-ip 10.10.100.197 # 集群节点端口 7000 - 7005 cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} # 开启 appendonly 备份模式 appendonly yes # 每秒钟备份 appendfsync everysec # 对aof文件进行压缩时,是否执行同步操作 no-appendfsync-on-rewrite no # 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写 auto-aof-rewrite-percentage 100 # 重写前AOF文件的大小最小值 默认 64mb auto-aof-rewrite-min-size 5120mb # 关闭快照备份 save ""
批量创建配置文件和数据目录,终端运行以下命令:
for port in `seq 7000 7005`; do mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis_cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data; done
批量启动 redis 容器
容器的 ip 地址采用 host 模式:
for port in `seq 7000 7005`; do docker run -d -it --memory=1G -v ~/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v ~/redis_cluster/${port}/data:/data --restart always --name redis-${port} --net host --sysctl net.core.somaxconn=1024 redis:5.0 redis-server /usr/local/etc/redis/redis.conf; done
这里的--memeory=1G是限制单个 docker 容器占用内存大小为 1G,超过会被进程杀死。运行时可能会出现...Memory limited without swap...这个警告,可以忽略。如不需要限制内存,可以去掉--memeory参数。
创建集群
随便进入其中一个容器:
docker exec -it redis-7000 bash
进入后执行如下命令创建集群:
redis-cli --cluster create 10.10.100.197:7000 10.10.100.197:7001 10.10.100.197:7002 10.10.100.197:7003 10.10.100.197:7004 10.10.100.197:7005 --cluster-replicas 1
安装redis-cli命令(如已有可跳过此步):
sudo apt install redis-tools
输入yes后,集群创建完毕,exit退出 docker,接着登录其中一个节点,验证集群可用性:
redis-cli -c -p 7000
输入cluster nodes查看集群状态
127.0.0.1:7000> cluster nodes 06851aa134d50096d82a434eced9194233b5204e 10.10.100.197:7003@17003 slave 8b33f273386c9504ef8bd10b005e24825b3b9596 0 1567671901000 4 connected a42297b65f7101fc9e4941ef8a0e65080d1b6338 10.10.100.197:7005@17005 slave 0aa20378d14e3ef0859815196cbafa67e1001d0e 0 1567671901581 6 connected e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 10.10.100.197:7002@17002 master - 0 1567671902582 3 connected 10923-16383 0aa20378d14e3ef0859815196cbafa67e1001d0e 10.10.100.197:7000@17000 myself,master - 0 1567671901000 1 connected 0-5460 8b33f273386c9504ef8bd10b005e24825b3b9596 10.10.100.197:7001@17001 master - 0 1567671902383 2 connected 5461-10922 fe355eed99100197f43d1216d1de82643dd496a5 10.10.100.197:7004@17004 slave e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 0 1567671901380 5 connected
设置集群密码
设置密码为什么不在上面的步骤,利用模板文件批量创建配置文件的时候就写进去?
无论是在 redis5.x 版本,还是以前的 redis 版本利用 ruby 创建集群的方式,在redis-cli --cluster create创建集群的环节没有密码参数配置,所以我们需要创建完集群再设置密码。
我们用config set方式分别为每一个节点设置相同的密码(不需要重启 redis,且重启后依然有效),在此之前先给所有 redis 配置文件加w权限,不然密码无法保存到文件。
注意当前路径依然是在~/redis_cluster/:
for port in `seq 7000 7005`; do chmod a+w ./${port}/conf/redis.conf; done
下面用一台做示例:
登录一个节点:
redis-cli -c -p 7000
设置密码:
127.0.0.1:7000> config set masterauth 123456 OK 127.0.0.1:7000> config set requirepass 123456 OK 127.0.0.1:7000> auth 123456 OK 127.0.0.1:7000> config rewrite OK
后面几台执行同样的操作即可。
集群写入数据简单测试
随便登录一个集群节点:
redis-cli -c -p 7003 -a 123456
写入数据:
127.0.0.1:7003> set va 1 -> Redirected to slot [7800] located at 10.10.100.197:7001 OK 10.10.100.197:7001> get va "1" 10.10.100.197:7001> del va (integer) 1
可以看到,集群中任意节点写入数据,在其他任意节点都能读到。
至此,redis 集群搭建完成。
其他注意事项
- 外网访问 redis,可能需要防火墙开放相应端口;
- 如果需要删除容器,可批量操作:
for port in `seq 7000 7005`; do docker stop redis-${port}; docker rm redis-${port}; done
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]