redis7 Cluster模式 集群
Redis 集群搭建
前提:已安装好redis,这里在一台宝塔的环境上作为演示,做1主1从 共3主从搭建(3主3从)。我们生产环境肯定是多台服务器上。
1.我们在redis目录下面新增clusters目录,作为集群目录。
注意后续的文件夹和文件都要设置权限组为redis
2.准备redis.conf文件
bind IP地址
port 端口号
daemonize yes
requirepass "密码"
logfile "日记文件"
dbfilename "数据库文件"
dir "目录地址"
masterauth "master密码"# 是否开启集群
cluster-enabled yes
# 生成的node文件,记录集群节点信息,默认为nodes.conf,会自动生成
cluster-config-file nodes.conf
#节点连接超时时间
cluster-node-timeout 15000
#对外的ip
cluster-announce-ip IP地址
#集群节点映射端口
cluster-announce-port 端口号
#集群节点总线端口,节点之间互相通信,常规端口+1万,用port + 10000
cluster-announce-bus-port 端口号
3. 创建6个目录 (1101-1106),并把redis.conf放在每个目录下面
注意,每个目录下面redis.conf根据目录名修改一下如下参数
4.启动服务
[root@VM-32-8-centos redis]# ./src/redis-server ./clusters/1101/redis.conf
[root@VM-32-8-centos redis]# ./src/redis-server ./clusters/1102/redis.conf
[root@VM-32-8-centos redis]# ./src/redis-server ./clusters/1103/redis.conf
[root@VM-32-8-centos redis]# ./src/redis-server ./clusters/1104/redis.conf
[root@VM-32-8-centos redis]# ./src/redis-server ./clusters/1105/redis.conf
[root@VM-32-8-centos redis]# ./src/redis-server ./clusters/1106/redis.conf
查看启动进程和生成的文件。在每个目标下面都会成nodes.conf 和 redis.log文件。是对应我们redis.conf里配置的。出现以下截图就启动服务成功了。
[root@VM-32-8-centos redis]# ps -aux | grep redis
root 259700 0.0 0.0 62632 10380 ? Ssl 17:08 0:00 ./src/redis-server 0.0.0.0:1101 [cluster]
root 259724 0.0 0.0 62632 10352 ? Ssl 17:08 0:00 ./src/redis-server 0.0.0.0:1102 [cluster]
root 259736 0.0 0.0 62632 10400 ? Ssl 17:09 0:00 ./src/redis-server 0.0.0.0:1103 [cluster]
root 259763 0.0 0.0 62632 10388 ? Ssl 17:09 0:00 ./src/redis-server 0.0.0.0:1104 [cluster]
root 259772 0.0 0.0 62632 10436 ? Ssl 17:09 0:00 ./src/redis-server 0.0.0.0:1105 [cluster]
root 259787 0.0 0.0 62632 10444 ? Ssl 17:09 0:00 ./src/redis-server 0.0.0.0:1106 [cluster]
root 260066 0.0 0.0 12136 1072 pts/0 S+ 17:10 0:00 grep --color=auto redis
5.云服务器和本地服务器要先放行端口
6.创建集群
./src/redis-cli -a 123456 -p 1101 --cluster-replicas 1 --cluster create 服务器IP:1101 服务器IP:1102 服务器IP:1103 服务器IP:1104 服务器IP:1105 服务器IP:1106
此处不要用127.0.0.1, 请用真实服务器内网IP地址
一个集群至少要有三个主节点。
选项 --cluster-replicas 1 表示我们希望为集群中的每个主节点创建1个从节点。根据需要自行配置,比如配置为2时,就需要9个主从节点了
分配原则尽量保证每个主数据库运行在不同的IP地址,每个从库和主库不在一个IP地址上。
执行完创建集群命令之后执行到时输入yes确认:Can I set the above configuration? (type 'yes' to accept)
看到如下输出说明集群搭建成功
[root@VM-32-8-centos redis]# ./src/redis-cli -a 123456 -p 1101 --cluster-replicas 1 --cluster create 你的服务器IP:1101 你的服务器IP:1102 你的服务器IP:1103 你的服务器IP:1104 你的服务器IP:1105 你的服务器IP:1106
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 你的服务器IP:1105 to 你的服务器IP:1101
Adding replica 你的服务器IP:1106 to 你的服务器IP:1102
Adding replica 你的服务器IP:1104 to 你的服务器IP:1103
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: e3c7ae473c4a88be0b2f70ae78176b63f45236b6 你的服务器IP:1101slots:[0-5460] (5461 slots) master
M: ef2c2fb51447bede89ff84b84a2bfa89eb30dcd1 你的服务器IP:1102slots:[5461-10922] (5462 slots) master
M: f29263deb78a3332f2390e7fc00fe91d55d87ae9 你的服务器IP:1103slots:[10923-16383] (5461 slots) master
S: ddc1e41c9e973b737b8d2f770c062b7b47cc4029 你的服务器IP:1104replicates f29263deb78a3332f2390e7fc00fe91d55d87ae9
S: 271bc3e819eb49e27af765dd7cec413fea2f89a9 你的服务器IP:1105replicates e3c7ae473c4a88be0b2f70ae78176b63f45236b6
S: 0b19d704809817e6665c205d34e4e1a980579c7b 你的服务器IP:1106replicates ef2c2fb51447bede89ff84b84a2bfa89eb30dcd1
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 你的服务器IP:1101)
M: e3c7ae473c4a88be0b2f70ae78176b63f45236b6 你的服务器IP:1101slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 271bc3e819eb49e27af765dd7cec413fea2f89a9 你的服务器IP:1105slots: (0 slots) slavereplicates e3c7ae473c4a88be0b2f70ae78176b63f45236b6
M: f29263deb78a3332f2390e7fc00fe91d55d87ae9 你的服务器IP:1103slots:[10923-16383] (5461 slots) master1 additional replica(s)
M: ef2c2fb51447bede89ff84b84a2bfa89eb30dcd1 你的服务器IP:1102slots:[5461-10922] (5462 slots) master1 additional replica(s)
S: 0b19d704809817e6665c205d34e4e1a980579c7b 你的服务器IP:1106slots: (0 slots) slavereplicates ef2c2fb51447bede89ff84b84a2bfa89eb30dcd1
S: ddc1e41c9e973b737b8d2f770c062b7b47cc4029 你的服务器IP:1104slots: (0 slots) slavereplicates f29263deb78a3332f2390e7fc00fe91d55d87ae9
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@VM-32-8-centos redis]#
7.客户端访问集群
[root@VM-32-8-centos redis]# ./src/redis-cli -c -p 1101
127.0.0.1:1101> auth 123456
OK
127.0.0.1:1101> keys *
(empty array)
127.0.0.1:1101>
8.查看集群状态:
127.0.0.1:1101> cluster info
9.查看集群节点信息:
127.0.0.1:1101> cluster nodes
10.常见疑问
1、kill 掉一个从节点:集群正常
2、kill 掉一个主节点:自动故障转移,从节点提升为主节点;故障恢复后,以从节点身份执行任务
3、kill 掉一组主从节点:集群停止响应 CLUSTERDOWN The cluster is down
4、只能在主节点操作数据(增,删,改,查),从节点只是做备份数据
5、集群只有一个库:db0
11.扩容和收容
以后再测试
12 脚本
12.1.启动redis脚本
#!/bin/bash
cd /www/server/redis
./src/redis-server ./clusters/1101/redis.conf
./src/redis-server ./clusters/1102/redis.conf
exit
12.2.关闭redis脚本
#!/bin/bash
PORT=($1 $2)for port in ${PORT[@]}
do
PID=$(netstat -ntulp | grep :$port | awk '{print $7}' | awk -F"/" '{print $1}')if [ $? -eq 0 ]; thenecho "process id: $PID"
elseecho "process process not exist"exit
fikill -9 ${PID}if [ $? -eq 0 ]; thenecho "kill $port success"
elseecho "kill $port fail"
fi
done
12.3.启动集群
#!/bin/bash
#本地的
cd /www/server/redis
./clusters/start-redis.sh
echo 本地IP:redis-cluster start! #其它服务器,多个服务复制下面代码多次
ssh 账号@服务器1IP -p 端口> /dev/null 2>&1 << eeooff
cd /www/server/redis
./clusters/start-redis.sh
exit
eeooff
echo 服务器1IP:redis-cluster start! ssh 账号@服务器2IP -p 端口 > /dev/null 2>&1 << eeooff
cd /www/server/redis
./clusters/start-redis.sh
exit
eeooff
echo 服务器2IP:redis-cluster start!
12.4.关闭集群
#!/bin/bash
#本地的
cd /www/server/redis
./clusters/stop-redis.sh 1101 1102
echo 本地IP:redis-cluster done! #其它服务器,多个服务复制下面代码多次
ssh 账号@服务器1IP -p 端口 > /dev/null 2>&1 << eeooff
cd /www/server/redis
./clusters/stop-redis.sh 1101 1102
exit
eeooff
echo 服务器1IP:redis-cluster done! ssh 账号@服务器2IP -p 端口 > /dev/null 2>&1 << eeooff
cd /www/server/redis
./clusters/stop-redis.sh 1101 1102
exit
eeooff
echo 服务器2IP:redis-cluster done!
redis7 Cluster模式 集群相关推荐
- 超详细的 Redis Cluster 官方集群搭建指南,适用于 redis 5.x, 6.x
今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 旧版本使用 redis-trib.rb ruby 脚本安装集群,5.0版本redis-cli 已经自带 ...
- Nodejs【单机】多进程模式集群
Nodejs[单机]多进程模式集群实例: 1.安装:npm install -s cluster 2.服务代码: var debug = require('debug'); var express = ...
- 超详细的 Redis Cluster 官方集群搭建指南
转载自 超详细的 Redis Cluster 官方集群搭建指南 今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 安装ruby环境 因为官方提供的创建集 ...
- linux之CLUSTER(集群)一
linux之CLUSTER(集群) 01: 集群及LVS简介 . LVS-NAT集群 . LVS-DR集群 02: Keepalived热备 . Keepalived+LVS . HAProxy服务器 ...
- 从零开始搭建高可用RabbitMQ镜像模式集群
文章目录 RabbitMQ集群模式搭建 准备工作 选取任意一个节点作为master节点, 进行文件同步, 我这里选择138作为master节点 组成集群 配置镜像队列(设置镜像队列策略) 集群配置参数 ...
- Cluster介绍(集群)DRS介绍(分布式资源调度)EVC技术介绍
Cluster介绍(集群) 1.ESXI主机的管理性集群 2.HA,DRS(动态资源调度),FT只能工作在集群模式 3.创建Cluster是,拖动ESXI主机到集群 4.如果退出集群,需要把ESXI主 ...
- Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)
文章目录 Docker 下Redis Cluster 分片集群搭建 1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 1.2 Cluster 分片集群 的作用 1.3哈希槽(h ...
- MySQL Cluster(MySQL 集群) 初试(转)
作/译者:叶金荣(imysql#imysql.com>),来源:http://imysql.com,欢迎转载. 作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请 ...
- MySQL Cluster(MySQL 集群) 初试
MySQL Cluster 是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.在MyQL 5.0及 ...
最新文章
- Logistic Regression(逻辑回归) +python3.6(pycharm)实现
- python的优缺点-Python语言的优点和缺点 - 深度剖析
- 哈佛大学计算机与科学,Harvard的CS「哈佛大学计算机科学专业」
- android dimensions.xml,android – Value等于match_parent或fill_parent在dimensions.xml?
- java集合提取最小的日期_提取Java集合的元素-Java 8方法
- 神经网络的SGD、Momentum、AdaGrad、Adam最优化方法及其python实现
- C51单片机——指令系统
- 程序员:像机器一样思考
- B端评分卡在中小企业贷款中使用的三个阶段
- 【NLPCC 2020】Call for Participation: Shared Tasks in NLPCC 2020
- Ps 初学者教程,如何向风景图中添加元素?
- luogu P1307 数字反转
- codeforces 1183H
- bgfx入门练习2——找出DX,OpenGL驱动切换实现原理
- 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
- 打印机地址0xfcdaa06d造成了一个保护错误。(例外码0xe06d7363)
- 网易免费邮箱的smtp 为何密码错误
- 5、用Python编程,假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?
- HFSS常见绘图技巧
- 如何隐藏一个盘让其他人搜索不到
热门文章
- 〖全域运营实战白宝书 - 运营角色认知篇⑦〗- 运营人的能力模型
- PPT绘论文图之导出分辨率
- linux环境下ps命令行,Linux系统ps命令详解:查看正在运行的进程
- 24.Odoo产品分析 (三) – 人力资源板块(5) – 出勤(1)
- IIS W3C 字段 解释
- VS2019中,解决“错误CS0006:未能找到元数据文件”
- java -- 随机获取字母或者数字
- Android 剩余可用时长的计算公式
- 微软公司2007年秋季校园招聘在线宣讲会
- 市场调研-邻苯二甲酰亚胺钾市场现状及未来发展趋势