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模式 集群相关推荐

  1. 超详细的 Redis Cluster 官方集群搭建指南,适用于 redis 5.x, 6.x

    今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 旧版本使用 redis-trib.rb ruby 脚本安装集群,5.0版本redis-cli 已经自带 ...

  2. Nodejs【单机】多进程模式集群

    Nodejs[单机]多进程模式集群实例: 1.安装:npm install -s cluster 2.服务代码: var debug = require('debug'); var express = ...

  3. 超详细的 Redis Cluster 官方集群搭建指南

    转载自  超详细的 Redis Cluster 官方集群搭建指南 今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 安装ruby环境 因为官方提供的创建集 ...

  4. linux之CLUSTER(集群)一

    linux之CLUSTER(集群) 01: 集群及LVS简介 . LVS-NAT集群 . LVS-DR集群 02: Keepalived热备 . Keepalived+LVS . HAProxy服务器 ...

  5. 从零开始搭建高可用RabbitMQ镜像模式集群

    文章目录 RabbitMQ集群模式搭建 准备工作 选取任意一个节点作为master节点, 进行文件同步, 我这里选择138作为master节点 组成集群 配置镜像队列(设置镜像队列策略) 集群配置参数 ...

  6. Cluster介绍(集群)DRS介绍(分布式资源调度)EVC技术介绍

    Cluster介绍(集群) 1.ESXI主机的管理性集群 2.HA,DRS(动态资源调度),FT只能工作在集群模式 3.创建Cluster是,拖动ESXI主机到集群 4.如果退出集群,需要把ESXI主 ...

  7. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)

    文章目录 Docker 下Redis Cluster 分片集群搭建 1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 1.2 Cluster 分片集群 的作用 1.3哈希槽(h ...

  8. MySQL Cluster(MySQL 集群) 初试(转)

    作/译者:叶金荣(imysql#imysql.com>),来源:http://imysql.com,欢迎转载. 作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请 ...

  9. MySQL Cluster(MySQL 集群) 初试

    MySQL Cluster 是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.在MyQL 5.0及 ...

最新文章

  1. Logistic Regression(逻辑回归) +python3.6(pycharm)实现
  2. python的优缺点-Python语言的优点和缺点 - 深度剖析
  3. 哈佛大学计算机与科学,Harvard的CS「哈佛大学计算机科学专业」
  4. android dimensions.xml,android – Value等于match_parent或fill_parent在dimensions.xml?
  5. java集合提取最小的日期_提取Java集合的元素-Java 8方法
  6. 神经网络的SGD、Momentum、AdaGrad、Adam最优化方法及其python实现
  7. C51单片机——指令系统
  8. 程序员:像机器一样思考
  9. B端评分卡在中小企业贷款中使用的三个阶段
  10. 【NLPCC 2020】Call for Participation: Shared Tasks in NLPCC 2020
  11. Ps 初学者教程,如何向风景图中添加元素?
  12. luogu P1307 数字反转
  13. codeforces 1183H
  14. bgfx入门练习2——找出DX,OpenGL驱动切换实现原理
  15. 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
  16. 打印机地址0xfcdaa06d造成了一个保护错误。(例外码0xe06d7363)
  17. 网易免费邮箱的smtp 为何密码错误
  18. 5、用Python编程,假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?
  19. HFSS常见绘图技巧
  20. 如何隐藏一个盘让其他人搜索不到

热门文章

  1. 〖全域运营实战白宝书 - 运营角色认知篇⑦〗- 运营人的能力模型
  2. PPT绘论文图之导出分辨率
  3. linux环境下ps命令行,Linux系统ps命令详解:查看正在运行的进程
  4. 24.Odoo产品分析 (三) – 人力资源板块(5) – 出勤(1)
  5. IIS W3C 字段 解释
  6. VS2019中,解决“错误CS0006:未能找到元数据文件”
  7. java -- 随机获取字母或者数字
  8. Android 剩余可用时长的计算公式
  9. 微软公司2007年秋季校园招聘在线宣讲会
  10. 市场调研-邻苯二甲酰亚胺钾市场现状及未来发展趋势